Ir para o conteúdo

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:

  1. Pixel do navegador instalado manualmente nas LPs do RD (Edição Avançada → JS no HEAD = base/PageView)
  2. Na página de obrigado b2b-agradecimento-lp-midia-paga → JS no BODY = fbq('track','Lead')
  3. Integração de eventos do RD desconectada
  4. 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}/events devolve 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.
  • PATCH no 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=...