Debugging de Tags no GTM: Como Usar o Tag Assistant Como um Profissional

Método de Preview no GTM: timeline, Tags Not Fired, Variables, Data Layer e Consent — para achar por que a conversão não dispara antes de culpar o Ads.

Contexto

A campanha gasta. O clique no CTA “funcionou” no site. No Google Ads e no GA4, a conversão não entra — ou entra ontem, errado, duas vezes.

Antes de culpar atribuição, lookalike ou “o pixel do Meta”, abra o Tag Assistant (Preview do GTM). Sem método, ele vira um painel decorativo: você vê “Summary”, fecha e volta pro media buyer. Com método, ele mostra no milissegundo se a tag disparou, qual condição do trigger falhou, se a variável veio undefined ou se o consent bloqueou o hit.

Este guia é o fluxo de QA que a mídia precisa para depurar disparo de tags como profissional — sem virar engenheiro de sGTM.

Problema

Sintoma Causa típica
Tag na lista Not Fired Condição do trigger falhou (seletor, evento, filtro de URL)
Tag “disparou”, parâmetro vazio Variável resolvida undefined / null naquele evento
Tag some só com banner de cookies Consent: analytics_storage / ad_storage denied (ou default atrasado)
Badge No debugger found Canal Preview quebrado (aba errada, adblock, cookie ausente)
Preview mudo depois de um push do front dataLayer = [...] reiniciou o array e matou o listener do GTM
Disparo duplicado Dois triggers / Enhanced Measurement + tag manual

O Preview não “conserta” o container. Ele radiografa o draft. Sem inspecionar o evento certo no timeline, você só confirma que algo está errado.

Como a sessão de Preview funciona

O modo antigo dependia de cookie de terceiros. O Preview atual usa sinais de primeira parte e comunicação entre janelas:

  1. gtm_debug na URL — quando a opção de incluir o sinal de debug está ligada.
  2. Referrer vindo de tagassistant.google.com.
  3. Cookie de primeira parte __TAG_ASSISTANT no domínio do site — ordena às libs a falarem com o depurador.

A telemetria (dataLayer, tags, variáveis) sobe via window.postMessage para a UI do Tag Assistant. Por isso a aba do site precisa ter sido aberta pelo próprio fluxo de Preview: abrir o site “na mão” com o cookie residual costuma terminar em No debugger found.

Extensão Chrome

Sem extensão, o Preview costuma abrir em pop-up — ruim para DevTools, mobile emulation e URL livre. Com a extensão moderna do Tag Assistant (Manifest V3; Companion legado ficou para trás), a sessão sobe em aba normal, permite ramificar várias abas e auditar melhor iframes (checkout, chat, formulário embutido).

Se adblock / extensões de privacidade matam o canal: use um perfil limpo do Chrome ou allowlist do seu domínio + tagassistant.google.com.

Método profissional na UI

Esqueça o Summary como veredito final. O fluxo:

1. Timeline (cronograma)

Coluna da esquerda: eventos em ordem — Consent Initialization, Container Loaded, DOM Ready, cliques, pushes customizados. Clique no evento da interação que você acabou de fazer (ex.: o clique do CTA), não no agregado.

2. Tags — Fired vs Not Fired

Abra a tag que deveria ter disparado. Em Not Fired, o Tag Assistant marca com cruz vermelha qual condição do trigger falhou. É o atalho mais barato do debugging: quase sempre é seletor, Page URL ou nome do Custom Event errado.

Em Fired, confira se não há duplicata (duas tags iguais no mesmo evento).

3. Variables

No mesmo evento selecionado, veja o valor resolvido de cada variável. Click Text vazio, Data Layer Variable undefined, Cookie ausente — a tag pode até disparar com payload inútil, e o Ads “otimiza” lixo.

4. Data Layer

Payload do push daquele evento + modelo consolidado depois da fusão. Use para validar se o front mandou event, ecommerce.items, IDs — ou se mandou string onde o GA4 espera número. O contrato estável continua sendo o guia de Data Layer para devs.

5. Consent

Estado de ad_storage, analytics_storage, ad_user_data, ad_personalization naquele milissegundo. Tag “configurada certo” e silêncio no GA4: muitas vezes é consent, não trigger. Detalhe de default/update: Consent Mode v2.

6. Errors

JS quebrado na Custom HTML, DOM ausente, falha de template. Se a aba Errors acende, o resto do painel mente por omissão.

Fluxo de QA (caminho real)

  1. Abra Preview no workspace (draft atual).
  2. Simule o percurso de verdade: landing → CTA → form / carrinho / thank-you — não só a home.
  3. A cada passo: evento no timeline → Tags → Variables → Data Layer → Consent.
  4. Corrija no GTM.
  5. Clique em Preview de novo (ou reconecte) para puxar o draft novo — senão você testa a versão velha.
  6. Só então publique. Em paralelo, DebugView do GA4 confirma o hit no property (Preview ≠ “já está no relatório de exploração”).

Para eventos DIY sem código de site, o Preview é a prova antes de publicar: eventos no GTM sem alterar o código.

Armadilhas rápidas

dataLayer = [...] em vez de push

// Quebra o listener do GTM — Preview fica mudo
window.dataLayer = [{ event: 'purchase' }];

// Correto
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({ event: 'purchase', /* ... */ });

Consent sem default a tempo

Aviso clássico: tag read consent before a default was set. A tag rodou antes do escudo. Sintoma: hits estranhos ou bloqueio inconsistente. Ordem: default cedo (Consent Initialization) → update da CMP.

gcs no hit (só o suficiente)

Nos requests das tags Google, o consent aparece comprimido (ex.: parâmetro gcs). Não precisa decorar a tabela inteira no dia a dia: se a aba Consent no Tag Assistant mostra denied e o hit “sumiu”, você já tem o diagnóstico. O resto (V2 / gcd) fica no guia de Consent Mode.

Preview ≠ produção publicada

Você validou o draft. Sem Publish, o visitante real continua no container antigo. QA no Preview + smoke test pós-publish.

Checklist de QA

# Verificação Feito quando...
1 Sessão Badge conectado; sem “No debugger found”
2 Evento certo Timeline no clique/push — não só Summary
3 Trigger Not Fired mostra cruz na condição real (seletor/URL/evento)
4 Variáveis Valores esperados no milissegundo do evento
5 Data Layer event + parâmetros batem com o mapa; sem dataLayer =
6 Consent Categorias granted/denied batem com o banner
7 Duplicata Uma tag de conversão por interação (ou desdup explícito)
8 Republish Preview Após cada fix, Preview no draft novo + reteste do caminho

Próximo passo

Use o Tag Assistant como rotina: evento → Tags → Variables → Data Layer → Consent. Isso resolve a maior parte das “conversões que a mídia não vê” sem abrir ticket de engenharia.

Quando o container tem dezenas de tags, triggers em CSS frágil, consent desalinhado e ninguém sabe o mapa oficial do que deveria disparar, o DIY vira roleta. Aí o próximo passo é uma auditoria: o que dispara hoje vs o que a mídia precisa, ownership e critério de QA antes do próximo deploy de front.

Se quiser, partimos do seu Preview (CTA, lead, purchase) e listamos o que está Not Fired de propósito — e o que está quebrado em silêncio.