Tracking Perfeito: Meta CAPI + Google Ads + GA4
O Pixel sozinho perde até 30% dos seus eventos por iOS, adblock e ITP. A solução é tracking server-side com Meta CAPI + GA4 + Google Ads, tudo deduplicado por event_id.
Por que isso importa
O Pixel client-side perde até 30% dos eventos: iOS/ITP apaga o cookie em 7 dias, o adblock derruba o disparo e o EMQ despenca. Sem dado de servidor, a Meta otimiza no escuro e o seu CPA sobe.
A arquitetura em 4 camadas
- Cookies: middleware Next cria _eid (UUID, 1 ano), _fbp, _fbc e _gcl_aw/_wbraid/_gbraid
- Client: Pixel + gtag com o MESMO event_id do servidor
- Server: Next API dispara CAPI, GA4 e Google Ads em paralelo
- Externo: Meta Graph API v21, GA4 Measurement Protocol, Google Ads Enhanced Conversions
Regras de ouro
- Use sempre o SDK oficial Meta (capi-param-builder): cuida de subdomainIndex, creationTime e hash
- Todo evento client nasce com event_id e é espelhado no server (dedupe, janela de 48h)
- Eventos críticos (Lead, InitiateCheckout, Purchase) sempre nas 2 pontas
- Purchase só no servidor, via webhook, com event_id = order_id
- fbc e fbp vão em texto claro; em, ph e fn vão em SHA-256
- Único pré-processo BR: telefone em E.164 (+55) e estado em sigla minúscula
EMQ: o que eleva o match
- em + ph (email e telefone): impacto altíssimo, hash SHA-256
- fbc + fbp: atribuição paga da Meta, NUNCA hashear
- external_id: cookie _eid (1 ano), costura a identidade
- IP + user agent: a base obrigatória de todo evento
Prompt para o Claude Code implementar
Implemente tracking server-side completo no meu projeto Next.js 15 (App Router). Stack: Meta CAPI + GA4 Measurement Protocol + Google Ads Enhanced Conversions. Use o SDK oficial Meta capi-param-builder (server e client). Camadas: - middleware.ts: cria _eid (UUID 1 ano), _fbp, _fbc, _gcl_aw/_wbraid/_gbraid - /api/track: recebe evento, dispara CAPI + GA4 + Google Ads com Promise.allSettled - /api/checkout: InitiateCheckout + injeta external_id na URL do checkout - /api/webhook/[gateway]: Purchase autoritativo, event_id = order_id - public/track.js: para paginas HTML estaticas Regras: event_id UUID em toda ponta; dedupe Pixel x CAPI; PII em SHA-256; fbc/fbp em texto claro; telefone E.164 (+55); estado em sigla; tokens fora de NEXT_PUBLIC_.
Perguntas frequentes
Por que o Pixel sozinho não basta?
O Pixel roda no navegador (client-side) e perde até 30% dos eventos por iOS/ITP (que apaga cookies em 7 dias), adblock e configurações de privacidade. Sem o dado do servidor (CAPI), o Event Match Quality cai, a Meta otimiza com menos informação e o custo por resultado sobe.
O que é EMQ (Event Match Quality)?
É a nota de 1 a 10 que a Meta dá para a qualidade de identificação dos seus eventos. Quanto mais dados do usuário (email, telefone, fbc, fbp, external_id) você envia hasheados corretamente, maior o match e melhor a otimização. O objetivo é Good ou Great.
Preciso saber programar para implementar?
Não. Com o Claude Code e o prompt deste post, a IA implementa todos os arquivos no seu projeto Next.js. Você revisa, ajusta e faz o deploy na Vercel.
Funciona com Hotmart, Stripe ou Kiwify?
Sim. O Purchase é disparado pelo webhook do gateway (Hotmart Postback 2.0, Stripe webhook, etc.) com o event_id igual ao order_id, garantindo deduplicação e a venda contabilizada server-side.
Quer implementar isso?
Me chama no WhatsApp. Ajudo você a configurar ou implemento pra você.
Quero ajuda no WhatsAppGastão Matos
@gastaomatos