A venda da Hotmart chegando ao Meta como Purchase, com a campanha que a trouxe
O checkout é da Hotmart, o pixel é seu, e a venda acontece num domínio que o seu pixel nunca vê. Sem o elo entre a sessão e o webhook, o Meta fica sem o evento que mais importa. Este é o caminho que faz a venda voltar ao Meta como Purchase — com valor, produto e a campanha certa.

Todo produtor que anuncia no Meta e vende na Hotmart tem o mesmo buraco: a página é dele, o checkout é da Hotmart, e o evento Purchase que o algoritmo precisa acontece num domínio onde o pixel dele não roda. A Hotmart oferece um pixel próprio no checkout, e ele ajuda — mas o Purchase que sai de lá não sabe nada sobre a sessão que começou no seu site, nem sobre a pessoa que você já conhecia.
O caminho completo tem quatro passos, e cada um pode falhar em silêncio. Já explicamos o desenho em CAPI para infoproduto com checkout externo; aqui o foco é o que acontece com a VENDA, do webhook até o Gerenciador de Eventos.
Passo 1: o marcador no link do checkout
Quando a pessoa clica em "comprar", o pixel injeta um identificador da sessão no link do checkout, no campo de rastreio que a Hotmart devolve no webhook (sck ou xcod). É o único fio determinístico entre a visita e a compra. Dois cuidados que só apareceram medindo: o campo é cortado em 283 caracteres, e se o identificador estiver no fim ele é a vítima — 56% dos marcadores chegavam ilegíveis numa conta real até movermos o identificador para o início.
Passo 2: o webhook chega, e ele não é o único
A Hotmart avisa a compra por webhook em segundos. Mas a mesma venda também chega pela sincronização periódica da API, horas depois, com outro carimbo. Se o evento Purchase sair nos dois caminhos, o Meta recebe a mesma venda duas vezes — e sem event_id igual ele conta duas. A regra que funciona: o webhook dispara; a sincronização só emite o que o webhook PERDEU. Numa conta grande medimos 47% de reescrita da mesma venda antes de aplicar isso.
PURCHASE_COMPLETE chega dias depois de PURCHASE_APPROVED, para a mesma transação. Filtrar os dois como "venda" manda cada compra duas vezes.
Passo 3: resolver a pessoa
Com o marcador, a compra casa com a sessão: campanha, conjunto, anúncio, fbc, fbp, tudo que a página sabia. Sem o marcador (link copiado, outro dispositivo, marcador cortado), sobra a identidade: o e-mail do comprador procurado no grafo de leads. Medimos os dois caminhos numa conta: 69,9% pelo marcador, 19,6% pela identidade, 10,5% sem atribuição. É a régua de atribuição de vendas em dois caminhos.
Passo 4: montar o Purchase
| Campo do CAPI | De onde vem na Hotmart | Cuidado |
|---|---|---|
| value | price_value da transação | É o preço cheio. A comissão é outra coisa e não vai ao Meta |
| currency | price_currency_code | Venda em USD ou EUR precisa da moeda certa, não convertida |
| content_ids / content_name | product_id / product_name | Permite Purchase por produto no Gerenciador |
| order_id | transaction_id | É a chave de dedup do lado do Meta |
| em / ph / fn / ln | Comprador do webhook | Sempre presentes: 100% de cobertura no Purchase |
| fbc / fbp / external_id | A sessão casada, ou o último conhecido da pessoa | É o que liga a compra ao anúncio |
| event_time | order_date da transação | Nunca a hora do processamento: compra reprocessada cairia fora dos 7 dias |
O filtro de status merece uma linha própria: só APPROVED e COMPLETE são venda; um PIX expirado ou um boleto impresso, mandado como Purchase, é conversão falsa treinando o algoritmo errado. E a renovação de assinatura é uma decisão sua — mandar como Purchase infla o retorno; não mandar esconde receita real. Escrevemos sobre isso em renovação contada como venda nova.
O que aparece no Gerenciador de Eventos
Purchase com origem "site" (não "servidor", mesmo saindo do servidor — ver action_source), qualidade de correspondência alta porque e-mail e telefone estão sempre presentes, e a atribuição de campanha na maioria das vendas. Quando a diferença entre o que o Meta credita e o que a Hotmart fatura ficar grande, o culpado quase sempre é um dos quatro passos — e a auditoria de entrega diz qual.
No CrazyLeads o pixel injeta o marcador, a fonte Hotmart recebe o webhook e a sincronização com emissão só de novidade, o resolvedor casa a pessoa pelos dois caminhos, e o Envio para o Meta monta o Purchase com os campos da tabela, deduplicado por transação, com a atribuição que a sessão tinha.