Por que o Meta e a Hotmart nunca batem — e o que fazer com isso
Toda reunião de lançamento tem essa discussão. Os números não batem porque medem coisas diferentes — e existe uma forma de parar de discutir e começar a medir a diferença.

O Gerenciador de Anúncios diz 180 vendas. A Hotmart diz 143. O time de mídia defende o primeiro número, o financeiro defende o segundo, e a reunião vira uma discussão sobre em quem acreditar. Esse debate é velho e tem uma resposta chata: os dois estão certos, porque estão medindo coisas diferentes.
As quatro razões da diferença
1. Janela de atribuição
O Meta credita a venda ao dia do clique, não ao dia da compra. Alguém que clicou na segunda e comprou na sexta aparece na segunda no Gerenciador e na sexta no extrato da Hotmart. Em lançamento, com carrinho de sete dias, isso sozinho descasa a série inteira.
2. Visualização conta como atribuição
Por padrão, o Meta atribui vendas também a quem apenas viu o anúncio, sem clicar. É uma escolha defensável de modelo, mas ela não tem contrapartida no checkout — que só conhece quem chegou lá.
3. Perda de evento no navegador
Na direção contrária, o Meta perde vendas: bloqueador, aba fechada e restrição de rastreamento derrubam parte dos disparos. Aqui o número do Meta fica menor que o real.
4. Status do pagamento
Se o disparo acontece na geração do PIX ou do boleto, entra como venda o que ainda não foi pago. No extrato, entra só o que foi aprovado. Em produto com muito boleto, a diferença é enorme.
Perceba que as causas empurram para lados opostos. Por isso "o Meta infla" é uma explicação incompleta: em campanhas de tráfego frio com público que bloqueia rastreamento, ele frequentemente subconta.
O que fazer na prática
- 01Escolha uma fonte de verdade para dinheiro. É o gateway, sempre. O número que vira caixa é o do checkout, e é ele que vai para o relatório de resultado.
- 02Use o Meta como sinal de otimização, não como contabilidade. O papel dele é ensinar o algoritmo, e para isso ele precisa de dado limpo — não de dado igual ao seu.
- 03Alimente o Meta com a venda real. Enviando a compra aprovada pela API de Conversões, com valor e identidade, você melhora o sinal e reduz a divergência causada por perda de evento.
- 04Meça a diferença em vez de discuti-la. Com custo do Meta e vendas do checkout na mesma base, a divergência vira uma coluna do relatório, monitorada como qualquer outra métrica.
A comparação que realmente importa
Quando as duas fontes estão no mesmo lugar, dá para fazer a única pergunta que decide investimento: das vendas que o checkout registrou, quantas dá para ligar a um anúncio — e a qual? Essa é uma pergunta sobre o seu dado, e não depende de acreditar no relatório de ninguém.
SELECT
m.campaign_name,
SUM(m.spend) AS investimento,
COUNT(DISTINCT h.transaction_id) AS vendas_no_checkout,
SUM(h.price_value) AS receita_real,
SUM(h.price_value) / SUM(m.spend) AS retorno
FROM meta_ads m
LEFT JOIN hotmart_vendas h
ON h.meta_campaign_id = m.campaign_id
WHERE h.status IN ('APPROVED', 'COMPLETE')
GROUP BY 1
ORDER BY receita_real DESCExiste uma parcela de vendas que não se liga a anúncio nenhum, e ela deve continuar visível no relatório. Esconder o não atribuído é o jeito mais rápido de produzir um retorno bonito e falso.