Compras duplicadas depois de instalar a API de Conversões quase sempre significam uma coisa: o navegador e o servidor estão enviando valores de event_id diferentes para a mesma compra. A Meta desduplica pela combinação de event_name e event_id. Se os IDs forem diferentes, ela não tem como saber que os dois eventos são o mesmo pedido, então conta os dois.
A versão perigosa é a falha oposta, em que os IDs colidem e você perde vendas reais sem perceber.
Instalar a API de Conversões é a decisão certa. O rastreamento pelo navegador perde eventos para bloqueadores de anúncios, prevenção de rastreamento, sessões quebradas e carregamentos de página abandonados, e um envio pelo servidor recupera boa parte deles. Quase todo mundo deveria rodar os dois.
Mas “rodar os dois” significa que a Meta agora recebe dois avisos de cada compra, e a única coisa que impede que cada uma seja contada duas vezes é um identificador em comum. Erre esse identificador num sentido e sua receita dobra no papel. Erre no outro e sua receita cai pela metade em silêncio.
Como a desduplicação realmente funciona
A Meta compara dois campos juntos: event_name e event_id. Os dois precisam coincidir.
Browser: event_name: "Purchase" event_id: "a91f-2026-08-12" Server: event_name: "Purchase" event_id: "1047"
Browser: event_name: "Purchase" event_id: "order_1047" Server: event_name: "Purchase" event_id: "order_1047"
A regra é simples de explicar e fácil de quebrar na prática, porque os dois lados costumam ser construídos por sistemas diferentes em momentos diferentes. O evento do navegador é gerado por um tema ou um gerenciador de tags; o evento do servidor, por um app, um serviço intermediário ou o seu próprio código. Nada os obriga a coincidir, e nada te avisa quando não coincidem.
Escolhendo um identificador que não pode divergir
O identificador precisa ser único por pedido e idêntico nos dois caminhos. Esses dois requisitos descartam a maior parte do que as pessoas usam primeiro.
| Candidato | Único por pedido? | Igual nos dois lados? | Veredito |
|---|---|---|---|
| ID / número do pedido | Sim | Sim, se os dois lerem o pedido | Use este |
| UUID gerado aleatoriamente | Sim | Só se gerado uma vez e repassado | Arriscado |
| ID do checkout | Nem sempre | Muitas vezes difere do ID do pedido | Evite |
| ID da sessão | Não | Não | Nunca |
| Timestamp | Não | Quase nunca | Nunca |
Timestamps são os piores e os mais tentadores, porque parecem únicos. Não são: dois pedidos no mesmo segundo colidem, e o relógio do navegador não é o relógio do seu servidor. Um UUID funciona apenas se for gerado uma vez e depois repassado para o outro lado; se cada lado gera o seu, você construiu uma máquina de duplicação.
Todo mundo se preocupa com contagem dupla porque ela aparece. O bug pior é um identificador que não é único: um ID de checkout reaproveitado entre pedidos, ou um valor que se repete. Aí a Meta, corretamente, desduplica duas compras realmente diferentes em uma só, e você perde receita real dos seus relatórios sem erro nenhum em lugar algum.
A contagem dupla parece boa notícia e é investigada. A perda silenciosa parece uma queda lenta e a culpa cai nos anúncios.
Provar que funciona, não supor que funciona
Configurado não é a mesma coisa que funcionando. Este é o teste que resolve a questão, e leva uns quinze minutos.
- Faça um pedido realUma compra real pelo checkout real, não um link de teste. Anote o número do pedido.
- Capture o ID do evento no navegadorAbra o DevTools antes de finalizar a compra, filtre a aba Network por
facebook, conclua o pedido e leia oeventIDna requisição Purchase. - Capture o ID do evento no servidorNos logs da sua integração da CAPI, ou no Gerenciador de Eventos, encontre o evento do servidor para esse mesmo pedido e leia o
event_iddele. - Compare caractere por caractereNão parecidos. Idênticos. Um prefixo de um lado (
order_1047contra1047) é uma falha, não um detalhe. - Confira o relatório de desduplicaçãoNo Gerenciador de Eventos, abra o evento Purchase e veja como ele está sendo recebido. Uma configuração desduplicada corretamente mostra navegador e servidor como fontes do mesmo evento, não dois totais separados.
- Concilie uma semana inteiraCompare a contagem de pedidos da sua loja com as compras no Gerenciador de Eventos em uma semana já fechada. Bem acima da sua contagem de pedidos significa duplicação. Bem abaixo significa perda.
O número que te diz que está funcionando
Com a desduplicação certa, a métrica que vale acompanhar é a qualidade da correspondência de eventos (Event Match Quality). Ela reflete quanta informação de identificação você envia com cada evento (e-mail com hash, telefone, nome, localização, identificadores de clique) e determina o quão bem a Meta consegue atribuir uma conversão à pessoa que viu o anúncio.
É aqui que a API de Conversões se paga. Seu servidor conhece o e-mail e o telefone do cliente, porque ele acabou de comprar algo. O navegador muitas vezes não. Enviar esses dados pelo servidor, com hash correto, costuma render mais do que recuperar os eventos bloqueados.
Os identificadores do cliente precisam passar por hash SHA-256 antes do envio. Isso não é um detalhe de desempenho: é a diferença entre mandar à Meta um hash e mandar à Meta os dados pessoais brutos dos seus clientes. Se você mesmo estiver construindo a integração, confira o hash em um payload real antes de ir ao ar, porque um bug aqui é um incidente de proteção de dados, e não um bug de rastreamento.
O que eu não estou afirmando
Não te dei uma meta de qualidade da correspondência de eventos nem um ganho esperado ao instalar a CAPI. Os dois dependem totalmente de quais dados de clientes você pode coletar legitimamente, do seu checkout e do seu tráfego, e todo benchmark publicado que já vi vem de um fornecedor cujo produto melhora justamente o número que ele mede.
Meça sua própria linha de base antes da mudança, meça de novo depois que ela tiver rodado uma janela de atribuição completa e compare com você mesmo. Essa comparação vale mais do que qualquer média publicada.
Não tem certeza se sua desduplicação está funcionando?
É uma verificação de quinze minutos, e a maioria das configurações falha nela. Me envie a URL da sua loja e eu te digo o que encontrar.
Peça uma auditoria gratuita de rastreamento →