← Todos os artigos

Blog

Por Que os Envios de Formulário Não São Rastreados como Conversão (e Como Corrigir)

envio de formulário não rastreadoconversão de formulário não disparaformulário de contato não rastreadogtm trigger form submit

"As solicitações estão chegando normalmente, mas o número de conversões não sai do lugar." Essa é uma das reclamações mais comuns em sites que usam o envio de um formulário como meta de conversão. A notificação por e-mail chega, então o envio claramente funcionou — mas as conversões no Google Ads e no GA4 permanecem em zero. Por trás disso há um conjunto de armadilhas de rastreamento específicas de formulários.

Alguma dessas situações parece familiar?

  • Os e-mails de solicitação chegam, mas o envio do formulário especificamente não é rastreado como conversão
  • Depois de enviar, a página nunca muda — uma mensagem de "Obrigado, recebemos" simplesmente aparece no lugar
  • O trigger "Form Submission" do GTM não dispara
  • O botão é clicado normalmente, mas não há sinal de que um evento de mensuração esteja sendo enviado
  • Em um formulário de múltiplas etapas, fica pouco claro qual etapa deve contar como meta

Este guia organiza os motivos pelos quais envios de formulário não são rastreados como conversão em cinco pontos de diagnóstico, e depois mostra como verificar no DevTools e no GTM Preview — além do design confiável que dispara no evento de um envio bem-sucedido.

Princípio básico: o rastreamento do formulário depende de como o envio acontece

A maioria das falhas de rastreamento de formulário se resume a uma coisa: o lado do rastreamento não consegue capturar como o envio está realmente sendo processado. A premissa antiga — "enviar o formulário carrega uma nova página" — simplesmente não se aplica a muitos formulários atuais.

Como o envio acontece O que o rastreamento consegue ver O que quebra
Navegação de página O carregamento da página de conclusão pode servir de gatilho Nenhuma navegação acontece, então nenhum gatilho chega
Envio via AJAX (sem navegação) A página não muda, então parece que "nada aconteceu" Tags disparadas por carregamento nunca disparam
Disparo de evento O evento de sucesso do envio pode ser capturado diretamente Um listener ausente perde o evento

O ponto principal: "o botão foi clicado" e "o envio foi bem-sucedido" são dois eventos completamente diferentes. Os pontos de diagnóstico 1–5 abaixo estão ordenados para eliminar esses casos de "como o envio acontece", de cima para baixo.

Diagnóstico 1: Um envio via AJAX não muda nada, então não há gatilho de conclusão

A maioria dos formulários de contato hoje não muda a página quando você aperta enviar. Nos bastidores, eles enviam os dados de forma assíncrona (AJAX) e mostram "Obrigado pelo seu envio" na mesma página. Ótimo para a experiência do usuário — um problema real para o rastreamento.

A maioria das tags de mensuração usa "uma nova página de conclusão foi carregada" como gatilho de disparo. Se nem a página nem a URL mudam, então, do ponto de vista do navegador, nada aconteceu, e a tag nunca dispara.

  • Depois do envio, a URL permanece a mesma e apenas a mensagem de conclusão é trocada
  • A conclusão aparece em um modal (pop-up), e a página em si nunca navega
  • "Enviado" é renderizado via JavaScript e nada mais

Nesse caso, você precisa de um design que dispare no evento de um envio bem-sucedido, não em um carregamento de página. Como criar esse gatilho é abordado no Diagnóstico 5. Para os pontos cegos do lado da página de conclusão, veja Por Que as Conversões da Sua Página de Agradecimento Não Estão Sendo Rastreadas.

Armadilha comum: se "a mensagem de conclusão aparece normalmente, mas nada é rastreado", suspeite primeiro de um envio via AJAX. Uma conclusão em que a URL nunca muda não pode ser capturada por uma tag disparada por carregamento.

Diagnóstico 2: Nenhum listener de evento está anexado, então o envio nunca é capturado

Mesmo que você tenha projetado tudo para "rastrear no evento de envio", se o listener que espera por esse evento não estiver corretamente anexado, nada acontece — naturalmente. É aqui que a intenção do design e a implementação se distanciam.

  • O script de rastreamento é executado uma vez, antes de o formulário existir na página, e nunca se anexa a um formulário injetado depois
  • O listener é anexado ao elemento errado por engano
  • O formulário é gerado dinamicamente (em um pop-up, ou após uma transição de tela em uma SPA), então o alvo ainda não existe no momento da tentativa de anexação

Para formulários que aparecem depois, anexar um listener "uma vez no carregamento da página" não é suficiente. Você precisa reanexar depois que o formulário aparecer, ou capturar o evento em um elemento pai (delegação de evento).

Armadilha comum: se "a solicitação da página inicial é rastreada, mas a solicitação do pop-up não é", é muito provável que não haja nenhum listener anexado ao formulário que aparece depois.

Diagnóstico 3: O trigger "Form Submission" do GTM não dispara

O Google Tag Manager (GTM) tem um trigger conveniente de "Form Submission", mas ele foi construído em torno de formulários HTML simples — e frequentemente não dispara em formulários controlados por JavaScript de hoje.

  • O formulário chama preventDefault() logo antes do envio para cancelar o envio nativo e mandar os dados com sua própria lógica (o "evento de submit" que o GTM espera nunca acontece)
  • A validação pausa o fluxo antes, fora de sincronia com o momento de detecção do GTM
  • O redirecionamento após o envio é rápido demais, e a tela muda antes que o trigger consiga rodar

Ou seja, "coloquei o trigger de Form Submission mas ele não dispara" geralmente não é um mau funcionamento — é que a construção do formulário e as premissas do trigger não coincidem. Para isolar falhas do GTM de forma mais ampla, veja O Que Verificar Quando o GTM Não Rastreia Conversões.

Armadilha comum: em um formulário controlado por JavaScript, não confie no trigger "Form Submission" — mude para enviar um evento customizado no sucesso do envio (Diagnóstico 5). Esse é o caminho confiável.

Diagnóstico 4: Confundir o "clique" no botão com o "envio" de fato

Como solução alternativa, às vezes as pessoas contam o "clique no botão de envio" como meta — mas isso distorce os números. Um clique e um envio bem-sucedido são eventos diferentes.

  • O botão foi pressionado, mas um erro de validação impediu o envio (clique contado, envio falhou)
  • O usuário clicou no botão repetidamente (uma solicitação contada várias vezes)
  • O processamento do lado do servidor falhou, mas só o clique foi registrado

Contar cliques tende a inflar o número acima da quantidade real de solicitações. A meta correta é o momento em que o envio é bem-sucedido — e para isso você precisa do design do Diagnóstico 5.

Armadilha comum: se "a contagem de conversões está claramente acima das solicitações reais", suspeite de que você está contando cliques no botão em vez de envios bem-sucedidos.

Diagnóstico 5: Como verificar, e como rastrear de forma confiável

Tudo que foi visto acima pode, em boa parte, ser isolado ao ver com seus próprios olhos se um sinal de mensuração realmente dispara ao enviar. Os passos são simples.

  1. Abra o formulário de contato e abra o DevTools do navegador
  2. Na aba "Network", filtre por conversion ou collect (GA4)
  3. Envie o formulário de verdade e observe se uma requisição de mensuração dispara nesse momento
  4. Verifique também o "Console" em busca de erros e se o evento de envio está acontecendo
  5. Se você usa o GTM, abra o modo Preview e veja se o trigger dispara no envio do formulário

E a base de um rastreamento confiável é sinalizar explicitamente, você mesmo, o evento de um envio bem-sucedido. Dentro do callback que roda quando o envio do formulário é bem-sucedido, envie um único evento customizado de rastreamento — essa abordagem contorna a maioria dos Diagnósticos 1–4, seja o formulário via AJAX, SPA ou modal.

Armadilha comum: com um bloqueador de anúncios ou proteção de rastreamento do navegador ativados, a própria requisição é bloqueada e parece que "não está disparando". Verifique em um estado limpo, com essas opções desativadas.

Ferramentas de formulário de terceiros incorporadas via iframe

Se o seu formulário vem de uma ferramenta de terceiros — HubSpot, Typeform, Formstack ou similar — e está incorporado na sua página dentro de um iframe, essa fronteira cria um ponto cego de rastreamento. O iframe é um contexto de navegação separado: o GTM rodando na sua página não consegue ver eventos dentro do iframe, então um trigger de Form Submission apontado para ele nunca vai disparar.

  • O formulário existe no documento próprio do iframe, e restrições de cross-origin impedem que os scripts da sua página leiam ou escutem seus eventos
  • Algumas ferramentas (por exemplo, o embed JavaScript do HubSpot) disparam um callback na página pai quando um formulário é enviado — mas apenas se você usar o embed baseado em script, não o iframe puro
  • Páginas de conclusão baseadas em redirecionamento dentro do iframe não disparam um evento de carregamento de página na sua página externa

A correção depende da ferramenta. Verifique se o seu provedor de formulário oferece um callback ou evento JavaScript no envio bem-sucedido (o onFormSubmitted do HubSpot, por exemplo). Se oferecer, dispare um evento no dataLayer a partir desse callback e faça sua tag de conversão disparar nele. Se a ferramenta só fornece um iframe sem hooks na página pai, considere mudar para o embed baseado em script dela ou usar uma abordagem server-side que escute o envio no backend.

Armadilha comum: "configurei o rastreamento no GTM mas nada dispara" em um embed do HubSpot ou Typeform é quase sempre um problema de fronteira de iframe. Verifique qual método de embed você está usando antes de depurar a tag em si.

Consentimento de cookies e restrições de privacidade derrubam conversões silenciosamente

Mesmo quando o rastreamento do seu formulário está tecnicamente correto, o consentimento de cookies e as restrições de privacidade do navegador podem impedir que a conversão seja registrada. Essa é uma categoria de falha diferente dos Diagnósticos 1–5 — a tag dispara, mas o dado não chega.

  • Visitantes que recusam o banner de consentimento de cookies (ou nunca interagem com ele) não terão cookies de anúncio gravados, então os pings de conversão ficam sem cookie ou são totalmente bloqueados
  • O Intelligent Tracking Prevention (ITP) do Safari e o Enhanced Tracking Protection do Firefox restringem ou apagam cookies de rastreamento por padrão, afetando cerca de 35–40% do tráfego web
  • Com o Consent Mode V2, quando ad_storage é negado, o Google recebe apenas pings anonimizados — as conversões são modeladas, não medidas diretamente, o que pode reduzir o volume reportado

O resultado: seu formulário dispara corretamente e as solicitações chegam, mas o Google Ads mostra menos conversões do que você realmente tem. A diferença tende a ser maior em regiões com regulação de privacidade rígida (UE/EEE, Reino Unido) ou em sites com alto tráfego de Safari/Safari mobile.

Para recuperar a atribuição perdida, ative o Consent Mode para que o Google possa modelar as conversões com consentimento negado, e configure as Enhanced Conversions (veja abaixo) para casar conversões usando dados first-party em vez de cookies. Para um olhar mais profundo sobre a perda específica do Safari, veja Safari ITP e Perda de Conversões.

Armadilha comum: se sua contagem de conversões cai toda vez que você atualiza ou torna mais rígido o banner de cookies, a causa não é um bug de rastreamento — é perda de dados relacionada a consentimento.

Enhanced Conversions: recuperando a atribuição que os cookies perdem

Formulários têm uma vantagem natural sobre muitos outros tipos de conversão: eles coletam dados first-party — endereços de e-mail, telefones, nomes — no exato momento em que a conversão acontece. As Enhanced Conversions usam esses dados para recuperar a atribuição que as restrições de cookies, de outra forma, apagariam.

Como funciona: quando o formulário é enviado com sucesso, a tag de conversão faz o hash dos dados fornecidos pelo usuário (e-mail, telefone, endereço) com SHA-256 e os envia junto com o ping de conversão. O Google compara o hash com dados de usuários logados para atribuir a conversão de volta ao clique no anúncio — sem necessidade de cookie de terceiros.

Para configurar no GTM:

  1. Ative as Enhanced Conversions no nível da conta no Google Ads (Conversões → Configurações)
  2. Edite sua tag de Google Ads Conversion Tracking no GTM e ative "Incluir dados fornecidos pelo usuário do seu site"
  3. Mapeie os campos do formulário (e-mail é o mínimo; telefone e nome melhoram as taxas de correspondência) para as variáveis correspondentes
  4. Publique e aguarde de 48 a 72 horas, depois verifique a saúde da tag na aba de Diagnóstico

Para formulários, as Enhanced Conversions costumam recuperar de 5% a 25% das conversões que, de outra forma, seriam perdidas, com o ganho exato dependendo de quantos dos seus visitantes estão logados no Google. Combinado com a modelagem do Consent Mode, isso fecha a maior parte da diferença entre "solicitações recebidas" e "conversões reportadas". Para os passos de verificação, veja Verificação de Enhanced Conversions.

Armadilha comum: se as Enhanced Conversions estão ativadas mas as variáveis de dados fornecidos pelo usuário não estão mapeadas para os campos corretos do formulário, os hashes ficarão vazios e as taxas de correspondência serão zero. Sempre verifique se a variável de e-mail realmente captura um valor no modo GTM Preview.

O que verificar na sua própria máquina não consegue lhe dizer

Enviar o formulário você mesmo para ver se ele dispara é útil, mas verificar apenas uma vez, na sua própria máquina, tem dois limites estruturais.

  1. Seu ambiente não é o ambiente dos seus visitantes. Você já consentiu no banner de cookies, e suas extensões e as condições de IP do escritório são diferentes. Pode disparar perfeitamente no seu envio, mas para um visitante em um ambiente diferente, o listener não está anexado ou a tag é perdida.
  2. Conversões envolvendo um clique em anúncio são difíceis de verificar. Para realmente ver "isso rastreia mesmo quando alguém que chegou via um anúncio envia o formulário", seria necessário clicar em um anúncio ao vivo para recriar o caminho — o que traz o risco de uma violação de política de anúncios como autoclique.

Julgar "dispara no meu envio, então está tudo bem" tende a deixar passar o problema de dados sumindo no caminho real que seus visitantes percorrem.

Checklist: verificando o rastreamento de envio de formulário

  • Enviou o formulário de verdade e confirmou que a requisição de mensuração disparou na aba Network do DevTools
  • Verificou o Console em busca de erros no momento do envio
  • Para envios via AJAX (sem navegação), confirmou que o design dispara no evento de sucesso do envio
  • Confirmou que há um listener anexado a formulários que aparecem depois (pop-ups, SPA)
  • Com o GTM, confirmou que o trigger dispara no envio do formulário no modo Preview
  • Confirmou que está contando "sucesso do envio", e não o clique no botão, como meta
  • Para formulários de múltiplas etapas, decidiu claramente qual etapa conta como meta
  • Verificou em um ambiente limpo, com bloqueadores de anúncios, proteção de rastreamento e exclusão de IP interno desativados
  • Para embeds de formulário de terceiros (HubSpot, Typeform etc.), confirmou que o método de embed expõe um callback na página pai — não um iframe puro sem hooks
  • Verificou que as configurações de consentimento de cookies e o Consent Mode não estão bloqueando silenciosamente o ping de conversão
  • Se as Enhanced Conversions estão ativadas, confirmou que as variáveis de dados fornecidos pelo usuário capturam valores reais no GTM Preview

Perguntas frequentes

P. Os e-mails de solicitação chegam, mas as conversões não são rastreadas. R. A notificação por e-mail é processamento do lado do servidor na sua ferramenta de formulário; a conversão é uma tag de mensuração do lado do navegador — caminhos diferentes. Geralmente o envio via AJAX não causa navegação e nada dispara (Diagnóstico 1), ou nenhum listener está anexado para capturar o envio (Diagnóstico 2). Envie de verdade e confirme o disparo.

P. Coloquei o trigger "Form Submission" do GTM mas ele não dispara. R. Em formulários controlados por JavaScript, o preventDefault() ou a validação costumam ficar fora de sincronia com a detecção do GTM, então ele não dispara (Diagnóstico 3). Mude para enviar um evento customizado no sucesso do envio — esse é o caminho confiável.

P. Por que nada é rastreado mesmo com a mensagem de conclusão aparecendo? R. É muito provável que seja um envio via AJAX ou um modal em que a URL nunca muda, então o gatilho de disparo da tag (um carregamento de página) nunca acontece (Diagnóstico 1). Você precisa de um design que dispare no evento de sucesso do envio.

P. Minha contagem de conversões está acima do número real de solicitações. R. Você pode estar contando cliques no botão em vez de envios bem-sucedidos (Diagnóstico 4). Cliques repetidos e envios falhos também são contados, inflando o número. Faça a meta ser o momento em que o envio é bem-sucedido.

P. Estou usando um embed do HubSpot (ou Typeform) e nada é rastreado. R. Se o formulário está incorporado como um iframe, o GTM na sua página não consegue ver eventos dentro dele — restrições de cross-origin bloqueiam o acesso. Mude para o embed baseado em script do provedor e use o callback JavaScript dele (por exemplo, o onFormSubmitted do HubSpot) para disparar um evento no dataLayer que sua tag de conversão dispare em cima.

P. O rastreamento do formulário funciona na minha máquina, mas o Google Ads mostra menos conversões do que as solicitações reais. R. O consentimento de cookies e as restrições de privacidade do navegador são a causa mais provável. Visitantes que recusam cookies ou usam Safari/Firefox podem enviar o formulário com sucesso enquanto o ping de conversão é bloqueado ou fica sem cookie. Ative o Consent Mode e as Enhanced Conversions para recuperar a diferença.

P. Em um formulário de múltiplas etapas, qual ponto deve ser a meta? R. Como regra, o sucesso do envio final. Disparar em um "Próximo" intermediário conta pessoas que abandonam depois, inflando o número. Se você quiser ver a conclusão de cada etapa, rastreie-as como eventos separados, mantidos distintos da meta.

Conclusão: rastreie formulários no evento de um envio bem-sucedido

Envios de formulário deixam de ser rastreados por alguns motivos: ① um envio via AJAX sem navegação, ② um listener ausente, ③ o trigger de Form Submission do GTM não disparando, ④ a confusão entre clique e envio, e ⑤ ambiguidade sobre a meta em formulários de múltiplas etapas. Todos são resolvidos ao deixar para trás o antigo gatilho de "carregamento de página" e adotar um design que sinaliza explicitamente, você mesmo, o evento de um envio bem-sucedido. Para o panorama completo de verificação, use o Checklist de Verificação de Rastreamento de Conversões.

Mas verificações de disparo na sua própria máquina têm limites. Ir além — confirmar que o envio do formulário é realmente registrado, no caminho real que seus visitantes percorrem, incluindo visitantes em ambientes diferentes, em produção — é o que "estar rastreando" realmente significa. Para o ponto de entrada do diagnóstico, veja Sem Conversões no Google Ads? Um Guia de Diagnóstico Passo a Passo.

O ConversionOK executa sua página ao vivo em um navegador independente e isolado e intercepta as requisições de mensuração realmente enviadas quando o formulário é submetido, depois as verifica — sem necessidade de clicar no seu próprio anúncio e sem interferência do seu ambiente de escritório. Comece com uma verificação estática gratuita para confirmar o ponto de entrada da sua mensuração.