Uma pessoa preenche o formulário uma vez. No Meta aparecem dois Leads. No Google Ads, a conversão também conta em dobro, e o CRM recebeu um contato só. A plataforma não inventou nada: ela contou exatamente o que o site enviou. O que diverge é a implementação.
Por que isso importa
O algoritmo aprende com o dado duplicado. As campanhas otimizam para quem converte. Se cada conversão vale por duas, o público e os lances se ajustam a um sinal inflado.
O custo por conversão parece menor do que é. Uma campanha mediana passa a parecer ótima, e a verba vai para ela.
Os relatórios deixam de conversar. A plataforma mostra o dobro do que chegou ao CRM, e ninguém sabe dizer em qual número confiar.
As causas mais comuns
A mesma ferramenta instalada duas vezes
O caso mais frequente. O pixel foi colado no tema do site ou veio de um plugin (de WordPress, de loja virtual), e depois alguém instalou o mesmo pixel pelo Google Tag Manager. As duas instalações disparam o mesmo evento.
53% dos sites que passaram pelo Raio-X do Probity tinham, só na página inicial, ao menos uma ferramenta instalada em dois lugares: no código e no GTM, ou em dois GTMs.
Dois acionadores para a mesma conversão
No GTM, a tag de Lead dispara no envio do formulário e também no clique do botão, ou no envio e na página de obrigado. Cada acionador sozinho faz sentido. Juntos, contam duas vezes.
O site manda o evento duas vezes
A tag escuta um evento do dataLayer, por exemplo generate_lead, e o site empurra esse evento duas vezes: um componente que renderiza de novo, um script que ficou duplicado. A tag está certa, ela só obedece.
Uma página que conta a cada visita
A conversão está presa à página de obrigado, e quem recarrega, volta ou abre de novo pelo histórico conta outra vez. Num caso mais grave, a tag de conversão está num acionador de todas as páginas, e qualquer visita vira conversão.
Navegador e servidor sem combinação
Com o pixel no navegador e a API de Conversões no servidor, o Meta descarta a repetição só quando os dois envios trazem o mesmo nome de evento e o mesmo event_id. Sem isso, cada lado conta a sua conversão.
A mesma conversão contada dentro da plataforma
Nem toda duplicação sai do site. No Google Ads, a conversão da tag e a mesma conversão importada do GA4, as duas como principais, somam em dobro. No GA4, uma regra de "Criar evento" pode gerar um generate_lead a partir da visualização da página de obrigado, enquanto a tag já envia o seu.
Como verificar sozinho
- Abra o DevTools (
F12), aba Network, e marque "Preserve log" para não perder os envios na troca de página. - Preencha o formulário com um contato de teste.
- Filtre por
facebook.com/tre procureev=Lead(na URL ou no corpo do envio). Conte quantos saíram para cada ID de pixel. - Faça o mesmo com
/g/collecteen=generate_leadpara o GA4, e comgoogleadservicesoupagead/conversionpara o Google Ads. - No modo de visualização do GTM, veja quais tags dispararam no envio e quantas vezes.
- No Meta, a ferramenta de teste de eventos do Gerenciador de Eventos mostra se os envios do navegador e do servidor estão sendo combinados.
Dois envios do mesmo evento para a mesma conta, na mesma ação, confirmam a duplicação no site.
Onde o teste manual não alcança
O teste cobre o seu caminho, no seu navegador, naquele momento. A duplicação costuma aparecer só em alguns casos: no celular, numa variação da página, em quem volta pelo histórico, num formulário de outra página. E o que acontece dentro das plataformas, como a regra do GA4 ou a importação no Google Ads, não passa pelo navegador. Para ver o padrão, é preciso observar sessões reais.
Como o Probity ajuda
O Probity observa os envios nas visitas reais e avisa quando o mesmo evento chega mais de uma vez à mesma conta numa mesma página, quando o site empurra a mesma conversão duas vezes, quando uma conversão dispara em toda página e quando uma ferramenta envia para mais de uma conta. Cada alerta mostra a conta, a página, de onde veio cada envio e o caminho da correção. O que sai direto do servidor e as regras dentro das plataformas ficam fora do alcance do navegador, e o Probity declara isso em vez de dar como resolvido.