UTMs que chegam até o checkout: como não perder a origem da venda
UTM é o jeito mais simples de saber de onde veio uma venda: qual campanha, qual conjunto, qual anúncio. O problema é que ela costuma morrer no meio do caminho, entre a landing page e o checkout, e poucas operações conseguem levar as UTMs até o checkout.
Como a UTM se perde
O anúncio leva a pessoa para:
https://suaoferta.com.br/?utm_source=facebook&utm_campaign=lancamento&utm_content=video-03Daí ela:
- clica num botão que leva para
https://checkout.gateway.com/produto/123, sem os parâmetros; - navega para outra página do site e volta;
- sai e volta dois dias depois, direto pelo link salvo.
Em todos esses casos, a venda chega no gateway sem origem.
Passo 1: guardar os parâmetros na primeira visita
Assim que a página carrega, leia os parâmetros da URL e guarde num cookie do seu próprio domínio (cookie primário):
const params = new URLSearchParams(location.search);
const chaves = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term', 'fbclid', 'gclid'];
chaves.forEach((chave) => {
const valor = params.get(chave);
if (valor) {
document.cookie = `${chave}=${encodeURIComponent(valor)}; max-age=${60 * 60 * 24 * 30}; path=/; SameSite=Lax`;
}
});Assim, mesmo que a pessoa navegue ou volte depois, a origem continua guardada.
Passo 2: levar as UTMs até o checkout
Antes de mandar para o checkout, junte os parâmetros guardados ao link do botão:
document.querySelectorAll('a[href*="checkout"]').forEach((link) => {
const url = new URL(link.href);
chaves.forEach((chave) => {
const valor = lerCookie(chave);
if (valor && !url.searchParams.has(chave)) url.searchParams.set(chave, valor);
});
link.href = url.toString();
});Confira na documentação do seu checkout quais parâmetros ele aceita. Muitos aceitam as UTMs padrão, e alguns usam parâmetros próprios para rastreio, como src e sck na Hotmart.
Passo 3: um padrão de UTMs que não muda
Ferramenta nenhuma salva uma UTM bagunçada. Defina um padrão e use em todos os anúncios. No Meta, os parâmetros dinâmicos preenchem os nomes sozinhos:
utm_source=facebook
&utm_medium=paid
&utm_campaign={{campaign.name}}|{{campaign.id}}
&utm_content={{ad.name}}|{{ad.id}}
&utm_term={{adset.name}}|{{adset.id}}Com o ID junto do nome, você continua sabendo qual anúncio vendeu, mesmo que alguém renomeie a campanha depois.
Passo 4: conferir com uma compra de teste
Faça o caminho completo como um cliente: clique num link com UTMs, navegue, vá ao checkout e finalize um pedido de teste. Depois confira no painel do gateway se a venda chegou com a origem certa. Se não chegou, o problema está no passo 1 ou no 2.
Parece detalhe, mas sem isso você investe no anúncio e não sabe qual deles pagou a conta.
Quer isso funcionando na sua oferta?
Me conta o seu cenário em poucas linhas. Eu leio pessoalmente e te respondo pelo WhatsApp.