Pular para o conteúdo
Dados 20 de julho de 2026 · 10 min

Google Tag Manager avançado: triggers e variáveis customizadas

GTM básico é fácil, mas 80% das implementações param no pageview. Guia técnico de triggers avançados, variáveis customizadas e Data Layer pra rastrear tudo que importa.

NM

Nathan Máximo

Máximo do Marketing

A maioria das empresas instala o GTM, joga o pixel do Meta e o GA4 lá dentro, e chama de “implementado”. Tecnicamente está. Mas o que o GTM realmente faz quando bem usado é radicalmente diferente do que essa configuração básica entrega.

A diferença entre GTM básico e GTM avançado é a diferença entre “sei que o usuário visitou a página” e “sei exatamente o que ele clicou, quanto scrollou, qual campo do formulário abandonou, qual vídeo assistiu até o fim, e quando saiu sem converter.”

Esse artigo cobre os recursos que fazem o GTM sair do tracking de pageview e virar uma ferramenta real de análise comportamental.

GTM básico vs avançado — o que muda

Configuração básica padrão:

  • Tag GA4: dispara em All Pages
  • Tag Meta Pixel: dispara em All Pages
  • Zero customização de triggers
  • Nenhuma variável customizada

O que essa configuração entrega: sessões e pageviews. Suficiente pra ver quantas pessoas visitaram. Insuficiente pra qualquer decisão de otimização séria.

Configuração avançada entrega:

  • Cliques em CTAs específicos (com texto e destino capturados)
  • Scroll depth real (25%, 50%, 75%, 90%)
  • Envio de formulários com campo de origem rastreado
  • Reprodução de vídeo (play, pause, % assistida)
  • Erros de JavaScript em produção
  • Eventos de Data Layer enviados do backend
  • Tempo de engajamento por seção da página

A distância entre os dois não é tão grande quanto parece. São triggers e variáveis certas aplicadas no lugar certo.

Os tipos de trigger — o que cada um faz

GTM tem 13 tipos de trigger. A maioria ignora 10. Erro.

Page View, DOM Ready, Window Loaded

São três momentos diferentes do carregamento de página:

TriggerQuando disparaQuando usar
Page ViewHTML começa a carregarTracking básico de visita, scripts que não dependem do DOM
DOM ReadyHTML carregado, DOM disponívelPrecisa ler elementos da página (textos, classes)
Window LoadedTudo carregado, incluindo imagens e scriptsPrecisa garantir que terceiros (GA4, pixel) já carregaram

Erro clássico: usar Page View pra capturar elemento do DOM que ainda não existe nesse momento. O trigger falha silenciosamente.

Click triggers

Dois tipos:

All Elements: qualquer clique em qualquer elemento. Amplo demais sem filtros.

Just Links: só cliques em links (<a>). Mais específico. Permite seguir link antes de disparar.

Configuração útil: habilita “Wait for Tags” (500ms) quando precisar que o evento do GA4 seja enviado antes de o navegador navegar pra outro domínio.

Como filtrar cliques específicos:

  • Click Text contains “Falar com a gente” — captura por texto do botão
  • Click Classes contains “btn-cta” — por classe CSS
  • Click URL contains ”/#contato” — por destino do link
  • Click ID equals “btn-comprar” — por atributo ID

Form triggers

Form Submission dispara quando usuário clica no submit do formulário.

Habilita “Wait for Tags” aqui também, pra garantir que o evento de conversão dispara antes da página redirecionar.

Configuração pro GA4:

  1. Trigger: Form Submission
  2. Filtro: Page URL contains “/contato” (evita capturar todo formulário do site)
  3. Tag GA4 Event: generate_lead
  4. Variáveis: Form ID, Page URL, Page Title

Ponto de atenção: se o formulário usa preventDefault() e não redireciona (formulário AJAX), Form Submission pode não disparar. Nesse caso, precisa de Custom Event via Data Layer.

Custom Event triggers

O mais poderoso. Dispara quando alguém chama dataLayer.push({ event: 'nome_evento' }) no código do site.

Permite tracking de eventos que o GTM não captura nativamente:

  • Compra concluída (evento do backend via webhook)
  • Abandono de carrinho detectado pela aplicação
  • Usuário atingiu nível de engajamento customizado
  • Login realizado
  • Produto adicionado ao carrinho (via React state)

Exemplo: desenvolvedora adiciona no site:

dataLayer.push({
  event: 'produto_adicionado',
  produto_nome: 'Óculos Ray-Ban RB2132',
  produto_valor: 450.00,
  categoria: 'Solar'
});

No GTM: Custom Event trigger com Event Name = produto_adicionado. Tag GA4 captura isso automaticamente com os parâmetros extras.

Scroll Depth triggers

Scroll Depth dispara quando usuário rola a página até determinada porcentagem ou posição em pixels.

Configuração recomendada: 25%, 50%, 75%, 90% (porcentagem).

Tag GA4 Event: scroll_depth com parâmetro scroll_threshold = {{Scroll Depth Threshold}}

Uso prático: identificar quais páginas de blog têm leitura real vs quais tem bounce (clicou, não leu). Página com 90%+ de leitura tem conteúdo bom. Página com 25% médio precisa de revisão no lead.

Timer triggers

Dispara após X milissegundos na página. Útil pra:

  • Marcar usuário como “engajado” após 30 segundos
  • Disparar popup depois de 45 segundos
  • Detectar se usuário ficou tempo suficiente pra ser qualificado

Configuração: Timer, Interval = 30000ms (30s), Limit = 1 (só dispara uma vez).

Tag: GA4 event time_on_page com parâmetro seconds = 30.

JavaScript Error triggers

Captura erros de JavaScript em produção. Essencial pra monitoramento de qualidade.

Trigger: JavaScript Error. Tag: GA4 Event js_error com variáveis:

  • {{Error Message}}
  • {{Error URL}}
  • {{Error Line}}

Cria relatório no GA4 pra ver quais erros acontecem mais. Erros em páginas de checkout são prioridade máxima.

Variáveis customizadas — onde a precisão acontece

Variáveis são o que permite passar dados dinâmicos pras tags. Sem elas, toda tag recebe informação estática.

Data Layer Variable

A mais importante. Lê valores que o site coloca no Data Layer.

Exemplo: site de e-commerce empurra no checkout:

dataLayer.push({
  event: 'purchase',
  ecommerce: {
    transaction_id: 'TX-9821',
    value: 899.00,
    currency: 'BRL',
    items: [{ item_name: 'Óculos de Grau Prada', price: 899.00, quantity: 1 }]
  }
});

No GTM: cria variável Data Layer com Data Layer Variable Name = ecommerce.value. Essa variável retorna 899.00 dinamicamente.

Tag GA4 de compra usa {{DL - Purchase Value}} no campo de valor. Tracking preciso sem hardcode.

JavaScript Variable

Executa código JavaScript e usa o retorno como valor da variável.

Exemplo pra capturar hash do usuário logado:

function() {
  return window.userHash || 'anonimo';
}

Exemplo pra capturar nome da campanha da URL:

function() {
  var params = new URLSearchParams(window.location.search);
  return params.get('utm_campaign') || 'nenhuma';
}

Poderoso porque dá acesso a tudo que JavaScript consegue acessar na página.

URL Variable

Extrai partes da URL sem precisar escrever JavaScript.

Componentes disponíveis: Full URL, Protocol, Host, Port, Path, Query, Fragment.

Exemplo: variável que pega o parâmetro utm_source da URL. Tipo: URL, Componente: Query, Parâmetro de consulta: utm_source.

Resultado: meta, google, email, etc — dependendo do UTM.

DOM Element

Lê texto ou atributo de elemento específico do HTML.

Útil quando o site não tem Data Layer mas o dado existe em algum lugar da página.

Exemplo: página de produto tem <span class="preco">R$ 1.290,00</span>. Variável DOM Element captura esse valor sem modificar o site.

Seletor CSS: .preco. Propriedade: innerText. Resultado: R$ 1.290,00.

Auto-Event Variables

Disponíveis quando trigger é um evento de clique ou formulário.

As principais:

VariávelO que retorna
Click TextTexto visível do elemento clicado
Click URLHref do link clicado
Click ClassesClasses CSS do elemento
Click IDAtributo ID do elemento
Click ElementReferência ao elemento DOM
Form IDID do formulário enviado
Form ClassesClasses do formulário

Uso típico: tag GA4 que captura qual botão de CTA foi clicado. Parâmetro cta_text = {{Click Text}}. Agora GA4 mostra “Falar com a gente”, “Ver planos”, “Quero uma proposta” como valores distintos.

Data Layer: a arquitetura que sustenta tudo

Data Layer é um array global (window.dataLayer) onde o site empurra dados estruturados que o GTM lê.

Sem Data Layer, GTM depende de scraping do DOM ou JavaScript acrobático pra pegar informações do site. Com Data Layer, o site “fala” com o GTM de forma limpa.

Implementação básica no <head>:

<script>
  window.dataLayer = window.dataLayer || [];
</script>

Esse script deve vir antes do snippet do GTM. Se GTM carrega antes do array existir, pode perder eventos.

Padrão de eventos que toda implementação precisa:

// Página carregou com usuário autenticado
dataLayer.push({
  event: 'user_identified',
  user_type: 'cliente',
  user_email_hash: 'abc123...' // SHA-256
});

// Formulário enviado via AJAX
dataLayer.push({
  event: 'form_submitted',
  form_name: 'Contato Comercial',
  origem: 'header-cta'
});

// Produto visualizado
dataLayer.push({
  event: 'view_item',
  ecommerce: {
    items: [{ item_name: 'Nome do produto', price: 299.00 }]
  }
});

O dev implementa o Data Layer uma vez. O GTM lê sem precisar de mais mudanças de código.

5 implementações avançadas que fazem diferença

1. Tracking de cliques em WhatsApp

Trigger: Click — Just Links
Filtro: Click URL contains wa.me OR api.whatsapp.com
Tag GA4 Event: whatsapp_click
Parâmetros: page_location = {{Page URL}}, click_text = {{Click Text}}

Resultado: vê quantos cliques em WhatsApp vêm de cada página, qual CTA funciona melhor.

2. Scroll depth por tipo de conteúdo

Trigger: Scroll Depth 75%
Filtro: Page URL contains /blog/
Tag GA4 Event: blog_read
Parâmetro: article_title = {{Page Title}}

Resultado: lista dos artigos mais lidos de verdade (não só visitados).

3. Abandono de formulário

Não tem trigger nativo pra isso. Precisa de JavaScript customizado:

// Coloca no HTML Customizado via GTM (tag que dispara em DOM Ready)
document.querySelector('form#contato').querySelectorAll('input, textarea').forEach(function(field) {
  field.addEventListener('blur', function() {
    if (this.value) {
      dataLayer.push({
        event: 'form_field_interaction',
        field_name: this.name
      });
    }
  });
});

Trigger: Custom Event form_field_interaction
Tag GA4: captura qual campo foi preenchido antes do abandono.

4. Tracking de vídeo YouTube

GTM tem suporte nativo a YouTube se habilitar o listener.

Tag: Google Analytics — Universal (ou GA4) com track type Video
Trigger: YouTube Video — Play, 25%, 50%, 75%, Complete
Parâmetros: video_title, video_percent, video_url

Resultado: vê quais vídeos retêm atenção e onde o usuário desiste.

5. Erro de checkout em tempo real

Trigger: Custom Event checkout_error
Precisa que o site empurre esse evento quando checkout falha:

dataLayer.push({
  event: 'checkout_error',
  error_type: 'cartao_recusado',
  step: 'pagamento'
});

Tag GA4 Event: checkout_error
Parâmetros: error_type, step

Resultado: monitor de erros de checkout sem precisar de ferramenta extra. Cria alerta no GA4 pra notificar quando taxa de erro subir.

Depuração — como confirmar que está funcionando

GTM tem Preview Mode (clica no botão “Preview” no workspace). Abre Tag Assistant no browser, que mostra em tempo real:

  • Quais tags dispararam
  • Quais triggers foram ativados
  • Quais variáveis foram lidas e seus valores
  • Sequência de eventos na página

Processo de QA:

  1. Entra em Preview Mode
  2. Abre o site em outra aba
  3. Reproduz a ação que deveria disparar a tag (clica no botão, envia formulário)
  4. Volta pro Tag Assistant e confirma que a tag disparou com os valores corretos
  5. Verifica no GA4 DebugView se o evento chegou

Sem esse processo, você publica imaginando que funciona. Com ele, você sabe.

Erros que aparecem sempre

Trigger muito amplo sem filtro: Click trigger em “All Elements” sem filtro captura TUDO. Enche o GA4 de lixo.

Sequência errada de tags: Tag de conversão dispara antes da tag de configuração GA4. Evento chega sem a measurement ID. Vai pro limbo.

Não publicar depois de editar: Fez a mudança no GTM e achou que foi ao ar. GTM tem versionamento — precisa clicar “Submit” pra publicar.

Dependência de elemento DOM em Page View: Elemento não existe no DOM ainda. Usar DOM Ready resolve.

Não usar Exception em triggers: Trigger de formulário em All Pages captura também formulários de newsletter no rodapé. Usa trigger de exceção pra excluir o que não quer.

O que muda quando o GTM é bem configurado

Dados de qualidade mudam o que é possível decidir. Com tracking superficial, você sabe que a taxa de conversão é 1.2%. Com tracking avançado, você sabe que usuários que scrollam 75%+ da landing page convertem a 4.8%, e os que clicam no vídeo antes do CTA convertem a 6.1%.

Esse nível de detalhe é o que separa otimização de CRO real de “mudamos o botão de verde pra laranja e nada mudou.”

GTM bem configurado também é a base pra server-side tracking via Stape funcionar corretamente — os dois trabalham juntos, com GTM Web capturando eventos e GTM Server enviando pro Meta CAPI e Google Enhanced Conversions. Se a implementação front-end for ruim, o server-side não salva.

Pra quem está construindo a camada de dados do zero, vale ler o guia de GA4 completo pra entender como os eventos do GTM aparecem lá dentro, e como estruturar as conversões pra que o bidding do Google Ads otimize com dados reais.

A terceira peça é consent: triggers de GTM precisam respeitar o que o usuário escolheu no banner de cookies. Implementação de Consent Mode V2 garante que o GTM não dispara tags de tracking quando usuário rejeitou.


A Máximo configura GTM avançado com triggers, variáveis e Data Layer estruturado. Se seu tracking está no nível básico, fala com a gente e a gente faz um diagnóstico do que está perdendo.

#gtm #tags #tracking

Quer aplicar isso na sua empresa?

A gente faz um diagnóstico gratuito e mostra o caminho mais curto pra você crescer com previsibilidade.

Quero meu diagnóstico