Projeto autoral · Tracking e atribuição

RedTrack Tracking Platform.

Middleware que liga o checkout, o RedTrack e a Meta. Cada venda vira uma conversão atribuída ao clique certo, uma única vez, mesmo com webhook duplicado, fora de ordem ou destino fora do ar.

Ambiente LAB 24/7 · fluxo validado com compras reais de teste

O problema

A plataforma de vendas sabe que alguém comprou. O RedTrack sabe de qual anúncio veio o clique. Quando a ponte entre os dois falha, o gerenciador de anúncios otimiza com dado errado e ninguém percebe na hora.

A venda chega sem o clique

O webhook de venda só traz a origem se o click id foi levado até o checkout. Parâmetro de texto livre, UTM ou cupom no lugar do click id não atribui nada.

O pixel do navegador perde compras

Bloqueador de anúncio, proteção de rastreamento do navegador ou aba fechada antes do disparo. Se a compra depende do navegador, uma parte some.

Webhooks repetem e chegam fora de ordem

A plataforma reentrega o mesmo evento quando não recebe resposta. Sem proteção, a mesma venda vira duas conversões e o retorno do anúncio parece maior do que é.

Order bump e upsell se misturam

Cada etapa do funil é uma transação própria. Se tudo sai como uma compra só, ou com a mesma chave, a receita do bump e do upsell some ou é contada como venda nova.

Reembolso e chargeback não descontam sozinhos

O RedTrack registra o reembolso como uma conversão separada e não tira o valor da venda original. Sem conta própria, o painel mostra receita bruta como se fosse líquida.

Renovação e oferta nova enganam

Renovação de assinatura é receita, mas não é venda nova para o anúncio. Uma oferta lançada sem mapeamento chega sem tipo e cai no lugar errado, ou em lugar nenhum.

O que isso custa

  • Verba indo para o anúncio errado, porque a conversão ficou em outro clique ou não chegou.
  • O algoritmo da Meta aprendendo com compras duplicadas, faltando ou sem valor.
  • Número do checkout e número do tracker que não batem, e decisão de escala tomada no escuro.

Como o fluxo funciona

Do clique no anúncio até o evento de conversão na Meta. Cada cor é uma plataforma; as etapas marcadas como "Este projeto" são código próprio.

RedTrackCheckoutMetaEste projeto
  1. 1RedTrack

    Clique no anúncio

    O domínio de tracking do RedTrack registra o clique e gera um click id de 24 caracteres.

    Passa adianteclick id na URL
  2. 2Este projetoRedTrack

    Captura no navegador

    Script próprio lê o click id (query e cookies), dispara InitiateCheckout e marcos do vídeo (play, 1, 3, 5 e 10 min) com deduplicação. Falha de rede nunca bloqueia a ida ao checkout.

    Passa adianteeventos + click id de checkout
  3. 3Checkout

    Checkout com origem

    O click id segue nos parâmetros de origem da plataforma de checkout até a compra. A Hotmart é a integração pronta hoje.

    Passa adiantewebhook de venda com o click id
  4. 4Este projeto

    Webhook: validar, classificar, gravar

    Token comparado em tempo constante, schema validado com Zod, dados pessoais redigidos, evento classificado e gravado de forma idempotente antes de qualquer envio.

    Passa adianteevento classificado
  5. 5Este projetoRedTrack

    Postback servidor a servidor

    Conversão enviada ao RedTrack com valor, tipo e id da transação. Timeout, erro de rede, 429 e 5xx entram em retry com backoff exponencial. Erro 4xx não é repetido.

    Passa adianteconversão atribuída ao clique
  6. 6RedTrackMeta

    Conversions API

    O RedTrack repassa o evento para a Meta. Compra, order bump e upsell chegam como compras distintas, uma por transação, sem uma apagar a outra na deduplicação.

Mapa mental, passo a passo

O mesmo fluxo desta página, do clique no anúncio até o evento na Meta, desenhado como um mapa mental e explicado um galho de cada vez.

O resumo, narrado do começo ao fim

O caminho de uma venda, do clique até a Meta, em uns 8 minutos: eu leio o mapa resumido bloco por bloco, na mesma ordem.

Narração em português. O arquivo só é baixado quando você aperta play.

Acesso por código

Mapa mental de acesso restrito

O mapa completo tem acesso restrito. O vídeo acima mostra o resumo; para ver cada detalhe, fale comigo.

O que você vê quando liberado

  • Explicação em ordem, um passo de cada vez, em português e inglês
  • Do clique no anúncio ao evento na Meta, sem pular etapa
  • O que acontece quando algo falha, e o que ainda falta provar
  • Zoom, tela cheia e navegação por blocos
Falar comigo
13
blocos
2
idiomas

Modelo de eventos

Cada evento tem uma regra de classificação, um destino e uma chave contra duplicidade. O que não deve virar conversão fica gravado, mas não é enviado.

Navegador

  • InitiateCheckout

    Validado ponta a ponta

    Clique no botão de compra da página, disparado pelo script próprio.

    RedTrack
    InitiateCheckoutNo click id da página
    Meta
    InitiateCheckoutEvento padrão
    Chave contra duplicidade
    click id + tipo, uma vez por sessão
  • Marcos do vídeo

    Validado ponta a ponta

    Play e 1, 3, 5 e 10 minutos assistidos na VSL.

    RedTrack
    Um tipo por marco
    Meta
    Não envia, de propósito: sinal granular demais para otimizar
    Chave contra duplicidade
    click id + tipo, uma vez por sessão

Venda

  • Compra

    Validado ponta a ponta

    Compra aprovada de oferta mapeada como principal, na primeira cobrança.

    RedTrack
    PurchaseValor e id da transação
    Meta
    PurchaseUma por transação
    Chave contra duplicidade
    id do evento + par transação/evento
  • Order bump

    Validado ponta a ponta

    Pelo código da oferta, não pela flag de bump do payload.

    RedTrack
    orderbumpTransação própria
    Meta
    PurchaseCompra distinta
    Chave contra duplicidade
    id do evento + par transação/evento
  • Upsell

    Validado ponta a ponta

    Pelo código da oferta.

    RedTrack
    upsellTransação própria
    Meta
    PurchaseCompra distinta
    Chave contra duplicidade
    id do evento + par transação/evento
  • Downsell

    Sem transação real ainda

    Pelo código da oferta.

    RedTrack
    downsellTransação própria
    Meta
    Definido na implantação
    Chave contra duplicidade
    id do evento + par transação/evento

Estorno

  • Reembolso

    Evento de reembolso, para qualquer oferta. Não depende de mapeamento.

    RedTrack
    refundedNova conversão no mesmo clique, com o valor original
    Meta
    refundedEvento personalizado
    Chave contra duplicidade
    id do evento + par transação/evento
  • Chargeback

    Sem transação real ainda

    Evento de chargeback, para qualquer oferta.

    RedTrack
    chargebackNova conversão no mesmo clique
    Meta
    chargebackEvento personalizado
    Chave contra duplicidade
    id do evento + par transação/evento

Gravado, sem envio

  • Renovação

    Compra aprovada com número de recorrência maior que 1. Em assinatura sem esse número, ele é buscado na API de pagamentos.

    RedTrack
    Não envia
    Meta
    Não envia
    Chave contra duplicidade
    id do evento + par transação/evento
  • Cancelamento, atraso, inadimplência

    Eventos do ciclo de vida da assinatura.

    RedTrack
    Não envia
    Meta
    Não envia
    Chave contra duplicidade
    id do evento + par transação/evento
  • Oferta desconhecida

    Código de oferta sem mapeamento. Nunca vira compra por padrão.

    RedTrack
    Fica no painel até ser mapeada; depois, prévia e reprocessamento
    Meta
    Não envia
    Chave contra duplicidade
    id do evento + par transação/evento
  • Click id válido tem 24 caracteres hexadecimais. Valor de texto no parâmetro de origem é guardado como veio, mas não vira atribuição: o evento fica gravado sem envio.
  • Os tipos de conversão e o repasse para a Meta seguem o mapeamento configurado na integração do RedTrack com a Conversions API. Cada funil é mapeado com você, sem supor um padrão.

Arquitetura e caminhos de falha

O caminho feliz é a linha contínua. As caixas tracejadas mostram o que acontece quando algo dá errado, e onde cada caso aparece para quem opera.

Diagrama da arquitetura da RedTrack Tracking PlatformO clique no anúncio passa pelo RedTrack, que gera o click id. A página lê o click id e o checkout leva esse id até a venda. O webhook de venda chega ao backend deste projeto, que valida token e schema, redige dados pessoais, classifica o evento, grava de forma idempotente e envia o postback ao RedTrack, que repassa à Meta Conversions API. Token ou payload inválido é rejeitado sem gravar. Oferta sem mapeamento é gravada como desconhecida e não é enviada. Webhook duplicado recebe 200, é registrado à parte e nada é reenviado. Com o RedTrack fora do ar, o envio é repetido com espera crescente e, se ainda falhar, o evento fica marcado como falho para reenvio. Isso aparece no painel de operação, junto com o financeiro reconciliado; os alertas ficam no resumo da API de operação.Captura · navegador e plataformasAnúncioMeta Ads com parâmetrosdo RedTrack na URLClique no RedTrackdomínio de trackinggera o click idPágina + scriptlê o click id; enviaInitiateCheckout, vídeoCheckoutclick id de checkoutsegue até a vendawebhook de vendaEste projeto · servidorWebhooktoken e schema Zod,dados redigidosEntrada inválidatoken ou schema errado:401 ou 400, nadaé gravadoClassificaçãooferta mapeada +recorrência = 11 tiposOferta sem mapavira desconhecida,fica gravada e nãoé enviadaGravação idempotenteid do evento + partransação/evento únicoWebhook duplicadoresponde 200, registraà parte e não reenviaPostback S2Sclick id, valor, tipoe id da transaçãoRedTrack fora do arretry com backoff emtimeout, rede, 429, 5xx;senão, vai ao painelPainel de operaçãofalhas no RedTrack e retries esgotadosofertas sem mapa e reprocessamentoconflitos e histórico de ofertasfinanceiro reconciliadoenriquecimento com reenvioDestinosRedTrackconversão no cliquecerto, uma vezMeta CAPIpela integraçãodo RedTrackCompra, bump e upsell:Purchase, um por transação.Reembolso e chargeback:eventos personalizados.
Caminho principalCaminho de falha

Retry no detalhe: por padrão até 3 tentativas por envio, timeout de 8 segundos e espera que dobra a partir de 500 ms. Só timeout ou erro de rede, 429 e 5xx são repetidos. Se o envio falha, o webhook responde 502; quando a plataforma de checkout reentrega o mesmo evento, o envio é refeito sobre a mesma linha, sem duplicar.

O que foi construído

Idempotência de verdade

Id do evento como chave primária e par transação + evento único. Duplicatas vão para uma tabela própria. Reentrega de um evento que tinha falhado refaz o envio sem criar linha nova.

Classificação de eventos financeiros

Compra, order bump, upsell, downsell, renovação, reembolso, chargeback, cancelamento, atraso, inadimplência e desconhecido. Renovação entra na receita e não é enviada como conversão nova.

Click id que é click id

Só 24 caracteres hexadecimais contam. O parâmetro preferido vem primeiro, o outro é plano B, e texto livre fica guardado como veio, sem virar atribuição.

Enriquecimento depois do ACK

Quando falta informação de recorrência, o backend consulta a API de pagamentos da plataforma depois de responder ao webhook. O merge só preenche campos vazios, divergência vira conflito para revisão.

Mapeamento de ofertas no banco

CRUD com optimistic locking, trilha de auditoria append-only e snapshot em memória que falha fechado no boot. Rollback por feature flag, sem migração destrutiva.

Nunca reinterpretar em silêncio

Evento já enviado não é reenviado nem reclassificado automaticamente. Mudança de mapeamento depois do envio vira conflito visível no painel, com prévia antes de reprocessar.

Financeiro reconciliado

Bruto, renovações, reembolsos, chargebacks e líquido calculados a partir dos eventos. Reembolso e chargeback da mesma transação descontam uma vez só. Com histórico incompleto, o líquido fica nulo em vez de um zero inventado.

Operação e observabilidade

Health e readiness, contadores de duplicatas e retries que sobrevivem a restart, e alertas de backlog, taxa de falha, pendência antiga e ausência de webhook, expostos na API de resumo da operação. Migrations aditivas e idempotentes.

Decisões e trade-offs

Uma fonte de verdade por assunto

A plataforma de checkout é a verdade financeira, o banco é a verdade operacional, o RedTrack cuida da atribuição e a Meta só de otimização.

Sem fila e sem Redis

O volume não justifica. Retry e enriquecimento rodam no próprio processo, em instância única, e a reentrega da plataforma de checkout funciona como segunda chance. O limite dessa escolha está documentado.

Dois click ids, de propósito

O clique da página recebe os eventos de engajamento. O clique de checkout recebe a compra. Separar os dois evita atribuir venda ao evento errado.

A Meta fica atrás do RedTrack

O backend não chama a Conversions API direto. Um único caminho de envio reduz o risco de evento duplicado na Meta.

Reembolso como conversão nova

O reembolso não edita a compra original: entra como outro tipo no mesmo clique. O histórico de venda aprovada e depois devolvida fica preservado, e a taxa de reembolso vira métrica própria.

IA apenas como consulta

O painel pode pedir a um modelo uma sugestão de mapeamento para oferta desconhecida. A sugestão nunca grava nada. O envio continua determinístico.

O que os testes provam

Testes automatizados com Vitest, unitários e de integração via HTTP, sem rede externa: banco efêmero e RedTrack simulado. O deploy roda typecheck e os testes antes do build e das migrations.

  • 01

    Webhook, idempotência e classificação

    Duplicata não grava duas vezes, aprovação e reembolso da mesma transação viram duas linhas, renovação nunca vai ao RedTrack, 5xx é repetido e 4xx não.

  • 02

    Mapeamento de ofertas

    CRUD com versão esperada, auditoria, drivers Postgres e SQLite, snapshot que recusa linha inválida e boot que aborta se o banco não responde.

  • 03

    Painel e autenticação

    Login com rate limit, sessão expirada, CSRF obrigatório em mutação, cabeçalhos de segurança e páginas que nunca contêm o token.

  • 04

    Enriquecimento de recorrência

    Consulta só depois da resposta, merge que só preenche vazios, conflito sem sobrescrever e envio bloqueado enquanto a recorrência está pendente.

  • 05

    Financeiro e reconciliação

    Fixture fora do financeiro real e estorno sem a venda original deixando o líquido nulo.

  • 06

    Oferta desconhecida e reprocessamento

    Sem mapeamento devolve 409, reprocessar duas vezes envia uma, evento já enviado não é reinterpretado e a prévia não altera nada.

  • 07

    Scripts do navegador

    Duplo clique não duplica o envio, cada marco do vídeo dispara uma vez e falha ou timeout ainda leva ao checkout.

  • 08

    Infra e integrações

    Transação no Postgres, readiness que responde 503 sem vazar erro do driver e cliente do modelo de sugestão.

Segurança, item por item

Webhook
Token comparado em tempo constante. Em produção sem token configurado, responde 503 em vez de aceitar. Evento fora da lista permitida é ignorado.
Dados pessoais
Nome, e-mail, telefone, documento e endereço do comprador são redigidos antes de gravar. Logs usam lista de campos permitidos e o painel nunca devolve o payload.
Sessão do painel
Cookie HttpOnly e SameSite com validade de 12 horas, que nunca carrega o token de admin. Token CSRF por sessão em toda mutação.
Rate limit
60 requisições por minuto por IP no admin e 10 tentativas de login a cada 5 minutos. Sem token em produção, o painel responde 503 e nunca abre.
Cabeçalhos
CSP restrita à própria origem, sem iframe, nosniff, no-referrer e no-store em toda resposta do admin.
Superfície pública
404 opaco, que não ecoa a rota, e readiness que não expõe texto de erro. Segredos ficam só em variáveis de ambiente.

Painel de operação

Interface em HTML, CSS e ES modules servida pelo próprio backend, sem framework e sem bundler. Cinco telas: visão geral, eventos, ofertas, ofertas desconhecidas e enriquecimento. As telas abaixo usam dados sintéticos.

Visão geral: Saúde das integrações, financeiro reconciliado e indicadores operacionais.
Saúde das integrações, financeiro reconciliado e indicadores operacionais.

Implantação no seu funil

Implanto e mantenho esta plataforma para operações que usam RedTrack. A base já está pronta: o trabalho é conectar o seu funil, mapear as suas ofertas e validar com uma compra de teste antes de virar a chave.

Como funciona

  1. 1

    Conversa e diagnóstico

    Página, VSL, checkout, ofertas, order bumps e upsells, fontes de tráfego e o que já existe de pixel e Conversions API.

  2. 2

    Mapa de eventos

    Para cada evento do seu funil: se existe, se entra no financeiro, se vai ao RedTrack e se vai à Meta. Só com confirmação sua ou payload real.

  3. 3

    Acessos mínimos

    Convites nos painéis oficiais, sempre com a menor permissão necessária. Nenhuma senha ou token por chat.

  4. 4

    Implantação com plano de volta

    Domínio de tracking, webhook, ofertas e script na página. Mudança de DNS ou de webhook só com o registro exato confirmado e o rollback definido antes.

  5. 5

    Compra de teste

    Uma compra real de teste percorre o funil inteiro. Só vai para o ar depois que cada ponto abaixo for conferido.

  6. 6

    Manutenção

    Acompanhamento do painel e ajustes conforme o funil muda.

O que é entregue

  • Domínio de tracking e postback configurados no RedTrack
  • Script na página: click id, InitiateCheckout e marcos do vídeo, se houver VSL
  • Webhook da plataforma de checkout conectado e validado
  • Ofertas mapeadas: principal, order bump, upsell e downsell
  • Tipos de conversão do RedTrack ligados aos eventos da Meta
  • Compra de teste rastreada do clique ao evento na Meta
  • Acesso ao painel com cada evento, o status do envio e o financeiro

O que você fornece

  • Acesso à conta RedTrack
  • Acesso ao produto na plataforma de checkout, para configurar o webhook
  • Pixel ou dataset da Meta já em uso
  • Um registro de DNS para o domínio de tracking
  • A lista de ofertas do funil, com os códigos
  • Quem aprova mudanças e quem decide reverter, se algo sair do esperado

O que é conferido na compra de teste

  1. 01O clique no RedTrack gera o click id e a página o lê
  2. 02InitiateCheckout e marcos do vídeo caem no clique da página
  3. 03O click id de checkout chega na origem da venda
  4. 04O webhook é recebido, classificado e gravado uma única vez
  5. 05O RedTrack aceita o postback e a conversão aparece no clique certo
  6. 06Order bump e upsell aparecem como conversões próprias
  7. 07O evento aparece na Meta, no Gerenciador de Eventos
  8. 08O painel mostra a venda como enviada e o financeiro bate

O que a manutenção cobre

  • Produtos e ofertas novos mapeados antes de rodar tráfego
  • Ofertas desconhecidas revisadas e reprocessadas com prévia
  • Falhas de envio investigadas e reenviadas
  • Alertas de operação acompanhados
  • Reconciliação quando o número do checkout e o do RedTrack divergem
  • Ajustes quando a página, o checkout ou a campanha mudam

O que não está incluído

  • Gestão de tráfego, criação de campanha e decisão de orçamento
  • Copy, design ou edição de página e VSL, além do script de tracking
  • Promessa de resultado de campanha, ROAS ou volume de vendas
  • Outro tracker no lugar do RedTrack
  • Checkout sem integração pronta: avaliado à parte, antes de fechar
  • Assinaturas do RedTrack e das ferramentas que você já usa

Hoje mantenho o tracking com RedTrack de um cliente em operação. A plataforma foi validada de ponta a ponta com compras reais de teste, e cada nova implantação tem acompanhamento próximo. Valores são combinados em conversa, depois do diagnóstico.

Falar sobre implantação

Perguntas frequentes

E se o webhook vier duplicado?

A segunda entrega recebe 200, fica registrada numa tabela de duplicatas e nada é reenviado ao RedTrack. A chave é o id do evento mais o par transação e tipo de evento. A exceção é proposital: se o primeiro envio tinha falhado, a reentrega refaz o envio na mesma linha.

E se o RedTrack estiver fora do ar?

Timeout, erro de rede, 429 e erro 5xx são repetidos com espera crescente. Se ainda falhar, o evento fica gravado como falho, aparece no painel e pode ser reenviado manualmente pelo operador, por um endpoint da API de operação. A reentrega da plataforma de checkout também refaz o envio. Nada é perdido em silêncio.

Funciona só com Hotmart?

A Hotmart é a integração pronta hoje. Classificação, idempotência e envio trabalham sobre um modelo interno de evento, então outra plataforma de checkout entra como um novo adaptador de webhook. Isso é avaliado caso a caso, antes de fechar.

Preciso trocar de tracker?

Não. A plataforma foi feita para o RedTrack. Sua conta, campanhas e relatórios continuam onde estão; o que muda é que a venda passa a chegar nela de forma confiável.

O reembolso tira a venda do RedTrack?

Não tira, e isso é do próprio RedTrack: o reembolso entra como outra conversão no mesmo clique, com o valor original. O ROAS nativo continua bruto. O líquido é calculado no painel, que desconta reembolso e chargeback uma vez por transação.

Onde ficam meus dados?

Num banco Postgres próprio da implantação. A plataforma não é multi-cliente, então não existe base compartilhada com outras operações. Nome, e-mail, telefone, documento e endereço do comprador são redigidos antes de gravar.

Qual o risco de dar acesso?

O acesso é por convite nos painéis oficiais, com a menor permissão que resolve, e você pode revogar quando quiser. Credenciais de API vão direto para a variável de ambiente do servidor, nunca por chat. Mudança de DNS só com o registro exato e o rollback combinados antes.

O que preciso fornecer?

Acesso ao RedTrack e ao produto na plataforma de checkout, o pixel ou dataset da Meta em uso, um registro de DNS, a lista de ofertas com os códigos e o contato de quem aprova mudanças.

Como é a manutenção?

Oferta nova é mapeada no painel, com histórico de alterações. Oferta desconhecida e falha de envio aparecem no painel e são tratadas uma a uma, com prévia antes de reprocessar. Os alertas ficam no resumo da API de operação. Quando checkout e RedTrack divergem, a reconciliação mostra onde.

Quanto custa?

Depende do funil: quantas ofertas, se há assinatura, se há VSL, qual checkout. O valor é combinado em conversa, depois do diagnóstico.

Estado atual, sem maquiagem

Validado

  • Compra, order bump e upsell reais de teste, do clique ao evento na Meta
  • Idempotência, retry de postback e reprocessamento de oferta não mapeada
  • Marcos de vídeo e InitiateCheckout com deduplicação no navegador
  • Três campanhas em paralelo sem contaminação de atribuição
  • Infra 24/7 com Postgres, deploy bloqueado por typecheck e testes

Ainda não

  • A plataforma desta página roda em laboratório: a primeira implantação dela em produção ainda está por vir
  • Downsell e chargeback implementados, mas nunca testados com transação real
  • Os alertas existem no resumo da API de operação, não nas telas do painel, e ainda não há aviso ativo por e-mail ou chat
  • Instância única: sessão, rate limit e snapshot ficam em memória
  • Integração de checkout pronta hoje: Hotmart
  • Código privado, por conter configuração de operação

Stack

  • Node.js
  • TypeScript
  • Fastify
  • Zod
  • PostgreSQL
  • SQLite
  • Vitest
  • Render
  • RedTrack
  • Meta CAPI
  • Hotmart API

Usa RedTrack e quer a atribuição fechando?

Me conte como é o seu funil. Respondo com o que precisa ser feito para implantar e o que fica de fora.

Ajuda mandar junto

  • Plataforma de checkout
  • Fontes de tráfego
  • Ofertas: principal, bump, upsell, downsell
  • Se há assinatura ou VSL

Projeto independente. Não é afiliado nem endossado por RedTrack, Hotmart ou Meta. Nomes e marcas pertencem aos respectivos donos.