Toda reunião de marketing chega nesse impasse. O gestor de mídia mostra 300 leads na tela do Gerenciador, o comercial abre o CRM e vê 180.
Alguém assume que o outro está errado. Normalmente ninguém está.
A diferença tem quatro causas, e três delas são de medição. Só a quarta é problema de verdade.
Causa 1: a métrica de resultados não é uma métrica de lead
O campo de resultados do painel responde à pergunta "qual é a ação principal do meu objetivo de campanha". Ele muda de significado conforme o objetivo, e agrega tipos de ação diferentes na mesma coluna.
Uma campanha de mensagens conta conversa iniciada. Uma de tráfego conta clique no link. Uma de cadastro conta formulário enviado.
Se a conta tem campanhas com objetivos diferentes rodando juntas, a soma da coluna de resultados não é a soma de leads. É a soma de coisas que não somam.
Para auditoria existe a métrica de leads, que responde só por cadastro. Ela é a que fecha com o CRM, porque conta o mesmo evento.
| Métrica | O que conta | Serve para auditoria |
|---|---|---|
| Resultados | ação principal do objetivo, varia por campanha | Não, agrega tipos diferentes |
| Leads | total de cadastros | Sim |
| Cliques no link | visita, não cadastro | Não |
Regra prática: se a coluna muda de sentido quando você troca o objetivo da campanha, ela não entra na planilha de conferência.
Causa 2: as duas datas não são a mesma data
O painel de anúncio atribui a conversão ao dia da impressão que a originou. O CRM registra o lead no dia em que ele entrou.
Isso não é bug, é definição. Um clique na terça às 23h40 que virou formulário na quarta às 00h15 aparece na terça no Meta e na quarta no CRM.
Em volume baixo isso é ruído. Em campanha com pico noturno, é uma diferença que muda o total de dois dias seguidos.
E tem o fuso. O relatório exportado não vem em horário de Brasília por padrão: ele segue o fuso da conta de anúncio, que muitas contas nunca configuraram.
Antes de conferir qualquer coisa, abra as configurações da conta e leia o campo de fuso horário. Se ele vier com offset fixo, como -05, cada linha do seu relatório está deslocada em duas horas em relação ao CRM.
Duas horas de deslocamento não somem no total do mês, mas destroem a conferência diária. Você passa a caçar um erro que é só calendário.
Causa 3: o cruzamento por nome de campanha
Aqui mora o erro mais caro, porque ele parece funcionar.
Nome de campanha é texto editável. Alguém renomeia "Leads Institucional" para "Leads Institucional v2", e a linha do relatório para de casar com a linha do CRM no meio do mês.
O nome também não é único. Duas contas da mesma empresa podem ter campanhas homônimas, e o cruzamento junta lead de uma com custo da outra.
Use o ID da campanha. Ele é imutável, único, e vem em toda linha de relatório do Meta e em todo lead que a integração gravou.
No Zenite, o campo existe dos dois lados: campaign_id na tabela de Meta Ads que o Sync alimenta, e ads_campaign_id no lead do CRM. Esse par é a chave da conferência.
Se o lead não tem esse campo preenchido, ele não entrou por integração. Ele foi digitado, e nenhuma planilha vai atribuí-lo à campanha correta.
Causa 4: o vocabulário que quebra o cruzamento
Este é o detalhe que faz uma conferência tecnicamente correta devolver zero linhas.
O lado de mídia nomeia a plataforma como meta_ads. O lado de CRM, dependendo da origem do registro, grava meta. São a mesma plataforma com duas grafias.
Um filtro por plataforma escrito de um jeito só descarta metade da base em silêncio. Nada quebra, nenhum erro aparece, o total simplesmente vem menor.
Padronize antes de cruzar. Faça a normalização do campo de plataforma no começo da consulta, e liste as grafias que existem na sua base antes de assumir que existe uma só.
A tabela de conferência dia a dia
Monte uma linha por dia, com o fuso já corrigido para Brasília. A planilha é esta:
| Dia (BRT) | Gasto | Leads (Meta) | Leads no CRM | Diferença | Causa |
|---|---|---|---|---|---|
| 01/09 | R$ 420 | 12 | 12 | 0 | fecha |
| 02/09 | R$ 435 | 15 | 13 | 2 | borda de dia, conferir 03/09 |
| 03/09 | R$ 410 | 11 | 13 | -2 | borda do dia anterior |
| 04/09 | R$ 450 | 14 | 9 | 5 | lead sem ID de campanha |
Quatro regras para a planilha não mentir:
Use a métrica de leads, nunca a de resultados.
Converta o fuso do relatório para Brasília antes de agrupar por dia.
Cruze por ID de campanha.
Normalize a grafia da plataforma dos dois lados.
Some a coluna de diferença no mês. Se o acumulado fica perto de zero e só as bordas de dia oscilam, sua medição está sã.
Quando a diferença é erro e quando é lead esquecido
Depois de aplicar as quatro correções, sobra uma diferença real. Ela tem outro nome.
Lead que chegou no CRM, nunca foi aberto e nunca recebeu contato não é problema de medição. É problema de operação, e a planilha acabou de encontrá-lo.
Separe as duas contas. A primeira responde "quantos leads o anúncio gerou". A segunda responde "quantos leads o time trabalhou".
A primeira é discussão de dashboard. A segunda é discussão de reunião semanal, e costuma valer mais dinheiro.
A conferência é metade do problema. A outra metade é o que volta.
Conferir 300 contra 180 responde quantos leads chegaram. Não diz nada sobre quais deles viraram dinheiro.
E essa é a informação que falta do outro lado. A plataforma de anúncio otimiza pelo que ela consegue enxergar, e o que ela enxerga por padrão é "formulário enviado".
Otimizar por formulário enviado tem uma consequência previsível: o algoritmo fica muito bom em encontrar gente que preenche formulário. Não gente que compra.
O ciclo só fecha quando o desfecho da venda volta para a campanha. Ganhou, perdeu, por quanto. É isso que transforma a otimização de "gerar lead" em "gerar lead que fecha".
Esse retorno tem nome e tem API. Na Meta é a Conversions API, e existe um objetivo de campanha desenhado para consumi-la. Mas ele só funciona se o dado voltar mesmo.
E três regras decidem se ele volta:
Prazo. A Meta aceita eventos com até 7 dias. Venda que fecha no décimo segundo dia não entra na conta, por mais real que tenha sido.
Identidade. É preciso e-mail, telefone ou o identificador do Lead Ads. Sem um dos três a Meta não reconhece a pessoa, e o evento é descartado. Os identificadores de navegador só existem se o lead passou pelo seu site.
Valor. Objetivo baseado em valor recusa evento sem valor preenchido. Oportunidade ganha com o campo de valor vazio não conta.
Some a isso um quarto problema, que é de produto e não de API: quase toda integração de conversão falha em silêncio. A fila trava, ninguém vê, e meses depois alguém descobre que a campanha nunca recebeu nada.
Onde isso acontece no Zenite
A Zenite Cloud é Meta Business Partner, e o aplicativo é homologado pela Meta Developers: as permissões que ele usa passaram por App Review.
Para quem está lendo este artigo, isso significa duas coisas concretas. A integração roda na Conversions API oficial, documentada e suportada. E o envio acontece dentro das regras da plataforma, com o acesso concedido à conta do cliente. Não é ponte improvisada nem token emprestado de outro lugar.
O centro dessa história não é o painel, é o CRM. É ele que guarda o ID da campanha no lead, carrega esse ID para a oportunidade e sabe o desfecho da venda.
Dentro de cada oportunidade existe um bloco chamado Retorno para mídia. Ele mostra exatamente o que a Meta recebeu sobre aquele negócio: se está na fila, se foi entregue, se está aguardando conexão, se ficou fora do prazo dos 7 dias ou fora do objetivo configurado.
Quando falha, ele explica em português por quê. "A venda foi ganha, mas o valor ainda não foi preenchido." "O lead de origem não tem e-mail, telefone nem identificador do Lead Ads." "A Meta só aceita eventos com até 7 dias."
Isso resolve o quarto problema. A integração deixa de ser uma caixa-preta que ou funciona ou não, e vira um estado que o vendedor e o gestor enxergam no mesmo lugar onde a venda acontece.
O reenvio existe, com uma trava: só quem tem papel de administrador no CRM pode disparar. Mandar conversão mexe no dataset de anúncios do cliente e não tem desfazer.
O resto do caminho é o que já foi descrito aqui. O Sync normaliza a grafia da plataforma e preserva o ID da campanha em toda linha que importa do Meta. O Dash cruza custo e lead pela mesma chave e mostra a diferença por dia, com o fuso resolvido.
Junto, isso muda a pergunta da reunião. Em vez de "por que o Meta diz 300 e o CRM diz 180", vira "qual campanha trouxe os leads que fecharam", e a Meta passa a saber a resposta junto com você.
Conheça o Zenite CRM e feche o ciclo entre o anúncio, a venda e a plataforma.