17 de agosto de 2026

UTM em link interno: o erro clássico de atribuição que quase enganou nosso próprio Google Analytics

UTM em link interno: o erro clássico de atribuição que quase enganou nosso próprio Google Analytics

Se você monta campanha com UTM pra cliente, provavelmente já ouviu essa regra em algum treinamento de tráfego: nunca coloque utm_source, utm_medium ou utm_campaign num link que aponta para dentro do próprio site. É uma daquelas regras que todo mundo repete mas poucos param pra entender o porquê — até o dia em que ela pega alguém desprevenido. Pegou a gente, aqui no blog do igency, antes de qualquer dado real ser contaminado.

O que aconteceu

Quando ligamos a medição do nosso blog (GA4 entrou no ar em 12/08/2026), a especificação técnica mandava marcar os botões de "Criar conta" que aparecem dentro dos artigos com parâmetros de campanha — utm_source=blog&utm_medium=organic&utm_campaign=<slug-do-post> — pra saber quais posts realmente geram cadastro. Faz sentido: sem isso, não dá pra saber se o post sobre busca global converteu mais que o post sobre relatórios.

O problema é que esses botões não levam a um site diferente. Eles levam para / ou /auth/register, dentro do mesmo domínio. E o GA4, assim como qualquer ferramenta de atribuição baseada em UTM, não distingue "isso é uma campanha externa nova" de "isso é só um link dentro da própria casa" — ele lê o parâmetro na URL e, se o page_view daquela página carrega um utm_source diferente do que trouxe o visitante originalmente, ele troca a origem da sessão em andamento.

Na prática: um leitor chega pelo Google orgânico, lê o artigo, clica em qualquer CTA de cadastro do post — e o relatório do GA4 registra a sessão como blog / organic, não como o Google orgânico que trouxe o visitante de fato. A origem verdadeira se perde exatamente na sessão que mais importa: a que converteu.

Por que isso dói mais do que parece

Não é só um número errado num relatório qualquer. É um erro que aparece justamente onde você está olhando com mais atenção — na atribuição de conversão, a métrica que decide se um canal continua recebendo verba ou não. Se um cliente seu tem um blog ou uma central de ajuda com CTAs marcados desse jeito, o efeito é sistemático: todo tráfego pago, orgânico ou de indicação que passa por uma página interna antes de converter acaba sendo re-carimbado como se tivesse vindo daquela página interna. Campanha boa parece fraca, canal ruim parece bom — e a decisão de onde investir verba é tomada em cima de um dado que já nasceu torto.

O mecanismo técnico é simples de entender uma vez que você vê onde ele mora: qualquer evento de page_view disparado manualmente (comum em SPAs, onde a navegação entre páginas não recarrega o site inteiro) manda page_location: window.location.href para o GA4. Depois de um clique num link com UTM, essa URL já contém os parâmetros — então o parâmetro chega à ferramenta de analytics por um evento explícito do próprio site, não por uma visita nova vinda de fora. A partir daí é o GA4 fazendo exatamente o que foi projetado pra fazer: confiar no UTM que recebeu.

Como pegamos isso antes de virar dado ruim

A auditoria técnica que revisou os 11 commits da nossa implementação de medição (antes do deploy, exatamente pra evitar publicar algo que corrompesse dado desde o primeiro dia) simulou o fluxo completo: um clique real num CTA de blog, rastreando o que exatamente chega no page_view manual disparado depois da navegação. A URL pós-clique confirmou o problema — utm_source=blog presente onde não devia estar.

A correção certa não é simplesmente "tirar o UTM dos CTAs internos" — sem alguma marcação, a gente perde a informação de qual post gerou qual cadastro, e essa informação tem valor real (voltamos a decidir pauta baseado em post que converte, não em achismo). A correção certa, ainda em aberto, é desacoplar os dois usos: manter utm_* só para tráfego que realmente vem de fora, e usar um prefixo próprio (ref_source, ref_campaign) para marcar navegação interna — assim o GA4 preserva a origem verdadeira da sessão e a gente continua sabendo de qual post veio o clique, sem um pisar no outro.

O que isso ensina pro seu relatório de cliente

Se você usa UTM pra marcar campanha de cliente, vale a mesma pergunta que fizemos aqui: algum desses links marcados aponta pra dentro do próprio domínio do cliente? Um exemplo comum: link de e-mail marketing que aponta para uma landing, que por sua vez tem um botão interno pra outra página do mesmo site — se esse botão interno também estiver com UTM (copiado sem pensar do link original, ou herdado de um template), a sessão pode ser re-atribuída exatamente no meio do funil. Vale um grep rápido nos links internos de qualquer LP ou blog que você gerencia: se utm_source aparece em um href que começa com / ou com o próprio domínio, é sinal de alerta.

O igency não decide campanha nem mexe em GA4 pra você — isso é trabalho seu. O que a ferramenta resolve é o resto da operação em volta disso: manter o histórico de cada cliente, tarefa e cobrança num lugar só, confiável, pra sobrar tempo de auditar com calma coisa como essa antes que ela vire relatório errado na mão do cliente.

Quer mais tempo pra auditar seu tracking e menos tempo perdido com planilha de cliente?

Se sua agência ainda organiza clientes, tarefas e cobrança na mão, sobra menos tempo pra conferir se o relatório que você vai mandar pro cliente tem a origem certa. Se você tem até 3 clientes, o plano Free já inclui Kanban, aprovação por link e controle financeiro completos, sem limite de tempo e sem pedir cartão de crédito. Se sua agência já passou disso, o Pro libera clientes ilimitados por R$19,90/mês (ou R$199/ano) — com 30 dias de teste grátis antes da primeira cobrança: o cartão é pedido no cadastro, mas nada sai até o trial terminar, e você cancela quando quiser enquanto isso.

Criar conta grátis no igency →

#utm#atribuicao#google-analytics#gestao-de-trafego#bastidores#feedback-real

Gerencie clientes, tarefas e cobrança sem planilha

Grátis para até 3 clientes. No Pro, 30 dias de teste antes da primeira cobrança.

Testar o igency Pro grátis →