HX CORP · Integração de rastreamento

Tag de Purchase no Google Tag Manager

Uma tag simples na página de compra aprovada, disparando junto com os pixels que vocês já usam. Ela envia os dados de atribuição do clique para o nosso servidor e melhora a atribuição das vendas nos gerenciadores de anúncio. Instalação em menos de 5 minutos.

1O que é e por que

Contexto rápido antes do passo a passo.

Quando alguém clica num anúncio (TikTok, Meta, Google) e compra, o navegador guarda identificadores do clique em cookies e na URL. Hoje esses identificadores se perdem no caminho até a venda, e o gerenciador de anúncios não consegue ligar a compra ao anúncio que a gerou.

2Instalação no GTM

Dois passos, no mesmo container onde já ficam os pixels da página de obrigado.

Criar a tag

No GTM: TagsNova → tipo HTML personalizado. Nomeie como preferir (sugestão: HX - Beacon Purchase) e cole o código da seção 3 abaixo.

Definir o acionador

Use o mesmo acionador de purchase / compra aprovada que já dispara os pixels na página de obrigado ou confirmação. Nada além disso: sem acionador de pageview genérico, só o evento de compra.

Opcional, recomendado: dados da transação

Se o dataLayer de vocês tiver os dados da compra, substitua os null marcados com // OPCIONAL no código pelas variáveis de vocês (ex.: {​{DLV - email}}). Com email ou telefone o cruzamento com a venda fica exato. Sem eles a tag continua valendo, o cruzamento é feito por horário e valor.

Publicar

Salve, teste no modo Preview se quiser (seção 4) e publique o container.

3O código da tag

Copie e cole inteiro no campo HTML da tag.

<script>
(function(){
  function ck(n){var m=document.cookie.match('(?:^|; )'+n+'=([^;]*)');return m?decodeURIComponent(m[1]):null;}
  function qp(n){try{return new URLSearchParams(location.search).get(n)}catch(e){return null}}
  var d={
    event:'purchase',
    order_id: null,   // OPCIONAL: id do pedido, via variavel do dataLayer
    email: null,      // OPCIONAL: email do comprador
    telefone: null,   // OPCIONAL: telefone do comprador
    nome: null,       // OPCIONAL: nome do comprador
    cpf: null,        // OPCIONAL: cpf do comprador
    value: null,      // OPCIONAL: valor da compra
    ttclid: qp('ttclid')||ck('ttclid'),
    ttp: ck('_ttp'),
    fbclid: qp('fbclid'),
    fbc: ck('_fbc'),
    fbp: ck('_fbp'),
    gclid: qp('gclid'),
    page_url: location.href,
    referrer: document.referrer||null,
    user_agent: navigator.userAgent,
    screen: screen.width+'x'+screen.height
  };
  var u='https://n8n.hx-corp.com/webhook/checkout-beacon-hx';
  var b=JSON.stringify(d);
  if(navigator.sendBeacon){navigator.sendBeacon(u,b);}
  else{try{fetch(u,{method:'POST',headers:{'Content-Type':'text/plain'},body:b,keepalive:true});}catch(e){}}
})();
</script>
Os campos OPCIONAIS podem ficar como null. Pra preencher um deles, troque o null pela variável do GTM de vocês, ex.: email: {​{DLV - email}}, · O resto do código não precisa de nenhuma alteração.

4Como validar

Duas formas, escolham a mais prática.

A. Modo Preview do GTM

Abram o Preview, simulem ou façam uma compra de teste e confiram no DevTools (aba Network) um request POST para n8n.hx-corp.com/webhook/checkout-beacon-hx com status 200.

B. Confirmação pelo nosso lado

Avisem a gente na hora do teste. O recebimento aparece no nosso banco em tempo real e confirmamos em minutos se o dado chegou completo.

5Perguntas prováveis

PerguntaResposta
Afeta a velocidade da página?Não. É um único envio assíncrono de ~1 KB via sendBeacon, que roda em segundo plano sem bloquear nada.
Interfere nos pixels atuais?Não. A tag não toca em nenhum outro script, cookie ou dataLayer. Só lê e envia.
E a LGPD?Nada de novo entra em jogo: são dados da transação que já são processados na operação e que já recebemos pelo webhook de vendas. O beacon só adiciona os identificadores de clique, no mesmo tratamento.
Precisa de manutenção?Não. Instalou, publicou, acabou. Qualquer ajuste futuro é do nosso lado, no endpoint.
E se o endpoint estiver fora?Nada acontece na página. O sendBeacon falha em silêncio, sem erro visível e sem afetar o usuário.