Atena
Analytikos
Camadas curvas de papel branco sobrepostas, ilustrando a camada de dados (dataLayer) do Google Tag Manager

dataLayer no GTM: o guia do rastreamento confiável

NAVEGAÇÃO RÁPIDA

Mais lidas

Carregando posts...

Você confia nos números do seu GA4? Se a resposta depende do relatório que você abre, o problema quase nunca está na ferramenta de análise. Está na origem: a forma como os dados saem do site e chegam até a tag. É ali que mora a camada de dados, o dataLayer.

A maior parte das divergências entre GA4, Google Ads e o back-office começa com um dataLayer improvisado, montado às pressas para “fazer a conversão disparar”. Funciona por uma semana. Depois um deploy muda o nome de uma variável e a receita reportada despenca sem que ninguém entenda por quê.

Neste guia prático, você vai entender o que é o dataLayer, como estruturar um dataLayer.push() que não quebra a cada atualização do site, como configurar o Google Tag Manager (GTM) para ler os dados e como validar tudo antes de publicar. Os exemplos numéricos são hipotéticos; o comportamento técnico segue a documentação oficial do Google.

O que é a camada de dados (dataLayer)

Segundo a documentação oficial do Google, o dataLayer é um objeto JavaScript, em formato JSON, que o GTM e o gtag.js usam para repassar informações às tags. Com ele, é possível disparar tags com base em eventos e em valores de variáveis. Em termos práticos, é um contrato entre o site e o rastreamento: o site informa o que aconteceu, e o GTM decide o que enviar ao GA4.

Sem esse contrato, o GTM precisa “adivinhar” os dados lendo o HTML da página (textos, classes CSS, seletores). Qualquer mudança de layout quebra a leitura. Com o dataLayer, o dado vem direto do sistema que o conhece, como a loja ou o back-end do pedido.

Como o dado percorre o rastreamento

  1. 1Evento no site
    O cliente conclui um pedido, clica em um botão ou envia um formulário.
  2. 2dataLayer.push no site
    O código da página registra o evento e seus dados no dataLayer.
  3. 3Acionador no GTM
    Um acionador do tipo Evento personalizado reconhece o nome do evento.
  4. 4Tag de evento do GA4
    A tag lê as variáveis e envia o evento ao GA4.
  5. 5Relatório e decisão
    O dado chega aos relatórios, às explorações e às conversões.
Imagem: Analytikos

O diagrama mostra por que a qualidade do dado é decidida no segundo passo. Se o push sai errado, todos os passos seguintes herdam o erro.

Por que o dataLayer decide a qualidade do rastreamento

  • Estabilidade: o nome do evento e das chaves não depende do visual da página.
  • Precisão: valores como receita, moeda e identificador do pedido vêm do sistema, sem raspagem de texto.
  • Governança: o contrato fica documentado, e desenvolvimento e marketing falam a mesma língua.
  • Reuso: o mesmo evento alimenta GA4, Google Ads e outras tags, sem reescrever o código.

Como estruturar um dataLayer.push confiável

1. Declare o dataLayer antes do GTM

A documentação orienta criar o objeto antes do snippet do contêiner. A forma segura é usar a atribuição condicional, que preserva valores já existentes:

<script>
window.dataLayer = window.dataLayer || [];
</script>
<!-- Snippet do Google Tag Manager aqui -->

2. Use push, nunca atribuição

O envio de dados é feito com dataLayer.push(). Atribuir diretamente (dataLayer = [...]) apaga o que já estava lá, e a documentação lista isso entre os erros comuns.

dataLayer.push({
  event: 'envio_formulario',
  form_id: 'orcamento',
  form_name: 'Pedido de orçamento'
});

3. Defina uma convenção de nomes e siga sempre

ElementoRegraExemplo corretoExemplo problemático
Nome do eventosnake_case, minúsculas, verbo ou açãoadd_to_cartAddToCart, add-to-cart
Chavessnake_case, mesmo padrão em todas as páginasitem_nameitemName em uma página e item_name em outra
MoedaCódigo ISO de três letrasBRLR$
Valores numéricosNúmero com ponto decimal49.90“49,90”
IdentificadoresTexto estável e únicoT_100234Sem identificador
Convenção de nomes recomendada para o dataLayer
Tabela: Analytikos

A convenção em si é recomendação da Analytikos; o que a documentação do Google reforça é que nomes inconsistentes, como visitorType em uma página e visitor_type em outra, impedem o disparo correto das tags. Para os nomes dos eventos recomendados do GA4, veja o guia de GA4 para e-commerce.

4. Em e-commerce, limpe o objeto ecommerce antes de cada push

Na documentação de e-commerce do GA4 para GTM, os exemplos executam dataLayer.push({ ecommerce: null }) antes de cada evento, para que parâmetros de um evento anterior não vazem para o próximo. O evento purchase exige transaction_id, e a página recomenda enviar currency junto com value.

dataLayer.push({ ecommerce: null });
dataLayer.push({
  event: 'purchase',
  ecommerce: {
    transaction_id: 'T_100234',
    value: 329.50,
    shipping: 19.90,
    currency: 'BRL',
    items: [
      { item_id: 'SKU_1', item_name: 'Camiseta Básica', price: 49.90, quantity: 3 },
      { item_id: 'SKU_2', item_name: 'Calça Jeans', price: 89.90, quantity: 2 }
    ]
  }
});

A conta do value: segundo a documentação, é a soma de preço × quantidade de todos os itens. Aqui: 3 × R$ 49,90 + 2 × R$ 89,90 = R$ 149,70 + R$ 179,80 = R$ 329,50. O frete (R$ 19,90) vai em shipping, separado.

Conheça a Athena, by Analytikos: GA4, loja e mídia em um só painel. Testar 30 dias grátis

Como configurar o GTM para ler o dataLayer

  1. Crie um acionador do tipo Evento personalizado com o mesmo nome do evento do push (por exemplo, purchase). Os nomes precisam coincidir.
  2. Crie variáveis de camada de dados para as chaves que não são de e-commerce (por exemplo, form_id). Veja a documentação de variáveis definidas pelo usuário.
  3. Crie uma tag de evento do GA4. Para e-commerce, use {{Event}} como nome do evento e, em Mais configurações > E-commerce, marque Enviar dados de e-commerce com fonte de dados Camada de dados, conforme a documentação do GA4.
  4. Associe o acionador à tag.
  5. Teste no modo de visualização antes de publicar.

Se você ainda não domina os conceitos de tag, acionador e variável, comece pelo guia de GTM para iniciantes.

Ordem de processamento: o cuidado com o tempo

A documentação explica que chamadas de dataLayer.push() são enfileiradas, e por isso valores atualizados podem não estar disponíveis para o evento seguinte. A solução indicada é incluir um nome de evento na mensagem e escutá-lo com um acionador de evento personalizado, em vez de depender de uma variável já preenchida. Também lembra que variáveis valem apenas enquanto o visitante permanece na página; em outras páginas, é preciso enviá-las de novo.

Sites de página única (SPA)

A documentação do Google sobre o dataLayer não trata de SPAs. Como recomendação da Analytikos, envie um evento próprio a cada troca de rota (por exemplo, page_view_virtual) com a nova URL e o título, e deixe o GTM disparar a visualização de página a partir desse evento. Valide no modo de visualização que o evento ocorre uma vez por navegação.

Como validar antes de publicar

  • Modo de visualização do GTM: confirme que o evento aparece com o nome certo e que o acionador disparou a tag. Veja a documentação do modo de visualização.
  • Console do navegador: digite dataLayer e inspecione os objetos enviados, conferindo tipos (número é número, não texto).
  • DebugView do GA4: confirme que o evento chegou com todos os parâmetros. Veja a documentação do DebugView.
  • Teste de ponta a ponta: faça um pedido real de teste e compare o value do GA4 com o do back-office. Se houver diferença, siga o guia de por que a receita do GA4 não bate com a da loja.

Do dado à decisão de mídia

Quando o dataLayer entrega receita, moeda e identificador corretos, GA4 e Google Ads passam a comparar números do mesmo evento. Isso reduz a discussão sobre qual relatório está certo e permite decidir orçamento com base em um dado único. Para ler os resultados e cruzar com a loja e a mídia em um só painel, a Athena, plataforma de BI para e-commerce da Analytikos, reúne loja, GA4 e mídia (teste de 30 dias grátis). Se a implementação envolve consentimento, veja também o texto sobre Consent Mode.

Erros comuns que sujam seus dados

Erros de implementação

ErroPor que distorceComo corrigir
Atribuir dataLayer = […] em vez de usar pushApaga valores já enviados, e eventos anteriores deixam de existir para o GTMDeclarar com window.dataLayer = window.dataLayer || [] e usar sempre push
Digitar datalayer.push (minúsculo)O nome diferencia maiúsculas; o push falha e o evento nunca chegaPadronizar no código e revisar em code review
Chaves sem aspas quando têm hífen{new-variable: “x”} é inválido em JavaScript e quebra o scriptUsar aspas ou snake_case
Nomes diferentes para a mesma chaveTags deixam de disparar em algumas páginasDocumentar o contrato e validar em todas as páginas
Reinicializar window.dataLayer depois do GTMPerde o que já foi registradoInicializar uma única vez, antes do contêiner
Erros de implementação do dataLayer
Tabela: Analytikos

Erros de dados de e-commerce

ErroPor que distorceComo corrigir
Incluir frete no valueCom os números do exemplo, 329,50 + 19,90 = 349,40, um excesso de 6,0% (19,90 ÷ 329,50)Enviar value como soma de preço × quantidade e frete em shipping
Preço como texto com vírgula (“49,90”)O GA4 não soma texto como número e a receita pode zerar ou falharEnviar número com ponto decimal
Não limpar ecommerce antes do pushItens do evento anterior aparecem no próximoExecutar dataLayer.push({ ecommerce: null }) antes de cada evento
Sem transaction_idNão há como deduplicar; recarregar a página de confirmação duplica a compraEnviar identificador único e impedir reenvio
Moeda ausenteReceita em moeda indefinidaEnviar currency: “BRL” junto com value
Erros de dados de e-commerce no dataLayer
Tabela: Analytikos

Erros de processo

  • Documentar só na cabeça de uma pessoa. Quando ela sai, ninguém sabe o que cada evento deve conter. Mantenha um plano de medição com evento, chaves, tipo e exemplo.
  • Publicar sem validar. Um push com o nome errado só aparece semanas depois, no relatório. Teste no modo de visualização e no DebugView antes de cada publicação.
  • Depender de variáveis preenchidas no momento errado. Como os pushes são enfileirados, uma variável pode ainda estar vazia no evento. Dispare por evento personalizado.
  • Ignorar o consentimento. Dados enviados sem respeitar a escolha do usuário criam risco jurídico e lacunas de medição.
  • Nunca auditar. Revise o dataLayer a cada mudança de tema ou checkout e inclua a verificação na auditoria de GA4.

Checklist de dataLayer confiável

  1. dataLayer declarado antes do snippet do GTM, com atribuição condicional.
  2. Todos os envios feitos com push, nunca com atribuição.
  3. Convenção de nomes documentada e seguida em todas as páginas.
  4. Eventos de e-commerce com ecommerce: null antes de cada push.
  5. value como soma de preço × quantidade, frete separado e moeda em ISO.
  6. transaction_id único em toda compra.
  7. Acionadores de evento personalizado com nomes idênticos aos do push.
  8. Eventos de troca de rota definidos para SPAs.
  9. Validação no modo de visualização, no console e no DebugView.
  10. Teste de pedido real comparado com o back-office.
  11. Plano de medição versionado e revisado a cada mudança do site.

Perguntas frequentes

O que é o dataLayer?

É um objeto JavaScript que o GTM e o gtag.js usam para receber informações do site. O site registra eventos e dados com dataLayer.push, e o GTM os lê para disparar tags.

Preciso do dataLayer para usar o GA4?

Não é obrigatório para eventos simples, mas é a forma mais confiável de enviar dados de e-commerce e formulários, porque o dado vem do sistema e não da leitura da tela.

Qual a diferença entre dataLayer.push e atribuir dataLayer?

O push acrescenta dados à fila. Atribuir (dataLayer = […]) substitui o objeto e apaga o que já havia, o que está entre os erros comuns citados na documentação do Google.

Por que limpar o objeto ecommerce antes de cada evento?

Para que parâmetros de um evento anterior não vazem para o seguinte. Os exemplos oficiais do GA4 para GTM executam dataLayer.push({ ecommerce: null }) antes de cada push.

Como testar se o dataLayer está certo?

Use o modo de visualização do GTM, inspecione o dataLayer no console e confirme a chegada do evento no DebugView do GA4. Depois, compare um pedido de teste com o back-office.

O dataLayer funciona em site de página única?

Funciona, mas a documentação do Google sobre o dataLayer não detalha SPAs. Recomendamos enviar um evento a cada troca de rota e validar que ele ocorre uma vez por navegação.

Conteúdos Relacionados

Compartilhar esse post
Facebook
WhatsApp
LinkedIn
Leia também:

Mais lidas

Carregando posts...

Conteúdos Relacionados:

Receba conteúdos exclusivos e novidades

SEO, GEO, GA4, CRM e IA aplicados a e-commerce, direto no seu e-mail.

Analytikos

Estratégia e resultados baseados em dados. SEO, GEO, CRM e IA para e-commerce, de Itajaí (SC) para o Brasil.

© 2026 Analytikos. Todos os direitos reservados.
Rolar para cima