Rastreamento — Pixel, UTM, GTM e Google Ads¶
Como cada negociação no RD CRM sabe de qual campanha da Meta ela veio, e como o evento de Lead passou a contar cadastro real. É o que sustenta o CPA real por campanha da dashboard.
O conserto do pixel (23/06/2026)¶
O problema: pixel inflado 15 a 19 vezes
O evento "Lead" do pixel PIXEL B2B 1 - LANDING (1893961771412420) marcava ~1.400 leads/mês contra ~30 negociações reais. O sinal de que era impossível: Lead > PageView — mais cadastros que visitas.
Causa: a integração do RD Station "Eventos do Facebook Ads" → API de Conversões mandava Lead server-side a cada evento do CRM, não só em cadastro real. E o RD não deixa configurar o gatilho.
Conserto aplicado:
- Pixel do navegador instalado manualmente nas LPs do RD (Edição Avançada → JS no HEAD = base/PageView)
- Na página de obrigado
b2b-agradecimento-lp-midia-paga→ JS no BODY =fbq('track','Lead') - Integração de eventos do RD desconectada
- Conversions API Gateway desligado só para o dataset da LANDING
Resultado: razão pixel ÷ negociações reais caiu para ~1,4x, que é saudável.
Três coisas que não se pode fazer
- Não clicar em "Conectar" na integração de eventos do RD — religa a CAPI e a inflação volta
- Não mexer no pixel do SITE (
1435055217472933) — é a loja, é outra integração - A sincronização de públicos RD↔Meta é separada e não foi afetada
Como ler o pixel conforme o período¶
| Período consultado | Leitura |
|---|---|
| Antes de 23/06/2026 | Inflado 15-19x — não usar |
| Depois de 23/06/2026 | Razão pixel ÷ real ~1,4x é saudável; ≥2x = tráfego virando B2C |
| Janela que cruza o corte | Leitura inválida |
No B2C esse alerta não vale
Lá o evento é Compra, não Lead. Repetir o aviso da inflação no B2C é erro.
UTM — a etiqueta que liga anúncio e negociação¶
No Gerenciador, nível Anúncio → Rastreamento → Parâmetros de URL:
utm_source=facebook&utm_medium=cpc&utm_campaign={{campaign.name}}&utm_content={{ad.name}}&utm_term={{adset.name}}
A LP do RD captura e preenche os campos "Campanha/Conjunto/Anúncio Meta" na negociação.
Dois erros que quebram a atribuição
Valor fixo: utm_campaign=bc_leads manda a mesma etiqueta para toda campanha e mata o CPA por campanha. Use a macro {{campaign.name}}.
Trocar o medium: mantenha utm_medium=cpc. É o cpc que faz o RD classificar como "Busca Paga | Facebook". Trocar para paid_social faz o RD reclassificar como "Social" e a atribuição morre.
Encurtadores apagam UTM
Anúncio apontando para Linktree ou encurtador geralmente perde os parâmetros. Aponte direto para a landing page.
Anúncios criados pelo Consultor já nascem com UTM. Os feitos à mão no Gerenciador, não.
UTM herdada — o robô veggi-atribuicao¶
O problema: recompra contada como venda do Facebook
A LP grava a UTM no contato do RD Marketing (cf_campanha_meta, cf_conjunto_meta, cf_anuncio_meta), e a automação copia do contato para a negociação quando a cria. O contato guarda esses valores para sempre. Se o cliente volta por uma conversão sem UTM (cadastro-interno-de-negociacoes, b2b-botao-whatsapp, formCadastroCliente), a negociação nova nasce com o anúncio de meses atrás.
Caso real: CAMILA clicou em "IU - tom e jerry — Cópia — Cópia" em 24/06/2026. Em 18/09 voltou pelo cadastro interno, a negociação herdou o anúncio (pausado desde julho) e o card de vendas da dashboard mostrou 7 em setembro, contra 6 na aba de anúncios.
Conserto (22/09/2026): Worker veggi-atribuicao, pasta atribuicao/ do repositório veggi-ads-dashboard. A cada 30 min pega as negociações criadas nas últimas 24h que têm campo Meta e acha a conversão que gerou cada uma: a última antes da criação da negociação (com 5 min de folga), ignorando as conversões "RD Station CRM".
| A conversão que gerou a negociação... | O robô |
|---|---|
| Trouxe UTM | Deixa a negociação com os valores dessa conversão (corrige se estiverem diferentes) |
| Não trouxe UTM | Apaga os 3 campos na negociação e no contato |
| Não foi encontrada | Não mexe |
Em set/2026, todas as 101 negociações vindas de anúncio entraram por seja-lojista-veggi ou nova-colecao, e as duas sempre trazem UTM. As herdadas vieram só das três conversões sem UTM citadas acima. Por isso a regra não apaga lead de anúncio por engano.
Limpar só o contato não resolve
Toda vez que a negociação é atualizada, o CRM regrava os campos dela de volta no contato (conversão "RD Station CRM"). Por isso o robô confere cada negociação nova, e não o contato.
Rodar na mão / conferir: https://veggi-atribuicao.veggiageral.workers.dev/?chave=...&simular=1&horas=48. Com simular=1 só mostra o que faria, sem gravar. horas vai até 168 (7 dias). A chave está em atribuicao/.chave.txt (fora do git) e no secret CHAVE.
Desligar: apagar o Worker veggi-atribuicao no painel. Volta tudo a ser como antes.
Limpeza retroativa feita em 22/09/2026: CAMILA, Judite e Ésio Morais. Os valores antigos estão em C:\Projetos\_notas-veggi\backup-campos-meta-2026-09-22.jsonl.
Duas pegadinhas da API do RD Marketing
/platform/contacts/{uuid}/eventsdevolve só as 10 conversões mais antigas. Use&per_page=100, senão a conversão que gerou a negociação some em contato com histórico longo.PATCHno contato com"cf_campo": ""apaga o campo (testado).
Script do Google Ads¶
Roda dentro do Google Ads, não precisa de token ou API — já roda autenticado na conta. Todo dia manda gasto, cliques e conversões por campanha dos últimos 6 meses para a rota /google-ads do robô.
Instalação: Google Ads → Ferramentas e configurações → Ações em massa → Scripts → novo script → colar google-ads/script.js → Autorizar → Visualizar → Salvar → Frequência: diariamente às 7h.
Duas versões do arquivo, de propósito
google-ads/script.js tem a chave preenchida e está no .gitignore. A versão versionada é google-ads/script.exemplo.js, sem chave. Ao editar, mantenha essa separação.
Google Ads e Meta disputam a mesma receita
O PMax roda na mesma loja B2C. Citar como contexto e nunca somar com a Meta — os dois reivindicam o mesmo pedido.
GTM¶
Dois containers exportados no repositório: GTM-NJB6QMR_v11.json e GTM-NJB6QMR_CORRIGIDO.json.
Confira o CORRIGIDO antes de importar
Aquele arquivo foi preparado num momento em que também mexia no Pixel Lead — que depois se descobriu estar no lugar errado. Para pausar as tags de Universal Analytics (produto desligado pelo Google em jul/2023), o recomendado é fazer direto na interface do GTM, não pelo import.
Documentos de referência no repositório¶
| Arquivo | O que é |
|---|---|
GUIA-RASTREAMENTO.md |
Passo a passo completo: UTM, captura na LP, GTM, campo no CRM, validação |
PLANO-FAXINA-RASTREAMENTO.md |
Diagnóstico de antes do conserto. Fala em tempo presente e em "~60x" — é registro histórico, já resolvido |
RELATORIO.md |
Análise gerada pelo build-data.mjs em 16/06/2026 |
ESCOPO-CAMPANHA-B2C-UGC.md |
Escopo do teste de vídeo UGC no B2C (ago/2026) |
Diagnóstico¶
| Sintoma | Causa provável e ação |
|---|---|
| Negociações caindo em "Desconhecido" | Anúncio sem UTM, ou apontando para encurtador |
| Todas as negociações com a mesma campanha | utm_campaign com valor fixo em vez da macro {{campaign.name}} |
| Origem virou "Social" no RD | utm_medium trocado para paid_social. Voltar para cpc |
| Pixel voltou a inflar | Alguém clicou em "Conectar" na integração de eventos do RD. Desconectar de novo |
| Google Ads parou de chegar | Script na conta do Google desativado ou chave errada. Ver o histórico de execuções em Scripts |
| Venda atribuída a anúncio pausado há meses, ou card de vendas maior que a soma da aba de anúncios | UTM herdada do contato. Ver se o veggi-atribuicao está rodando (Workers → veggi-atribuicao → Logs) e simular com ?simular=1&horas=168 |
| Pedido B2C sem etiqueta | Anúncio criado à mão no Gerenciador nasce sem UTM. Confirmar com /vtex-diagnostico?key=... |