
Uma campanha de afiliado típica envia o clique do anúncio para um domínio de filtro de tráfego, depois para uma pré-lander e por fim para a oferta final. Em cada salto o parâmetro de click id pode desaparecer, quebrando postback, enhanced conversions e deduplicação no tracker.
O problema não é teórico: quando o gclid some, o Google não consegue mais associar a conversão ao clique pago e a conta perde sinal de qualidade. O mesmo vale para "fbclid" no Meta e "ttclid" no TikTok.
Anatomia da cadeia real de uma campanha de afiliado
A URL que sai da rede de anúncios já carrega o click id na query string. O primeiro destino costuma ser o domínio protegido por um filtro de tráfego. Esse filtro decide em milissegundos se libera o visitante para a oferta ou o manda para uma página segura. Depois da decisão vem o redirecionamento para a pré-lander e, por último, para a página de conversão.
O parâmetro original viaja na query string da requisição HTTP inicial. Quando o filtro ou a pré-lander executa um redirecionamento, ele precisa copiar explicitamente esse parâmetro para o cabeçalho Location do novo destino. Qualquer etapa que não faça isso apaga o identificador.
Em logs reais é comum ver o clique chegar com ?gclid=abc123 e sair do filtro sem nenhum parâmetro. O tracker que recebe a visita final registra um clique sem click id e a postback posterior não consegue mais fechar o ciclo.
As cinco causas concretas de perda do click id
A primeira causa é o redirecionamento 302 ou 301 que não repassa a query string original. De acordo com a RFC 3986, quando o caminho do destino não está vazio, a query da origem não é herdada automaticamente.
A segunda causa é o meta refresh no HTML da página intermediária. O navegador segue o refresh, mas a query string que chegou não é incluída na nova URL.
A terceira é o JavaScript window.location.href = novaURL sem concatenar window.location.search. Muitos scripts de redirecionamento copiam apenas o pathname e perdem a query inteira.
A quarta causa são encurtadores de URL que reescrevem o link sem manter os parâmetros originais. Ferramentas de cloaking caseiras ou serviços de encurtamento genéricos frequentemente ignoram tudo que vem depois do ?.
A quinta causa é o formulário POST que troca de página. O clique chega via GET com o click id, mas o formulário envia os dados por POST e o parâmetro some na próxima requisição.
Tabela por plataforma: onde cada parâmetro chega
| Plataforma | Parâmetro | Chega até o filtro | Chega até a oferta | Requer forward explícito |
|---|---|---|---|---|
| Google Ads | gclid | Sim | Só se repassado | Sim |
| Meta Ads | fbclid | Sim | Só se repassado | Sim |
| TikTok Ads | ttclid | Sim | Só se repassado | Sim |
| Microsoft Ads | msclkid | Sim | Só se repassado | Sim |
| Outras redes | ScCid | Sim | Só se repassado | Sim |
Cada plataforma usa o parâmetro para associar conversões offline ou server-to-server. Quando ele não chega, a deduplicação e as enhanced conversions param de funcionar.
Como testar a perda em três minutos
Abra o link do anúncio com um valor de teste na query string, por exemplo https://seu-dominio.com/?gclid=TESTE123.
Siga manualmente todos os redirecionamentos usando as ferramentas de desenvolvedor do navegador ou curl com -L.
Na URL final, verifique se TESTE123 ainda aparece. Se sumiu, inspecione cada cabeçalho Location para identificar o salto que cortou o parâmetro.
No tracker, confirme se o payload de conversão recebeu o click id ou se chegou vazio. Repita o teste com fbclid e ttclid para cobrir todas as plataformas usadas.
Padrão correto para preservar o click id
O filtro de tráfego precisa tomar a decisão bot/humano antes de qualquer redirecionamento e, em seguida, repassar a query string original intacta para o destino seguinte. Qualquer lógica que reescreva a URL sem copiar os parâmetros queima o rastreamento inteiro.
A persistência em first-party cookie ou localStorage deve acontecer na entrada, no momento em que o clique chega, e não na saída. Assim o valor fica disponível mesmo que redirecionamentos posteriores apaguem a query string.
Evite usar UTM como solução. UTM serve para classificação de tráfego no analytics, mas não substitui o click id necessário para postback e enhanced conversions.
Meu tracker recebe o clique mas o gclid aparece vazio. Qual o motivo mais comum?
O redirecionamento do filtro ou da pré-lander está copiando apenas o pathname e descartando a query string. Verifique o cabeçalho Location de cada salto.
Posso usar window.location.replace para repassar parâmetros?
Sim, desde que concatene explicitamente window.location.search ou os parâmetros individuais antes de montar a nova URL.
O Meta Conversions API funciona sem fbclid no servidor?
Não de forma completa. O fbc gerado a partir do fbclid é necessário para deduplicação e enhanced conversions.
Testar com gclid=TESTE123 é suficiente para todas as plataformas?
Sim para diagnóstico rápido, mas repita o teste com fbclid e ttclid para garantir que o forward funciona em todas as redes usadas.
O filtro da Safely altera a URL original?
Não. A decisão acontece antes do redirect e a query string é repassada sem modificação para o destino.
O ponto mais acionável é simples: configure o filtro para copiar a query string inteira em todo redirecionamento e armazene o click id em first-party storage na entrada da visita.
Leia também: Atribuição de anúncio para WhatsApp com ctwa_clid e CAPI de mensagens
Leia também: Cadeia de redirecionamento em anúncios: o que Google e Meta veem em cada salto
Leia também: Postback S2S que não registra conversão: onde o subid se perde no funil
Escrito por
Redação Safely