Google Tag Manager: como instalar e organizar o container sem quebrar a medição
Numa sexta à tarde, alguém da agência publica uma mudança no Google Tag Manager para testar um pixel novo. Na segunda, o GA4 mostra queda de lead; na outra segunda, o comercial reclama que a campanha parou de trazer gente. Ninguém sabe o que mudou, porque a versão se chama “Versão 87”, o container tem 140 tags, seis pessoas podem publicar e metade das tags tem nome de quem as criou. O GTM não quebrou nada sozinho: ele só fez o que mandaram, sem ninguém conferir. Este guia cobre o que é o GTM, o container web, a instalação (inclusive no WordPress), tags, acionadores e variáveis, a camada de dados (dataLayer), o modo de visualização e o Tag Assistant, versões e publicação, permissões, nomenclatura, Consent Mode dentro do GTM, quando ir para o servidor e a diferença entre Google tag e GTM.
dataLayer) nos momentos que importam, como o formulário aceito, tudo testado no modo de visualização antes de publicar, versões com nome que diz o que mudou, poucas pessoas com permissão de publicar e o Consent Mode ligado ao banner. O que é o Google Tag Manager
Uma tag é um trecho de código que manda um dado do site para algum lugar: o evento de lead para o GA4, a conversão para o Google Ads, o Lead para a Meta. Sem gerenciador, cada tag é código colado no site, e cada mudança depende de um desenvolvedor e de um deploy. O GTM é um sistema de gerenciamento de tags: você adiciona o código dele ao site uma vez e passa a configurar as tags pelo painel. Ele aceita tags do Google, de terceiros e tags personalizadas, e não tem custo.[1]
Conta e container
A conta representa a empresa, no nível mais alto. O container é o conjunto de tags de um site ou app: um por site, não um por página. O Google sugere nomear o container com o endereço principal do site. Os tipos são web (o mais comum), iOS, Android, AMP e servidor.[2] Para um site B2B, o ponto de partida é uma conta da empresa e um container web.
Tags, acionadores e variáveis
Todo o GTM se resume a três peças:
- Tag: o que enviar e para onde (Google tag, evento do GA4, conversão do Google Ads, pixel da Meta).
- Acionador (trigger): quando enviar. Carregamento de página, clique, envio de formulário, visibilidade de um elemento, evento personalizado vindo da camada de dados.
- Variável: o valor que muda a cada vez, como a URL da página, o texto do botão clicado ou o valor do lead. Há variáveis integradas (URL do clique, ID do formulário, entre outras) e variáveis definidas por você, como a variável da camada de dados, a constante e a tabela de consulta.
A ordem dos acionadores de carregamento importa. O GTM dispara primeiro Consent Initialization, depois Initialization, depois Page View (quando a página começa a carregar), DOM Ready (quando o HTML está montado) e Window Loaded (quando tudo, inclusive imagens e scripts, terminou).[6] Banner de consentimento vai no primeiro, o Google tag no segundo, e tag que lê algo da página espera pelo DOM Ready.
O acionador de envio de formulário tem duas opções que decidem se o lead é real: Aguardar tags segura o envio até as tags dispararem ou o tempo limite acabar, e Verificar validação faz o acionador disparar só quando o formulário é enviado com sucesso. Sem a segunda, ele dispara a cada tentativa de envio.[7]
Camada de dados (dataLayer)
A camada de dados é um objeto JavaScript que o site usa para entregar informação ao GTM de forma organizada, em vez de o GTM ter de “ler” a página.[9] É ela que separa uma medição que sobrevive a um redesenho de uma que quebra quando alguém troca a cor do botão. O site avisa “o lead foi aceito, com estes dados”, e o GTM escuta:
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'generate_lead',
form_name: 'orcamento',
currency: 'BRL',
value: 2500
});
No GTM, um acionador de evento personalizado escuta generate_lead, variáveis da camada de dados leem form_name e value, e a tag de evento do GA4 envia. Quatro regras do Google que evitam dor de cabeça:[9]
- Declare a camada de dados acima do código do container, com
window.dataLayer = window.dataLayer || [];, e nunca a sobrescreva comdataLayer = [...]. - O nome diferencia maiúscula de minúscula:
datalayer.pushnão funciona. - Mande sempre um nome de
eventjunto dos dados e escute com acionador de evento personalizado: o GTM processa as mensagens em fila, e um valor empurrado sem evento não tem garantia de estar disponível no próximo disparo. - Não use tag de HTML personalizado para instalar
gtag.jsnem para configurar consentimento: para as tags do Google existem modelos nativos, e o consentimento tem API própria.
Os nomes dos eventos seguem o que o GA4 recomenda (generate_lead, qualify_lead). A lista e os parâmetros estão em Como configurar o GA4, e como documentar o plano de eventos, em Event tracking.
Google tag ou Google Tag Manager
Confusão comum, porque os nomes se parecem. O Google tag é a tag única que manda dados para o Google Ads e o GA4; ele sozinho já mede visualização de página, clique e rolagem. O GTM é o gerenciador onde você configura o Google tag e todas as outras.[1]
| Google tag (gtag.js) direto no site | Google Tag Manager | |
|---|---|---|
| Como se instala | Um trecho de código em cada página | Dois trechos em cada página, uma vez |
| Para onde manda | Só produtos do Google | Google, terceiros e tags personalizadas |
| Como muda | Editando o código do site | Pela interface, sem deploy |
| Controle de versão | Depende de como o time versiona o código | Espaços de trabalho e versões do container |
| Server-side | Precisa do GTM para o container de servidor | Nativo |
| Custo | Gratuito | Gratuito |
O Google recomenda o GTM para quem cuida de tags do Google e de outras plataformas, e diz que, com o GTM em uso, não há necessidade de instalar gtag.js à parte.[1] Na prática: site institucional que só precisa de visita no GA4 vive bem com o Google tag. Site que mede lead, WhatsApp, Google Ads e pixel da Meta precisa do GTM.
Como instalar o container
No código do site
O GTM entrega dois trechos com o ID do container (começa com GTM-). O primeiro vai o mais alto possível dentro do <head>; o segundo, um <noscript>, logo depois da abertura do <body>, em todas as páginas.[3] Se o site empurra dados para a camada de dados no carregamento, a declaração dela vem antes do primeiro trecho.[9]
Com o container no ar, a primeira tag é o Google tag, com o ID do GA4 (G-) e o acionador Initialization – All Pages.[4] Para conversões do Google Ads pelo GTM, o Google pede o Google tag também para o Ads, além da tag de vinculação de conversões (Conversion Linker) e das tags de conversão.[11] O que medir como conversão está em Conversões no Google Ads.
No WordPress
Três caminhos, em ordem de preferência:
- No tema filho, com o primeiro trecho no gancho
wp_heade o segundo nowp_body_open. É o jeito que não depende de plugin e não some na atualização do tema. - Pelo Site Kit by Google, o plugin oficial do Google para WordPress, que conecta o Tag Manager sem editar código. O site precisa estar acessível publicamente (fora de modo manutenção e sem senha) para a configuração funcionar.[5]
- Por um plugin de inserção de código no cabeçalho e no rodapé. Funciona, mas é mais um plugin para manter.
Qualquer que seja o caminho, confira que o GA4 não está instalado também por outro plugin ou pelo próprio Site Kit. GA4 no GTM e no plugin ao mesmo tempo conta cada visita duas vezes.
Modo de visualização e Tag Assistant
Antes de publicar, clique em Visualizar. O GTM abre o Tag Assistant e o site conectado, que roda o rascunho do container como se já estivesse publicado. Você navega, envia o formulário e vê quais tags dispararam, em que ordem e com que dados. Só você vê, no mesmo navegador, ou quem recebe o link de compartilhamento da sessão.[10] O Tag Assistant também mostra a cobertura do Google tag no site (páginas com e sem a tag) e permite exportar a sessão de depuração.[11] Do lado do GA4, o mesmo teste aparece no DebugView.
Como conferir uma publicação
A visualização mostra que a tag disparou no seu navegador. Não mostra que o lead de todo mundo continua chegando. Para isso, compare o destino antes e depois de cada publicação:
Cobertura = eventos no destino / registros reais no sistema de origem (CRM) × 100
generate_lead e o CRM, 24 leads (cobertura de 92%). Na semana seguinte, 3 generate_lead para 21 leads no CRM: 14%. O comercial continuou recebendo lead; o que caiu foi a medição. A versão 42 renomeou a variável que o acionador usava. Voltar para a versão 41 leva dois minutos quando o histórico tem nome. | O que olhar no container | Sinal de problema | O que fazer |
|---|---|---|
| Tags pausadas ou sem acionador | Sobra de teste antigo | Documentar ou excluir |
| Tags de HTML personalizado | Muitas, ou fazendo o que um modelo nativo faz | Trocar por modelo; o Google recomenda minimizar código personalizado[8] |
| Indicador de tamanho nas versões | Acima de 70% | Consolidar tags com variáveis e remover o que não é usado[8] |
| Acionadores por classe CSS ou texto de botão | Quebram no redesenho | Migrar para evento da camada de dados |
| Histórico de versões | Nomes genéricos, publicação sem descrição | Padronizar nome e descrição |
| Usuários com permissão de publicar | Muitos, ou gente que saiu | Revisar a cada trimestre |
Limites e padrões oficiais
| Item | Valor oficial | Fonte |
|---|---|---|
| Custo do GTM e do Google tag | gratuitos | Tag Manager Help[1] |
| Tipos de container | web, iOS, Android, AMP e servidor | Tag Manager Help[2] |
| Posição do código | primeiro trecho o mais alto possível no <head>; segundo logo após a abertura do <body> | Tag Manager Help[3] |
| Acionador do Google tag | Initialization – All Pages | Tag Manager Help[4] |
| Ordem dos acionadores de página | Consent Initialization → Initialization → Page View → DOM Ready → Window Loaded | Tag Manager Help[6] |
| Espaços de trabalho | o padrão + 2 adicionais (versão gratuita); ilimitados no 360 | Tag Manager Help[13] |
| Permissões de conta | Usuário ou Administrador | Tag Manager Help[14] |
| Permissões de container | Ler, Editar, Aprovar ou Publicar | Tag Manager Help[14] |
| Administradores recomendados | ao menos 2 ativos; conta gerida por alguém da empresa, não da agência | Tag Manager Help[14] |
| Fluxo de aprovação antes de publicar | só no Tag Manager 360 | Tag Manager Help[12] |
| Versão | criada a cada publicação; o container nasce com a “Version 1 – Empty Container” | Tag Manager Help[12] |
| Indicador de tamanho do container | otimizar acima de 70% | Tag Manager Help[8] |
| Tipos de consentimento do Consent Mode | ad_storage, ad_user_data, ad_personalization, analytics_storage | Tag Manager Help[15] |
| Tagueamento no servidor | dois containers: web (no site) e servidor (na nuvem) | Tag Manager Help[16] |
Versões, permissões e nomenclatura
Espaço de trabalho, versão e publicação
Toda mudança acontece num espaço de trabalho (workspace). Na versão gratuita há o padrão e mais dois; eles servem para duas pessoas trabalharem sem uma publicar o rascunho inacabado da outra.[13] Quando você envia, pode publicar e criar versão ou só criar versão. A versão é a foto do container naquele momento, e é ela que permite voltar atrás: em Versões, você publica de novo uma versão anterior ou a define como a mais recente para seguir editando.[12] O Google pede nome e descrição que digam o que mudou.[12]
Permissões
Na conta, a pessoa é Usuário ou Administrador. No container, pode Ler, Editar, Aprovar ou Publicar.[14] O próprio Google alerta: com um administrador só, a empresa pode perder o acesso às tags; mantenha ao menos dois, e a conta gerida por alguém da empresa, não por uma agência.[14] A regra que uso: agência e freelancer com Editar, no máximo Aprovar; Publicar fica com duas pessoas da casa, que conferem antes de subir.
Nomenclatura
O Google não impõe padrão de nome. O que funciona é um formato que diga, lendo só o nome, o destino, o tipo e o que faz. Um exemplo de convenção:
| Peça | Formato | Exemplo |
|---|---|---|
| Tag | Destino – Tipo – O que faz | GA4 – Evento – generate_lead |
| Tag | Destino – Tipo – O que faz | Google Ads – Conversão – Lead qualificado |
| Acionador | Tipo – Condição | Evento personalizado – generate_lead |
| Acionador | Tipo – Condição | Clique – Link WhatsApp |
| Variável | Tipo – Nome | DLV – form_name |
| Versão | Data – O que mudou | 2026-09-30 – generate_lead com value e currency |
Consent Mode dentro do GTM
O GTM tem três recursos para consentimento. O acionador Consent Initialization – All Pages, que já vem em todo container web e dispara antes de qualquer outro, é onde vai a tag da plataforma de consentimento (o banner) ou a tag que define o padrão. As configurações de consentimento de cada tag mostram as verificações integradas (as tags do Google já se ajustam sozinhas) e permitem exigir consentimento adicional para tags de terceiros. E a Visão geral do consentimento, ativada nas configurações do container, lista quais tags ainda estão com consentimento “não definido”.[15] Os tipos são ad_storage, ad_user_data, ad_personalization e analytics_storage, além de functionality_storage, personalization_storage e security_storage.[15] Várias plataformas de consentimento têm modelo pronto na galeria de modelos da comunidade.[15] O que o banner precisa ter para a LGPD está em Modo de consentimento.
Quando ir para o servidor
No tagueamento no servidor (server-side), o container web fica só com o que coleta o evento, e um container de servidor, numa nuvem sua, recebe tudo e repassa para Google, Meta e outros destinos. O Google aponta três ganhos: menos código de terceiros no navegador, controle do que sai (para filtrar dado pessoal) e validação do dado antes do envio.[16] Também é uma saída para container grande demais: mover tags para o servidor reduz o peso no site.[8] Vale quando há investimento em mídia otimizada por conversão e o container web já está organizado; servidor em cima de container bagunçado só entrega o erro mais rápido. Custos, domínio e consentimento estão em Rastreamento server-side.
Como implementar na prática
Onde cada peça mora
dataLayer.push disparado pelo site no sucesso do formulário, no clique do WhatsApp e em outras ações. É o que não quebra no redesenho.
Quem precisa entrar
- 1 Faça o inventário: o que o site já carrega direto no código (GA4, pixel, chat) e o que está no GTM. Tudo que for tag de marketing deve morar num lugar só.
- 2 Crie ou assuma a conta com e-mail da empresa, um container web por site, e garanta dois administradores da casa.
- 3 Instale os dois trechos em todas as páginas, com a camada de dados declarada antes, e remova as tags duplicadas do código ou dos plugins.
- 4 Configure o consentimento primeiro: modelo do banner no acionador Consent Initialization e padrão definido antes das demais tags.
- 5 Suba o Google tag no acionador Initialization – All Pages e, se houver Google Ads, a vinculação de conversões.
-
6
Peça ao dev os eventos de negócio na camada de dados (
generate_leadno sucesso do formulário, clique no WhatsApp) e crie acionadores de evento personalizado para eles. - 7 Nomeie tudo pela convenção e documente o plano de eventos fora do GTM.
- 8 Teste na visualização e no DebugView, com aceite e recusa de cookies, no computador e no celular.
- 9 Publique com nome e descrição e compare o evento no destino na semana seguinte.
- 10 Revise a cada trimestre: tags sem uso, HTML personalizado, indicador de tamanho e quem pode publicar.
Armadilhas comuns
Os erros que mais encontro quando abro o GTM de uma empresa para reorganizar a medição.
Acionador de envio de formulário que nunca dispara, ou dispara sempre
O acionador de envio de formulário do GTM depende de o formulário enviar do jeito tradicional. Formulário que envia por JavaScript sem recarregar, formulário em pop-up e formulário dentro de iframe de outra plataforma costumam não disparar nada. No outro extremo, com “Verificar validação” desligado, o acionador conta cada tentativa, inclusive a com campo inválido.[7] A correção que não quebra é o site empurrar generate_lead para a camada de dados no retorno de sucesso do envio. O que fazer quando o lead nem chega ao CRM está em Formulário no CRM.
Acionador preso ao visual do site
“Clique em elemento com classe btn-verde” funciona até o redesenho. Aí o botão muda de classe, o acionador para e ninguém é avisado. Já vi medição de WhatsApp parada por meses assim. Use o que é estável (a URL do link, como wa.me, ou um atributo de dados colocado pelo dev para a medição) e, para o que é negócio, evento na camada de dados. Mais sobre rastrear o WhatsApp em WhatsApp com rastreio.
Publicar sem visualizar, com versão sem nome
A mudança é pequena, a pessoa publica direto, e a versão fica com o nome automático. Duas semanas depois, o lead some do GA4 e ninguém sabe qual das oito publicações causou. O GTM guarda todas as versões e quem publicou cada uma, e permite voltar a qualquer uma.[12] Mas voltar exige saber para qual. Nome e descrição em toda versão, e comparação do evento no destino na semana seguinte.
A conta é da agência
A agência criou a conta no e-mail dela, e ninguém da empresa é administrador. Quando o contrato acaba, o acesso vai junto, e o site segue carregando um container que ninguém da casa consegue editar. O Google recomenda dois administradores ativos e a conta gerida por alguém da organização, não de agência externa.[14] Se esse é o seu caso, peça agora a transferência da administração, enquanto a relação está boa.
HTML personalizado para tudo
O container tem 30 tags de HTML personalizado, entre elas uma com o gtag.js colado e outra com o consentimento escrito à mão. O Google é direto: não use HTML personalizado para instalar gtag.js nem para configurar consentimento, e minimize código personalizado em geral, porque o modelo nativo é mais eficiente.[9][8] Código colado também é o lugar por onde entra script de terceiro que ninguém revisou. Troque por modelo nativo ou da galeria sempre que existir.
Tag disparando antes do banner
O banner está no acionador Page View e o Google tag no Initialization. Resultado: a tag dispara antes de saber o que o visitante escolheu. O Consent Initialization existe para garantir que o consentimento seja definido antes de qualquer outro acionador.[15] Banner e padrão de consentimento vão nele, e tags de terceiros sem verificação integrada recebem “exigir consentimento adicional”. Abra a Visão geral do consentimento e confira que nenhuma tag ficou “não definida”.
O tema sobrescreve a camada de dados
Um plugin ou o tema declara dataLayer = [...] depois do container. Tudo o que foi empurrado antes some, inclusive os dados que o GTM usaria no carregamento. O Google alerta para isso: declare sempre com window.dataLayer = window.dataLayer || []; e adicione com push.[9] O sintoma é variável da camada de dados vazia na visualização, só em algumas páginas.
Checklist de implementação
FAQ
Perguntas frequentes sobre o Google Tag Manager
As dúvidas que mais aparecem de quem instala ou herda um container.
Saber quando uma publicação quebrou a medição
O GTM guarda cada versão, mas não avisa quando uma delas faz o lead sumir do Google Analytics. O Incuca Intelligence junta o Google Analytics, os anúncios e o CRM num lugar só e mostra quando a medição quebra, antes de a campanha passar semanas otimizando no escuro. Se o container precisa de reorganização, camada de dados ou Consent Mode, o time da Incuca monta.
Referências
- [1] Tag Manager Help. Google Tag Manager vs. gtag.js (comparação, recomendação e custo). https://support.google.com/tagmanager/answer/7582054
- [2] Tag Manager Help. 1. Criar uma conta e um container (tipos de container). https://support.google.com/tagmanager/answer/6103696
- [3] Tag Manager Help. 2. Instalar um container web (posição dos dois trechos de código). https://support.google.com/tagmanager/answer/14847097
- [4] Tag Manager Help. 3. Adicionar o Google tag no Google Tag Manager (acionador Initialization – All Pages). https://support.google.com/tagmanager/answer/14842872
- [5] Tag Manager Help. Plugin Site Kit (WordPress): configurar o Google tag. https://support.google.com/tagmanager/answer/11898619
- [6] Tag Manager Help. Acionadores de visualização de página (ordem de precedência). https://support.google.com/tagmanager/answer/7679319
- [7] Tag Manager Help. Acionador de envio de formulário (Aguardar tags e Verificar validação). https://support.google.com/tagmanager/answer/7679217
- [8] Tag Manager Help. Gerenciar o tamanho e a eficiência do container (indicador acima de 70%, código personalizado, server-side). https://support.google.com/tagmanager/answer/2772488
- [9] Google for Developers, Tag Platform. The data layer (instalação, processamento em fila e solução de problemas). https://developers.google.com/tag-platform/tag-manager/datalayer
- [10] Tag Manager Help. Visualizar e depurar containers. https://support.google.com/tagmanager/answer/6107056
- [11] Tag Manager Help. Solucionar problemas com o Tag Assistant (Google tag, Conversion Linker, cobertura de tags). https://support.google.com/tagmanager/answer/10039345
- [12] Tag Manager Help. Publicação, versões e aprovações. https://support.google.com/tagmanager/answer/6107163
- [13] Tag Manager Help. Espaços de trabalho. https://support.google.com/tagmanager/answer/7059647
- [14] Tag Manager Help. Gerenciar usuários e permissões. https://support.google.com/tagmanager/answer/6107011
- [15] Tag Manager Help. Suporte ao modo de consentimento no Tag Manager (Consent Initialization, configurações e tipos de consentimento). https://support.google.com/tagmanager/answer/10718549
- [16] Tag Manager Help. Tagueamento no cliente vs. tagueamento no servidor. https://support.google.com/tagmanager/answer/13387731