Pular para o conteúdo
Solicitar orçamentoOrçamento

Trackeamento

UTM no checkout da Kiwify e da Hotmart: como saber qual anúncio vendeu

O anúncio leva a UTM até a sua página, mas o botão de compra joga ela fora. Veja por que a venda chega sem origem e como levar a UTM até o checkout.

· 9 min de leitura

Ilustração de um caminho de luz que sai de um anúncio no celular, passa por uma página e chega a um cartão de checkout, levando etiquetas coloridas pelo caminho

Resumo rápido

  • A UTM do anúncio chega até a sua página, mas o botão de compra aponta para um link fixo do checkout, sem os parâmetros. Por isso a venda aparece sem origem.
  • A Kiwify e a Hotmart aceitam UTM no link do checkout. A Hotmart avisa que, em página própria, a origem só chega se o botão levar um link já com os parâmetros.
  • Um script curto na página copia as UTMs da URL para os links do checkout na hora do clique, e guarda os dados se a pessoa trocar de página.
  • No anúncio da Meta, use parâmetros dinâmicos com IDs. Na Hotmart, os códigos têm até 30 caracteres e não aceitam underline.

UTM no checkout da Kiwify e da Hotmart é a diferença entre saber e chutar qual anúncio vendeu. O problema mais comum é simples: o anúncio leva a UTM até a sua página, mas o botão de compra aponta para um link fixo do checkout, sem os parâmetros. A pessoa compra, e a venda aparece no relatório sem origem.

A própria Hotmart confirma isso na central de ajuda: quando a página de vendas é um site próprio, como um WordPress, chegar pela UTM não garante o repasse. A origem só é lida se o comprador clicar num link do checkout já carregado com os parâmetros. A saída é um script curto na página, que copia as UTMs da URL para os links do checkout na hora do clique.

A seguir, eu mostro onde a UTM se perde, o que a Kiwify e a Hotmart aceitam, como configurar o anúncio na Meta, o script que eu uso e como conferir se está funcionando.

Por que a venda chega sem origem#

UTM é um conjunto de parâmetros no fim do link (utm_source, utm_medium, utm_campaign, utm_term, utm_content) que diz de onde veio o clique. Quando o anúncio leva para a sua página, a UTM está lá, na barra de endereço. O problema é o passo seguinte.

O botão "Comprar" da página quase sempre tem um link fixo, copiado da plataforma: https://pay.kiwify.com.br/xxxx ou https://pay.hotmart.com/xxxx. Esse link não sabe de onde a pessoa veio. Ela clica, o checkout abre sem parâmetro nenhum, e a venda entra como se tivesse caído do céu.

Diagrama comparando dois caminhos: sem repasse, a UTM chega à página mas o botão de compra tem link fixo e a venda fica sem origem; com o script, o botão recebe a UTM no clique e a venda chega com a origem
O botão de compra é onde a UTM se perde

O resultado aparece no relatório de vendas: uma coluna de origem vazia, e você sem saber se a venda veio do anúncio A, do B ou do orgânico. Quando a campanha tem vários públicos e criativos, isso vira decisão no escuro.

O que a Kiwify e a Hotmart aceitam no checkout#

As duas plataformas aceitam parâmetros na URL do checkout, só que com regras um pouco diferentes.

Kiwify

Segundo a central de ajuda da Kiwify, o checkout recebe src, sck, utm_source, utm_medium, utm_campaign, utm_term, utm_content e s1, s2 e s3. As informações ficam em cookie e são usadas quando a compra acontece.

Tem um detalhe que quase ninguém sabe: para o rastreamento funcionar na sua página de vendas, a URL dela precisa estar cadastrada na aba Links do produto. Vale fazer isso mesmo usando o script.

Para ver o resultado, a Kiwify tem o filtro Parâmetros da URL em Vendas → Filtros, e cada pedido mostra os parâmetros na aba Cliente.

Hotmart

A central de ajuda da Hotmart separa três tipos de parâmetro:

  • UTM: o padrão do mercado, que também alimenta o Hotmart Analytics.
  • sck: da Hotmart, para campanhas do produtor que levam direto para a página de pagamento.
  • src: também da Hotmart, para links de afiliado e páginas de vendas alternativas.

Duas regras da Hotmart que derrubam muita UTM:

  1. Os códigos podem ter até 30 caracteres, e o underline (_) não é permitido nos valores, porque é reservado pelo sistema. A barra vertical (|) pode, e ajuda a separar informações num código só.
  2. O ponto de interrogação aparece uma vez só no link. Se o link do checkout já tem um parâmetro (como ?checkoutMode=10), os próximos entram com &. Mais de um ? quebra o rastreamento e pode até impedir a abertura do checkout.

O resultado aparece em Vendas → Gestão de vendas → Dashboard de Origem de Vendas, com abas para UTM, SCK e SRC.

Como configurar as UTMs no anúncio da Meta#

No Gerenciador de Anúncios, os parâmetros ficam no nível do anúncio, na seção Rastreamento, no campo Parâmetros de URL. A Meta oferece parâmetros dinâmicos, que se preenchem sozinhos com os dados do anúncio: {{campaign.id}}, {{adset.id}}, {{ad.id}}, os mesmos com .name, {{placement}} e {{site_source_name}} (que vira fb, ig, msg, an ou th).

Para funcionar nas duas plataformas, eu uso IDs em vez de nomes:

utm_source={{site_source_name}}&utm_medium=paid&utm_campaign={{campaign.id}}&utm_term={{adset.id}}&utm_content={{ad.id}}

Por que IDs:

  • Não quebram a regra da Hotmart. São números curtos, sem underline. Nomes de campanha costumam passar de 30 caracteres e ter _. O mesmo vale para {{placement}}, que vira valores como facebook_feed.
  • Não mudam. A Meta avisa que os parâmetros com nome usam o nome da primeira publicação. Se você renomear a campanha depois, a UTM continua com o nome antigo.

Para saber qual anúncio é qual, basta procurar o ID no Gerenciador. Se você vende só na Kiwify e prefere ler nomes no relatório, pode trocar os IDs por {{campaign.name}} e {{ad.name}}, sabendo que os espaços viram %20.

O script que leva a UTM até o checkout#

Este é o script que eu uso nas páginas que entrego. Ele faz três coisas: pega as UTMs (e também src e sck) da URL, guarda durante a visita para o caso de a pessoa trocar de página no site, e acrescenta tudo nos links do checkout da Kiwify e da Hotmart no momento do clique, sem apagar os parâmetros que o link já tem.

<script>
// Leva as UTMs da página até o checkout da Kiwify e da Hotmart
(function () {
  var CHAVES = ["utm_source", "utm_medium", "utm_campaign", "utm_term", "utm_content", "src", "sck"];
  var CHECKOUTS = ["pay.kiwify.com.br", "pay.hotmart.com"];

  // 1. Pega as UTMs da URL e guarda para a visita toda (se a pessoa trocar de página)
  var utms = {};
  try { utms = JSON.parse(sessionStorage.getItem("utms") || "{}"); } catch (e) {}
  var url = new URLSearchParams(location.search);
  CHAVES.forEach(function (k) { if (url.get(k)) utms[k] = url.get(k); });
  try { sessionStorage.setItem("utms", JSON.stringify(utms)); } catch (e) {}

  // 2. Acrescenta as UTMs nos links do checkout, sem apagar o que o link já tem
  function completa(link) {
    var destino;
    try { destino = new URL(link.href); } catch (e) { return; }
    if (CHECKOUTS.indexOf(destino.hostname) === -1) return;
    Object.keys(utms).forEach(function (k) {
      if (!destino.searchParams.has(k)) destino.searchParams.set(k, utms[k]);
    });
    link.href = destino.toString();
  }

  // 3. Na hora do clique, inclusive em botões que aparecem depois (pop-up, carrossel)
  document.addEventListener("click", function (e) {
    var link = e.target.closest && e.target.closest("a[href]");
    if (link) completa(link);
  }, true);
})();
</script>

Alguns cuidados que fazem diferença:

  • Onde colocar: no fim do HTML da página, antes de </body>. No WordPress, serve um bloco de HTML ou um plugin de código no rodapé. Se você usa o Cloudflare Zaraz, ele também funciona como ferramenta de HTML personalizado.
  • Por que no clique: botões que aparecem depois do carregamento, como os de pop-up, recebem as UTMs do mesmo jeito. E o script só mexe nos links do checkout, nunca nos outros.
  • Por que guardar na visita: a Meta lembra que o parâmetro vale para a primeira página. Se a pessoa navegar para outra página do site e só depois clicar em comprar, as UTMs continuam lá (na mesma aba).
  • Se o link já tem sck ou outro parâmetro, o script não sobrescreve. E ele monta a URL pelo próprio navegador, então nunca sai um segundo ?.

Como conferir se está funcionando#

Leva uns 5 minutos, antes de colocar dinheiro na campanha:

  1. Abra a sua página com UTMs de teste no fim do endereço: ?utm_source=teste&utm_campaign=teste.
  2. Clique no botão de compra. Na barra de endereço do checkout, os parâmetros utm_source=teste e utm_campaign=teste precisam aparecer.
  3. Volte, navegue para outra página do site (se tiver) e clique em comprar de novo. As UTMs continuam no checkout.
  4. Depois das primeiras vendas, confira no relatório: na Kiwify, em Vendas → Filtros → Parâmetros da URL; na Hotmart, no Dashboard de Origem de Vendas.

Se o passo 2 falhar, olhe primeiro se o script está mesmo na página (e fora do atraso de JavaScript) e se o botão é um link <a> para pay.kiwify.com.br ou pay.hotmart.com. Botão que abre o checkout por outro caminho, como um formulário, precisa de ajuste específico.

UTM e Pixel: um não substitui o outro#

O Pixel e a API de Conversões contam a história para a Meta: alimentam a otimização da campanha e o relatório do Gerenciador de Anúncios, com as janelas de atribuição da Meta. A UTM conta a história para a plataforma: cada venda no relatório da Kiwify ou da Hotmart leva a origem que chegou no checkout.

Os números nunca vão bater exatamente, e não precisam. A UTM é a sua conferência independente: se o Gerenciador diz que o anúncio A vende muito e a plataforma mostra pouca venda com o ID dele, vale olhar se o evento de compra está certo, como eu mostro no artigo sobre o Purchase ao gerar um Pix.

Conclusão: a origem tem que chegar no checkout#

UTM no anúncio não basta. Ela precisa sobreviver ao botão de compra, e isso não acontece sozinho em página própria. Com os parâmetros dinâmicos certos no anúncio, o script na página e a página cadastrada na Kiwify, cada venda passa a dizer de qual campanha, conjunto e anúncio veio.

Esse é um dos ajustes que eu faço no trackeamento das páginas que entrego: Pixel e API de Conversões conferidos, UTMs chegando no checkout e relatório batendo. Se as suas vendas chegam sem origem, me chame que eu olho a sua página e o seu checkout.

Perguntas frequentes#

Por que a Kiwify ou a Hotmart não mostram a UTM das minhas vendas?

Quase sempre porque a UTM fica na URL da sua página e o botão de compra aponta para um link fixo do checkout, sem os parâmetros. A plataforma só registra a origem que chega no checkout.

A Kiwify aceita UTM no checkout?

Aceita. Segundo a central de ajuda, o checkout recebe src, sck, utm_source, utm_medium, utm_campaign, utm_term, utm_content e s1 a s3, e guarda em cookie para a compra. A página de vendas também precisa estar cadastrada na aba Links do produto.

Qual é a diferença entre src, sck e UTM na Hotmart?

A UTM é o padrão do mercado. O sck é da Hotmart e serve para campanhas que levam direto para a página de pagamento. O src também é da Hotmart e é usado em links de afiliado e páginas de vendas alternativas.

Preciso de script se o anúncio leva direto para o checkout?

Não. Se o link do anúncio já é o do checkout, os parâmetros vão junto. O script é para quando o anúncio leva para uma página sua (WordPress, construtor ou código) com um botão para o checkout.

A UTM substitui o Pixel da Meta?

Não. O Pixel e a API de Conversões alimentam a otimização e o relatório da Meta. A UTM registra a origem de cada venda no relatório da própria plataforma. Os dois se completam.

Assuntos:utmkiwifyhotmartrastreamento de vendasmeta adssrcsck

Compartilhar

Jared Simplicio

Orçamento pelo WhatsApp

Suas vendas chegam sem origem na plataforma?

Eu configuro as UTMs dos seus anúncios, instalo o repasse até o checkout na sua página e confiro no relatório da Kiwify ou da Hotmart se a origem está chegando.

Chamar o Jared no WhatsApp

Resposta em horário comercial · Sem compromisso

Continue lendo

Todos os artigos