Seguimiento de conversiones

Cómo enviar un postback cuando un usuario convierte en tu sitio: imprescindible para que las campañas CPA atribuyan y facturen correctamente.

En las campañas CPA, solo sabemos que un usuario ha convertido cuando you nos lo dices. El mecanismo es un postback: cuando un usuario hace en tu sitio lo que quieres que haga, tu servidor envía una petición rápida al nuestro y registramos la conversión asociada al clic original. Sin este cableado, tu campaña CPA servirá clics pero nunca facturará, porque no tenemos forma de saber si alguno se convirtió en cliente.

Esta página explica el cableado paso a paso. Unos 15 minutos de trabajo de desarrollo, sin SDK.

info
Solo lo necesitas para las campañas CPA. Las campañas CPC facturan por el clic. Las CPM, por la impresión. El corregistro factura por el consentimiento de sí/no (se gestiona dentro del fragmento; no hace falta postback).

El flujo

  1. Un usuario hace clic en tu anuncio en el sitio de un editor.
  2. Nuestro servidor de anuncios añade ?efaid=<click_id> a tu URL de destino y lo redirige allí. El ID de clic es una cadena hexadecimal de 24 caracteres única para ese clic.
  3. Tu página de destino captura el valor de efaid (parámetro de URL) y lo almacena, normalmente en una cookie de sesión que sobrevive entre cargas de página.
  4. Cuando el usuario completa lo que cuente como conversión (registro, compra, instalación), tu servidor envía un postback a https://ads.efind.com/serve/postback.php?efaid=<click_id>.
  5. Buscamos el clic, registramos la conversión y te facturamos a la puja vigente en el momento del clic.

Paso 1: captura efaid en tu página de destino

La URL en el navegador del usuario cuando llega a tu sitio tendrá este aspecto:

https://example.com/landing?efaid=ee40d35706798218cce42929

Captura el parámetro efaid y guárdalo. Las cookies son la opción más habitual porque sobreviven a los embudos de varios pasos. Ejemplo en JavaScript:

const url = new URL(window.location); const efaid = url.searchParams.get('efaid'); if (efaid) { document.cookie = `efaid=${efaid}; path=/; max-age=${30*24*60*60}; SameSite=Lax`; }

O en PHP, si controlas la página de destino en el lado del servidor:

<?php if (!empty($_GET['efaid']) && preg_match('/^[a-f0-9]{24}$/', $_GET['efaid'])) { setcookie('efaid', $_GET['efaid'], time() + 30*24*60*60, '/', '', true, true); }
warning
El efaid sobrevive solo mientras dure tu almacenamiento. Un usuario que borre las cookies entre la llegada y la conversión no será atribuible. La mayoría de las plataformas ven una fuga del ~5-10% por esto; es el coste de operar en la web abierta.

Paso 2: envía el postback en la conversión

En el instante en que se produce una conversión en el lado del servidor, envía un único GET a nuestra URL de postback con el valor almacenado de efaid:

PHP

$efaid = $_COOKIE['efaid'] ?? ''; if ($efaid !== '') { $url = 'https://ads.efind.com/serve/postback.php?efaid=' . urlencode($efaid); // Fire and forget - don't block the user's request on this. @file_get_contents($url, false, stream_context_create([ 'http' => ['timeout' => 2, 'ignore_errors' => true] ])); }

Node.js

const efaid = req.cookies.efaid; if (efaid) { fetch(`https://ads.efind.com/serve/postback.php?efaid=${encodeURIComponent(efaid)}`) .catch(() => {}); // fire-and-forget }

Python

import requests efaid = request.COOKIES.get('efaid') if efaid: try: requests.get(f'https://ads.efind.com/serve/postback.php?efaid={efaid}', timeout=2) except requests.RequestException: pass

cURL (para pruebas o stacks basados en shell)

curl -s "https://ads.efind.com/serve/postback.php?efaid=$EFAID"

Alternativa: basada en píxel (sin acceso al servidor)

Si no puedes enviar un postback desde el servidor —algo habitual en páginas de destino SaaS o en páginas de agradecimiento simples—, puedes usar en su lugar un píxel de imagen de 1×1. Pégalo en el HTML de tu página de confirmación de conversión (página de «gracias» de Shopify, confirmación de pedido de Wix, etc.):

<img src="https://ads.efind.com/serve/pixel.php?efaid=YOUR_EFAID_HERE" width="1" height="1" alt="" style="display:none">

Tendrás que sustituir YOUR_EFAID_HERE por el valor almacenado; la mayoría de las plataformas de comercio electrónico permiten inyectar HTML personalizado con metadatos del pedido. Los píxeles son algo menos fiables que los postbacks de servidor (bloqueadores de anuncios, navegadores que bloquean peticiones de terceros), pero son más fáciles de configurar.

Formato de respuesta

postback.php devuelve JSON. pixel.php devuelve la imagen pero añade información de depuración en las cabeceras, útil para verificar la integración con las herramientas de desarrollo de tu navegador.

Estructura del JSON

{ "ok": true, "recorded": true, "reason": null } ← conversion logged ✓ { "ok": true, "recorded": false, "reason": "already_recorded" } ← duplicate fire (no harm) { "ok": true, "recorded": false, "reason": "not_found" } ← efaid doesn't match a click { "ok": true, "recorded": false, "reason": "bad_click_id" } ← malformed efaid { "ok": true, "recorded": false, "reason": "window_expired" } ← click was over 30 days old

El estado HTTP siempre es 200 en cualquier caso. La señal de si funcionó o no está en recorded. Tu integración debe tratar recorded: true como éxito y cualquier otro estado como «enviado pero no registrado», lo cual suele estar bien (la mayoría de los motivos de «no» son operativamente normales).

Prueba tu integración

  1. Configura una campaña de prueba en el panel (con cualquier puja; no se te cobrará por conversiones de prueba en campañas en borrador).
  2. Desde el sitio de un editor o directamente mediante la URL de nuestro servidor de anuncios, haz clic en un anuncio y anota el efaid añadido a tu URL de destino.
  3. Activa tu flujo de conversión de forma que se envíe el postback.
  4. Consulta la página de detalle de la campaña en tu panel: la estadística de Conversiones (Conversions) debería subir en un minuto.
  5. Envía el mismo postback otra vez con el mismo efaid - la estadística NO debería subir una segunda vez (idempotente).

Comportamientos importantes

Siguiente
Cómo leer los informes
arrow_forward