Rastreamento de conversões
Como disparar um postback quando um utilizador converte no seu site - obrigatório para as campanhas CPA atribuírem e cobrarem corretamente.
Nas campanhas CPA, só sabemos que um utilizador converteu quando you nos diz. O mecanismo é um postback: quando o utilizador faz aquilo que pretende que ele faça no seu site, o seu servidor dispara um pedido rápido para o nosso, e registamos a conversão contra o clique original. Sem esta ligação, a sua campanha CPA veiculará cliques mas nunca cobrará - porque não temos forma de saber que algum deles se tornou cliente.
Esta página explica a ligação. Cerca de 15 minutos de trabalho de programação, sem SDK.
O fluxo
- Um utilizador clica no seu anúncio no site de um editor.
- O nosso servidor de anúncios adiciona
?efaid=<click_id>ao seu URL de destino e redireciona-o para lá. O ID do clique é uma cadeia hexadecimal de 24 caracteres, única para este clique. - A sua página de destino captura o valor de
efaid(parâmetro de URL) e guarda-o - normalmente num cookie de sessão que sobrevive entre carregamentos de página. - Quando o utilizador conclui o que conta como conversão (registo, compra, instalação), o seu servidor dispara um postback para
https://ads.efind.com/serve/postback.php?efaid=<click_id>. - Procuramos o clique, registamos a conversão e cobramos-lhe a taxa de licitação em vigor no momento do clique.
Passo 1: capture o efaid na sua página de destino
O URL no navegador do utilizador quando chega ao seu site terá este aspeto:
https://example.com/landing?efaid=ee40d35706798218cce42929
Recolha o parâmetro efaid e guarde-o. Os cookies são a escolha mais comum porque sobrevivem a funis de vários passos. Exemplo em 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`; }
Ou em PHP, se controla a página de destino no 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); }
efaid sobrevive apenas enquanto durar o seu armazenamento. Um utilizador que limpe os cookies entre a chegada e a conversão ficará por atribuir. A maioria das plataformas regista ~5-10% de perdas por isto - é o custo de operar na web aberta.Passo 2: dispare o postback na conversão
No instante em que a conversão ocorre do lado do servidor, dispare um único GET para o nosso URL de postback com o 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 testes ou stacks baseados em shell)
curl -s "https://ads.efind.com/serve/postback.php?efaid=$EFAID"
Alternativa: baseada em píxel (sem acesso ao servidor)
Se não puder disparar um postback do lado do servidor - comum em páginas de destino SaaS ou páginas simples de agradecimento - pode usar um píxel de imagem 1×1. Coloque isto no HTML da sua página de confirmação de conversão (página de "obrigado" do Shopify, confirmação de encomenda do Wix, etc.):
<img src="https://ads.efind.com/serve/pixel.php?efaid=YOUR_EFAID_HERE" width="1" height="1" alt="" style="display:none">
Terá de substituir o YOUR_EFAID_HERE pelo valor guardado - a maioria das plataformas de comércio eletrónico tem uma forma de injetar HTML personalizado com metadados da encomenda. Os píxeis são ligeiramente menos fiáveis do que os postbacks de servidor (bloqueadores de anúncios, navegadores a bloquear pedidos de terceiros), mas são mais fáceis de configurar.
Formato da resposta
postback.php devolve JSON. pixel.php devolve a imagem, mas adiciona informação de depuração nos cabeçalhos - útil para verificar a integração com as ferramentas de programador do navegador.
Formato do 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
O estado HTTP é sempre 200, independentemente do resultado. O sinal de funcionou-ou-não está em recorded. A sua integração deve tratar recorded: true como sucesso e qualquer outro estado como "disparou mas não pegou" - o que normalmente não é problema (a maioria dos motivos de "não" é operacionalmente normal).
Testar a sua integração
- Configure uma campanha de teste no painel (qualquer licitação - não será cobrado por conversões de teste em campanhas em rascunho).
- A partir do site de um editor ou diretamente através do URL do nosso servidor de anúncios, clique num anúncio e anote o
efaidanexado ao seu URL de destino. - Acione o seu fluxo de conversão de forma a disparar o postback.
- Verifique a página de detalhes da campanha no seu painel - a estatística de Conversões deve subir dentro de um minuto.
- Dispare o mesmo postback novamente com o mesmo
efaid- a estatística NÃO deve subir uma segunda vez (idempotente).
Comportamentos importantes
- Idempotent. Disparar o mesmo postback duas vezes (novas tentativas de rede, erros de programação) é seguro - só o primeiro conta.
- A licitação é fixada no momento do clique. Se alterar a sua licitação depois de um clique mas antes do postback de conversão, usamos a licitação em vigor no momento do clique. Isto mantém a economia dos editores estável.
- Janela de 30 dias. Os postbacks de cliques com mais de 30 dias são silenciosamente ignorados. Se tiver um funil de conversão invulgarmente longo, fale connosco - podemos alargar a janela por anunciante.
- Os cliques de bots não recebem efaid. A nossa camada de deduplicação filtra spam de atualização óbvio e bots de clique ingénuos no momento do clique; esses redirecionamentos não incluem um
efaid, pelo que não há nada contra o qual fazer postback. Isto protege o seu investimento.