O formulário é a conversão mais importante de metade dos sites do Brasil. E é também a interação mais mal medida de todas.
O motivo é técnico: não existe um jeito único de um formulário funcionar. Envio nativo, preventDefault com AJAX, iframe de terceiro, SPA que troca de tela sem recarregar. Cada arquitetura quebra um método de rastreio diferente, e o time de marketing só descobre quando o número de leads do GA4 não bate com o CRM.
Este guia organiza os 5 métodos de form tracking com GTM, do mais simples ao mais robusto, com o critério de escolha para cada cenário e o teste que valida antes de confiar.
Antes de tudo: a regra de ouro
Meça o envio, não a intenção. Clique no botão "Enviar" não é lead: formulário com erro de validação dispara o clique e não envia nada. O evento certo captura a confirmação do envio, e o nome certo no GA4 é o evento recomendado generate_lead (ou form_submit para formulários que não são lead), para conversar com relatórios e mídia.
E a segunda regra: o rastreio nativo de formulários da medição aprimorada do GA4 não é confiável para conversão que importa. Ele dispara em falsos positivos e falha em formulários dinâmicos. Conversão de verdade se mede pelo GTM com método escolhido de propósito.
Método 1: acionador de envio de formulário (o nativo do GTM)
O acionador "Envio de formulário" escuta o evento submit padrão do navegador. Configuração em minutos: no GTM, crie uma nova tag de evento do GA4 com o nome generate_lead e o Page Path como parâmetro para saber de onde veio o envio:
E o acionador do tipo Envio de formulário, disparando em todos os formulários (ou filtrado por Form ID/página):
Quando funciona: formulários HTML clássicos com envio nativo e recarregamento de página.
Quando falha: sempre que o desenvolvedor usou event.preventDefault() para processar o envio via JavaScript, o padrão da web moderna. O submit nativo nunca acontece, o acionador nunca dispara e o GTM fica surdo. A explicação técnica completa está no nosso guia de preventDefault.
Teste antes de confiar: preview do GTM aberto, envie o formulário de verdade. Se o evento gtm.formSubmit não aparecer, este método está descartado para esse formulário.
Método 2: push na camada de dados (o padrão profissional)
O desenvolvimento dispara um push no callback de sucesso do envio:
javascriptwindow.dataLayer.push({ event: "form_submission", form_id: "contato", form_destination: "/obrigado" });
O GTM escuta com acionador de Evento Personalizado e a tag de GA4 envia o generate_lead com os parâmetros.
Quando funciona: sempre. É o único método que mede o envio confirmado (o push sai depois do sucesso da requisição), funciona com preventDefault, AJAX e SPA, e carrega contexto rico.
O custo: exige uma linha de código do desenvolvimento por formulário. É o preço da confiabilidade, e a especificação de camada de dados é o documento que viabiliza.
Se você só puder implementar um método no site inteiro, é este.
Método 3: elemento de confirmação ou página de obrigado
Quando não há acesso ao código, mede-se a consequência do envio: o acionador de visualização de página na URL de obrigado, ou o acionador de Visibilidade de Elemento na mensagem de sucesso ("Recebemos seu contato").
Quando funciona: fluxos com página de obrigado dedicada ou mensagem de sucesso consistente.
Quando falha: página de obrigado acessível por link direto (infla com curiosos e recargas: use trava por referrer ou por sessão), e mensagens de sucesso que mudam de layout a cada ajuste de CSS, quebrando o seletor silenciosamente.
Método 4: escuta do AJAX (interceptação de requisição)
Para sites onde o formulário envia via fetch/XHR e o desenvolvimento não pode ajudar, um listener via HTML personalizada intercepta a resposta da requisição de envio e empurra o push na camada de dados quando o status é de sucesso.
Quando funciona: como último recurso técnico competente, mede envio real sem tocar no código do site.
O custo: é JavaScript customizado vivendo no GTM, sensível a mudanças no endpoint e mais difícil de manter. Documente ou pague em arqueologia depois.
Método 5: formulários de terceiros (HubSpot, RD, Typeform e iframes)
Formulários embedados de plataformas de marketing têm dois cenários:
Com callback ou evento próprio: HubSpot, por exemplo, expõe eventos JavaScript de envio que o GTM escuta, caminho que detalhamos no guia de formulários HubSpot via GTM.
Dentro de iframe: o GTM da página não enxerga o que acontece dentro de um iframe de outro domínio. A solução é o postMessage do iframe para a página (quando a plataforma oferece) ou o GTM instalado dentro do iframe, tema do nosso guia de rastreio em iframes.
A regra: nunca assuma que o formulário de terceiro "já está medido". Valide no preview como qualquer outro.
Qual método usar: a tabela de decisão
| Cenário | Método |
|---|---|
| Formulário HTML clássico, envio nativo | 1 (acionador nativo), validado no preview |
| Site moderno, acesso ao desenvolvimento | 2 (dataLayer no callback de sucesso) — o padrão |
| Sem acesso ao código, com página/mensagem de obrigado | 3 (confirmação), com travas |
| Sem acesso ao código, sem confirmação estável | 4 (escuta de AJAX), documentado |
| Formulário de plataforma terceira ou iframe | 5 (callback da plataforma ou GTM no iframe) |
E em todos os cenários, o fechamento é o mesmo: preview do GTM + DebugView do GA4 com um envio real antes de publicar, e o evento marcado como key event só depois de validado, porque conversão errada treina a mídia contra o alvo errado.
Perguntas frequentes sobre rastreio de formulários
Por que meu formulário não dispara evento no GTM? Na maioria dos casos, porque o site usa event.preventDefault() e o envio nativo que o acionador do GTM escuta nunca acontece. A solução é o push na camada de dados no callback de sucesso, ou um dos métodos alternativos deste guia.
O rastreio de formulários da medição aprimorada do GA4 é confiável? Não para conversões que importam. Ele gera falsos positivos e falha em formulários dinâmicos. Use-o no máximo como sinal secundário, nunca como key event.
Qual nome de evento usar para formulários no GA4? generate_lead para formulários de contato/lead (é o evento recomendado do Google, com integração nativa com relatórios e mídia) e form_submit para os demais, sempre com parâmetros de identificação do formulário e da página.
Devo medir o clique no botão de enviar? Como métrica auxiliar de fricção (quantos tentam vs quantos conseguem), pode. Como conversão, nunca: clique com erro de validação não é lead.
Como medir formulário dentro de iframe? O GTM da página não enxerga iframes de outros domínios. Os caminhos são o postMessage da plataforma para a página ou a instalação do GTM dentro do próprio iframe.
Como validar se o rastreio está correto? Envio real com o preview do GTM aberto (o evento dispara?) e o DebugView do GA4 (chegou com os parâmetros certos?). Só depois disso o evento vira key event e a versão é publicada.

Lucian Fialho
Fundador e CTO da Métricas Boss, com sólido background em tecnologia, tendo passado por empresas como Comprafacil.com e Leader.com. Atuou no desenvolvimento de lojas como Globo, Olimpíadas do Rio, Ipiranga Shop, entre outras.
Publicado em 6 de julho de 2026