1. Início
  2. Blog
  3. UTM não funciona
Troubleshooting

UTM não está funcionando? 10 erros que quebram o rastreamento de campanhas

Você configurou os UTMs, rodou a campanha, mas os dados chegam errados ou simplesmente não aparecem. O rastreamento UTM tem mais pontos de falha do que parece. Aqui estão os 10 problemas mais comuns — e como diagnosticar cada um.

Erro 1: Parâmetros removidos por redirecionamentos

O redirecionamento é um dos maiores vilões do rastreamento UTM. Quando você usa uma URL que redireciona para outra, os parâmetros UTM podem ou não ser preservados — dependendo de como o redirecionamento foi configurado.

Cenários problemáticos:

  • URL curta que redireciona e descarta a query string
  • Domínio www → não-www (ou vice-versa) com redirecionamento mal configurado
  • HTTP → HTTPS sem preservação de parâmetros
  • Página com redirect 301 que não passa a query string

Como diagnosticar:

Use o DevTools (F12 → Network) e observe o campo de filtro para ver todos os redirects. Ou use uma ferramenta como o curl com o flag -L -v para acompanhar cada passo do redirect:

curl -L -v "https://seusite.com.br/lp/?utm_source=google" 2>&1 | grep -E "Location:|^>"

Como resolver:

Certifique-se de que todos os redirects preservam a query string. Teste a URL final com os UTMs antes de usar em uma campanha.

Erro 2: UTMs inconsistentes (maiúsculas, espaços, variações)

Parece simples, mas é um dos erros mais comuns — especialmente quando várias pessoas da equipe criam URLs UTM sem um padrão definido.

ProblemaExemploResultado nos relatórios
Case inconsistentegoogle vs Google2 sources diferentes
Sinônimospaid_social vs paidsocial2 mediums diferentes
Espaçosblack fridayCodificado como black%20friday
Nomes de campanha diferentes para a mesmablack_friday vs bf_2026Dados fragmentados

Como resolver:

Crie e mantenha um documento de nomenclatura compartilhado com toda a equipe. Use minúsculas, underscores e nomes descritivos. Considere usar um UTM builder que só permite valores do seu glossário pré-definido.

Erro 3: UTMs em links internos

Adicionar UTMs em links que apontam para outras páginas do próprio site é um erro técnico que distorce a atribuição. O Google Analytics, por exemplo, interpreta o clique em um link interno com UTM como início de uma nova sessão — apagando a fonte original do visitante.

Exemplo do problema: você posta no Instagram com UTM, o visitante chega à página inicial. No menu, um link para "Serviços" tem UTM. Quando o usuário clica, o GA4 considera que uma nova sessão começou — e a fonte original (Instagram) se perde.

Como resolver:

Use UTMs apenas em links externos — anúncios, e-mails, posts em redes sociais, parcerias. Nunca em links dentro do seu próprio site.

Erro 4: Encurtadores de URL removendo parâmetros

Alguns encurtadores de URL (bit.ly, TinyURL, encurtadores personalizados) podem não preservar a query string completa ao redirecionar.

Como diagnosticar:

Abra a URL encurtada em um navegador e verifique na barra de endereço se os parâmetros UTM aparecem depois do redirecionamento.

Como resolver:

Teste sempre o encurtador antes de usar em uma campanha. Prefira encurtadores que explicitamente preservam parâmetros. Para campanhas de alto volume, prefira URLs completas — a estética importa menos do que os dados.

Erro 5: Formulário na página errada (sem UTM na URL)

Se o script de captura de UTM lê apenas a URL da página atual, e o formulário está em uma URL diferente da landing page (sem UTMs), os campos virão vazios.

Exemplo:

  • Anúncio aponta para: /landing/?utm_source=google
  • Usuário clica em um botão e vai para: /contato/ (sem UTMs)
  • Formulário está em /contato/ — sem UTMs na URL atual

Como resolver:

Use um mecanismo que persiste os UTMs entre páginas (cookie, localStorage ou banco de dados server-side). Veja: Como descobrir de qual campanha veio um lead.

Erro 6: Campos ocultos não preenchidos antes do envio

Se você usa campos hidden no formulário e um script JavaScript para preenchê-los, o timing importa. Se o script executa depois da renderização do formulário — mas o usuário envia o formulário muito rápido — os campos podem estar vazios.

Também pode ocorrer em formulários multi-step do Elementor, onde campos de etapas anteriores podem ser resetados ao avançar para a próxima etapa.

Como diagnosticar:

Abra o DevTools → Console antes de enviar o formulário. Inspecione os valores dos campos hidden. Se estiverem vazios, o problema é no preenchimento.

Como resolver:

Garanta que o script executa no evento DOMContentLoaded e que os campos são preenchidos antes de qualquer interação do usuário. Uma integração nativa (como a do UTM Tracker DL com CF7 e Elementor) contorna esse problema registrando a conversão server-side, não dependendo de campos no formulário.

Erro 7: Navegação entre páginas antes da conversão

O visitante clica no anúncio, navega por duas ou três páginas do site, e chega ao formulário. Se a captura de UTM depende da URL atual, os parâmetros da landing page original já someram.

Esse não é um "erro" de configuração — é uma limitação de abordagens baseadas apenas em URL. A solução é usar persistência entre páginas.

Erro 8: Cache servindo URL sem UTMs

Em sites com cache agressivo, a versão em cache de uma página pode não receber os parâmetros UTM corretamente — dependendo de como o plugin de cache está configurado para lidar com parâmetros de query string.

Como diagnosticar:

Acesse o site com uma URL UTM e use o DevTools (Network → Headers) para verificar se o servidor retornou a página com X-Cache: HIT. Se sim, o cache pode estar interferindo.

Como resolver:

Configure o plugin de cache para não cachear páginas com parâmetros UTM, ou certifique-se de que o plugin de cache passa corretamente os parâmetros de query string para o WordPress. A captura server-side (PHP, no hook init) é menos afetada por cache de página do que scripts JavaScript que dependem da URL do navegador.

Erro 9: Scripts de otimização (defer/delay) atrasando captura

Se o script que lê e armazena UTMs tem defer ou delay configurado (por plugins como WP Rocket ou LiteSpeed Cache), ele pode executar depois que o formulário já foi renderizado — ou nem executar se o usuário interagir antes.

Como resolver:

Exclua o script de rastreamento das listas de defer/delay do plugin de cache. Ou use uma abordagem server-side, que é executada no PHP antes de qualquer JavaScript — e portanto não é afetada por essas configurações.

Erro 10: Testar com a mesma sessão que configurou

Esse erro é mais sutil: você acessa o site para configurar e testar, e usa a mesma aba do navegador para testar os UTMs. O problema é que a sessão e o cookie já existem — você pode estar vendo dados de uma visita anterior sem UTMs.

Como testar corretamente:

  1. Use sempre uma aba anônima (incógnito) para testes
  2. Acesse via URL com UTMs de teste: seusite.com.br/?utm_source=teste&utm_campaign=verificacao
  3. Preencha e envie o formulário
  4. Verifique se o lead apareceu com os UTMs corretos no painel
Diagnóstico mais fácil com rastreamento server-side Muitos desses erros (especialmente 5, 7, 8 e 9) são eliminados quando a captura de UTMs acontece server-side no PHP, ao invés de depender de JavaScript no navegador. O UTM Tracker DL captura os UTMs na requisição PHP e os armazena antes de qualquer JavaScript ser executado.

Perguntas frequentes

Como confirmar que os UTMs estão chegando na URL?
A forma mais simples: acesse o link UTM e observe a barra de endereço do navegador. Os parâmetros devem aparecer após o ?. Se desapareceram, algum redirecionamento os removeu. Se aparecem, o próximo passo é verificar se estão sendo capturados pelo seu sistema (formulário, plugin, GA).
Meus UTMs aparecem no Google Analytics mas não nos formulários — por quê?
O Google Analytics captura os UTMs automaticamente na primeira página visitada e os armazena na sessão do GA. O formulário, por outro lado, não tem acesso a esses dados do GA por padrão. Para que os UTMs cheguem ao formulário, você precisa de um mecanismo separado — cookie, localStorage ou plugin de rastreamento — que torna esses dados disponíveis para os campos do formulário.
Os UTMs aparecem nos meus e-mails de CF7 mas com valor vazio — por quê?
Os campos hidden do formulário têm valor vazio — o script JavaScript que deveria preenchê-los não funcionou corretamente. Verifique se o script está sendo carregado, se os IDs dos campos estão corretos, e se o script executa no timing certo (antes do envio do formulário). Teste em aba anônima com uma URL UTM de teste.