Em sites de serviço e de geração de leads, o envio de formulário é a conversão principal. Mesmo assim, é uma das medições mais erradas do GA4. O acionador nativo do Google Tag Manager (GTM) falha em formulários AJAX, a mesma submissão é contada duas vezes, tentativas com erro de validação viram “lead” e, pior, e-mails e telefones vazam para os relatórios.
Este guia mostra como escolher o método certo para cada tipo de formulário, configurar o evento generate_lead no GTM, marcá-lo como evento principal, validar no Preview e no DebugView e evitar os erros que distorcem a taxa de conversão. Os números dos exemplos são hipotéticos.
Antes de configurar: o que você precisa decidir
Existem duas decisões. A primeira é o que conta como sucesso: o clique no botão, a tentativa de envio ou a confirmação de que o lead foi recebido. Para o GA4, só a última interessa. A segunda é onde o sucesso fica visível: em uma página de agradecimento, em uma mensagem na mesma página ou em um evento emitido pelo código do formulário.
A resposta à segunda pergunta define o método. Antes de escolher, tenha em mãos o GA4 configurado e o GTM instalado, com acesso de edição às duas ferramentas.
Os métodos de rastreamento, comparados
Método Como funciona Pontos fortes Pontos fracos Confiabilidade Acionador de envio de formulário (nativo) O GTM escuta o evento de envio do navegador Sem código Tende a falhar em formulários AJAX e em páginas de aplicação de página única. Pode disparar com erro de validação se não houver verificação Média a baixa Página de agradecimento O lead é contado quando a página de confirmação carrega Simples e fácil de auditar Exige redirecionamento. Recarregar ou acessar a URL direto gera conversão falsa Alta Visibilidade do elemento O GTM dispara quando a mensagem de sucesso aparece Não depende de desenvolvedor Frágil a mudanças de layout e pode disparar duas vezes Média Evento no dataLayer O código do formulário emite um evento no sucesso Preciso, com controle total sobre os dados Depende de desenvolvedor ou de plugin Alta Medição otimizada do GA4 Coleta automática de form_start e form_submitUm clique para ativar Registra interação básica, sem garantia de sucesso, e parâmetros exigem dimensões personalizadas Baixa para leads
A leitura da tabela é direta: quando houver como escolher, prefira o evento no dataLayer ou a página de agradecimento. As outras opções servem para casos em que não há apoio de desenvolvimento. A avaliação de confiabilidade é nossa, e não classificação do Google.
Árvore de decisão
O fluxo acima resolve a maioria dos casos. A etapa mais problemática é a do formulário AJAX, porque o envio acontece sem recarregar a página, e o acionador nativo pode não perceber a submissão.
Método 1: acionador nativo de envio de formulário
Na documentação do GTM, o acionador de envio de formulário tem duas opções importantes. Aguardar tags adia o envio do formulário até que as tags dependentes disparem ou que um tempo limite expire. Verificar validação dispara a tag apenas quando o formulário é enviado com sucesso. A mesma página explica que você pode restringir o acionador a “Alguns formulários”, o que é recomendado para desempenho, e lista as variáveis incorporadas disponíveis (elemento, classes, ID, destino, URL e texto do formulário).
Passo a passo:
- No GTM, crie um acionador do tipo Envio de formulário.
- Marque “Aguardar tags” (com tempo limite) e “Verificar validação”.
- Em “Este acionador é disparado em”, escolha “Alguns formulários” e restrinja por ID do formulário ou por URL.
- Crie uma tag de evento do GA4 chamada
generate_leade associe o acionador.
A documentação não trata de formulários AJAX nem de aplicações de página única. Que o acionador nativo tende a falhar nesses casos é uma prática técnica geral, e deve ser confirmada no Preview. Se nada disparar, passe para um dos métodos seguintes.
Método 2: evento no dataLayer (o mais confiável)
Neste método, o código do formulário avisa o GTM quando o envio foi bem-sucedido. A documentação da camada de dados orienta a usar dataLayer.push com um nome de evento, a não sobrescrever a camada (use window.dataLayer = window.dataLayer || [];) e lembra que o nome do evento diferencia maiúsculas de minúsculas. Para entender a camada de dados em detalhe, veja o guia de dataLayer no GTM.
Exemplo genérico, para ser executado apenas quando o servidor ou a interface confirmar o sucesso:
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'form_lead_sucesso',
form_id: 'orcamento-home',
form_name: 'Orçamento'
});
No GTM, crie um acionador do tipo Evento personalizado com o mesmo nome (form_lead_sucesso) e uma variável de camada de dados para form_id e form_name. Depois, associe-o à tag de evento do GA4.
Exemplo com Contact Form 7
A documentação do plugin informa que, após o envio por AJAX, o plugin emite eventos no navegador, entre eles wpcf7mailsent (e-mail enviado), wpcf7invalid, wpcf7spam, wpcf7mailfailed e wpcf7submit (dispara sempre). Para contar só o sucesso, escute wpcf7mailsent:
document.addEventListener('wpcf7mailsent', function (e) {
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'form_lead_sucesso',
form_id: String(e.detail.contactFormId),
form_name: 'cf7'
});
}, false);
Atenção: o objeto e.detail também traz os valores digitados no formulário. Não copie e.detail.inputs para o dataLayer, porque isso levaria e-mail e telefone para o GTM e, de lá, para o GA4.

Método 3: página de agradecimento e visibilidade do elemento
Página de agradecimento. Crie um acionador de visualização de página com a condição “Caminho da página igual a /obrigado/” (ou uma regex ancorada como ^/obrigado/?$). É simples e fácil de auditar. O risco é a conversão falsa: quem recarrega a página ou digita a URL direto é contado. Mitigue com um tempo de vida na sessão (por exemplo, impedindo nova contagem na mesma sessão) ou, melhor, trocando para o método do dataLayer.
Visibilidade do elemento. O acionador dispara quando a mensagem de sucesso aparece. Restrinja ao seletor exato da mensagem de sucesso e dispare uma vez por página. Sem essas restrições, mensagens ocultas, reexibições e atualizações de layout geram contagens duplicadas. Os nomes exatos dos menus do GTM para esse acionador devem ser conferidos no seu contêiner.
Configurando o evento no GA4
O Google recomenda o evento generate_lead para quando o usuário envia um formulário online ou informações offline. Ele alimenta o relatório de aquisição de leads. Configure a tag de evento do GA4 com esse nome e os parâmetros form_id e form_name, sem dados pessoais. Se o lead tiver valor estimado, consulte a referência de eventos do GA4 para os parâmetros de valor e moeda. Os parâmetros específicos de generate_lead não foram confirmados na documentação aberta para este texto.
Três passos obrigatórios
- Registrar as dimensões personalizadas. Parâmetros como
form_ideform_namesó aparecem nos relatórios quando registrados como dimensões personalizadas, conforme a página de medição otimizada. Veja dimensões e métricas personalizadas no GA4. - Marcar como evento principal. Em Administrador, Eventos principais, marque
generate_lead. No pt-BR, a Ajuda do Google usa “eventos principais” para o que em inglês é “key events”. Veja também eventos-chave no GA4. - Conferir a Medição otimizada. A Medição otimizada pode coletar
form_start(primeira interação na sessão) eform_submit(envio). Se você usa uma tag própria, avalie desativar a coleta automática de interações com formulário para evitar duplicidade. Ela exige a detecção automática de eventos da tag do Google e não pode coletar dados pessoais.
Para criar o evento sem GTM, a Ajuda do GA4 descreve um tutorial de evento principal baseado no carregamento da página de confirmação. Pode levar de minutos a horas para ser aplicado.

Dados pessoais e consentimento
A orientação do Google sobre dados pessoais é clara: e-mail, telefone pessoal e documentos são PII. Não os envie em URLs, títulos de página, parâmetros de evento, dimensões personalizadas, parâmetros UTM nem em ID de usuário. Se um formulário redireciona para uma URL com o e-mail na query string, ajuste o redirecionamento. Nada disso é uma interpretação da LGPD: é política do Google. A adequação à lei exige revisão jurídica.
Sobre consentimento, o GA4 e o GTM trabalham com o Consent Mode, que inclui os sinais ad_user_data e ad_personalization. A página do GTM sobre a política da União Europeia os menciona. Na prática, sem o consentimento de armazenamento de analytics, o evento pode não aparecer no DebugView. Teste os dois cenários.
Como validar
Use o Preview do GTM e o DebugView. A documentação do DebugView indica ativar por Assistente de tags ou pelo parâmetro debug_mode: true. Atenção: definir false não desativa a depuração, é preciso remover o parâmetro.
Teste Resultado esperado Enviar o formulário corretamente A tag dispara uma vez, generate_lead aparece no DebugView com form_id e sem dados pessoaisEnviar com erro de validação A tag não dispara Enviar sem consentimento Comportamento conforme sua configuração de Consent Mode Recarregar a página de agradecimento Não conta de novo Verificar a Medição otimizada Sem duplicidade com a tag própria Marcar como evento principal O evento aparece em Tempo real e em Eventos principais
Se o resultado do teste for diferente do esperado, interrompa a publicação. Um acionador que dispara fora de hora distorce semanas de dados antes de alguém notar.
Exemplo numérico (hipotético)
Num mês fictício, a página do formulário recebeu 5.000 sessões. Houve 400 form_start, 120 tentativas de envio e 100 envios válidos.
- Taxa de conversão de sessão em lead = 100 ÷ 5.000 = 2,0%.
- Taxa de conclusão = 100 ÷ 400 = 25%.
- Se o acionador contar as 120 tentativas, a taxa aparece como 120 ÷ 5.000 = 2,4%, um erro de 20% sobre o valor real.
O erro parece pequeno, mas se propaga: o custo por lead de mídia paga fica 17% menor do que o real, e a decisão de escala sai errada. O mesmo vale para a análise de qualidade de dados. Quando o lead entra no CRM, ainda há uma segunda conta a fazer: a que liga o formulário à venda. O Google Ads descreve as conversões otimizadas para leads em enhanced conversions for leads, que envia dados do usuário com hash coletados no formulário e guardados no CRM. É um tema à parte, que exige base legal e consentimento.
Erros comuns
Esta seção reúne os erros por natureza. Cada um traz a causa, o efeito e a correção.
Erros de configuração
Erro Por que acontece Efeito Como corrigir Contar envio com erro de validação Acionador nativo sem “Verificar validação” Leads inflados e taxa de conversão acima do real Marcar a opção ou usar evento de sucesso no dataLayer Contar duas vezes Medição otimizada ativa e tag própria, ou dois acionadores Taxa de conversão duplicada Desativar a coleta automática ou ajustar o acionador Usar o acionador nativo em formulário AJAX Não há navegação nem envio tradicional Zero envios registrados Mudar para dataLayer ou página de agradecimento Esquecer “Aguardar tags” em formulário que redireciona O navegador muda de página antes da tag disparar Tag cancelada e perda de eventos Marcar “Aguardar tags” com tempo limite Sobrescrever o dataLayer Uso de window.dataLayer = [] no códigoPerda de eventos do GTM Usar window.dataLayer = window.dataLayer || []Nome do evento diferente entre código e acionador Erro de maiúscula ou digitação A tag não dispara Padronizar o nome e testar no Preview Parâmetros sem dimensão personalizada Registro nunca feito Relatórios sem form_idRegistrar as dimensões no GA4
Erros de interpretação e de privacidade
Erro Por que acontece Efeito Como corrigir Página de agradecimento acessível diretamente URL sem proteção Conversões falsas Impedir nova contagem na sessão ou usar dataLayer Visibilidade do elemento sem restringir o seletor Regra ampla demais Disparo na carga ou em reexibição Restringir à mensagem de sucesso e disparar uma vez Enviar e-mail ou telefone no evento Copiar todos os campos do formulário Violação da política do Google e risco de LGPD Enviar só identificadores do formulário Esquecer de marcar como evento principal O evento existe, mas não vira conversão Não aparece em relatórios de eventos principais nem no Google Ads Marcar em Eventos principais Deixar o debug_mode ligadoDepuração esquecida ao publicar Tráfego de teste misturado e depuração contínua Remover o parâmetro (não basta mudar para false)Ignorar o consentimento Testes só com cookies aceitos Perda de dados ou coleta sem base legal Testar com e sem consentimento Ler o lead sem olhar a qualidade Foco na contagem Volume alto e vendas baixas Cruzar com o CRM e com a taxa de qualificação
Em comum, os erros acima mostram que o rastreamento de formulário é um problema de definição, mais do que de ferramenta: o que conta como lead, onde o sucesso fica visível e quais dados podem sair do site.
Checklist
- Definição escrita do que é um lead válido.
- Método escolhido conforme o tipo de formulário.
- Tag
generate_leadcomform_ideform_name, sem dados pessoais. - Dimensões personalizadas registradas no GA4.
- Evento marcado como principal.
- Medição otimizada revisada para evitar duplicidade.
- Teste de sucesso, de erro de validação, de recarga e de consentimento.
debug_moderemovido após os testes.
Perguntas frequentes
Qual é o melhor método para rastrear formulário no GTM?
O evento no dataLayer emitido no sucesso do envio. Ele conta só o sucesso e dá controle sobre os dados. Se não houver apoio de desenvolvimento, a página de agradecimento é a alternativa mais auditável.
Por que o acionador de envio de formulário não dispara?
Em formulários AJAX, o envio acontece sem navegação tradicional, e o acionador nativo pode não capturá-lo. A documentação do GTM não trata desse caso, então confirme no Preview e, se necessário, mude para dataLayer.
O que é o evento generate_lead?
É o evento recomendado do GA4 para quando o usuário envia um formulário online ou informações offline. Alimenta o relatório de aquisição de leads e pode ser marcado como evento principal.
Preciso marcar generate_lead como evento principal?
Sim, se quiser tratá-lo como conversão nos relatórios e no Google Ads. No pt-BR, a Ajuda do Google chama de eventos principais o que em inglês é key events.
Posso enviar o e-mail do lead para o GA4?
Não. A política do Google proíbe enviar dados pessoais, como e-mail e telefone, em URLs, parâmetros de evento, dimensões personalizadas e ID de usuário. Envie apenas identificadores do formulário.
A Medição otimizada serve para rastrear leads?
Ela coleta form_start e form_submit, mas não garante que o envio foi bem-sucedido, e os parâmetros exigem dimensões personalizadas. Para leads, use um método próprio e evite duplicidade com a coleta automática.
Como testar antes de publicar?
Use o Preview do GTM para ver se a tag dispara uma vez, e o DebugView do GA4 para conferir o evento e os parâmetros. Teste envio válido, erro de validação, recarga da página e consentimento.



