A venda chega sem o clique
O webhook de venda só carrega a origem se o click id tiver sido levado até o checkout. Parâmetros de texto livre se misturam com ids reais.
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 de ponta a ponta com compras reais de teste
A plataforma de vendas sabe que alguém comprou. O tracker sabe de qual anúncio veio o clique. Sem uma ponte confiável entre os dois, a otimização de campanha trabalha com dado errado.
O webhook de venda só carrega a origem se o click id tiver sido levado até o checkout. Parâmetros de texto livre se misturam com ids reais.
Reentregas e reembolsos antes da aprovação acontecem. Contar duas vezes ou perder um evento distorce receita e atribuição.
Renovação de assinatura é receita, mas não é venda nova para o anúncio. Order bump, upsell, reembolso e chargeback precisam de tratamento próprio.
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.
O domínio de tracking do RedTrack registra o clique e gera um click id de 24 caracteres.
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.
O click id segue nos parâmetros de origem da plataforma de checkout até a compra. A Hotmart é a integração em uso hoje.
Token comparado em tempo constante, schema validado com Zod, dados pessoais redigidos, evento classificado e gravado de forma idempotente. A resposta sai antes de qualquer chamada externa.
Conversão enviada ao RedTrack com valor, tipo e id da transação. Timeout, 429 e 5xx entram em retry com backoff exponencial. Erro 4xx não é repetido.
O RedTrack repassa o evento para a Meta. Compra, order bump e upsell saem como eventos distintos, com o id da transação como chave de deduplicação.
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.
Compra, order bump, upsell, downsell, renovação, reembolso, chargeback, cancelamento, atraso e desconhecido. Renovação entra na receita e não é enviada como conversão nova.
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.
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.
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.
Bruto, reembolsos, chargebacks e líquido calculados a partir dos eventos. Quando o histórico está incompleto, o líquido fica nulo em vez de um zero inventado.
Sessão com cookie HttpOnly e token CSRF, rate limit no login e no admin, CSP restritiva, 404 opaco e painel fechado em produção sem token. Respostas e logs sem dados pessoais.
Health e readiness, contadores de duplicatas e retries, alertas de backlog, taxa de falha e ausência de webhook. Migrations aditivas e idempotentes, deploy com testes como gate.
Interface em HTML, CSS e ES modules servida pelo próprio backend, sem framework e sem bundler. As telas abaixo usam dados sintéticos.

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.
O volume não justifica. Retry e enriquecimento rodam no próprio processo, em instância única. O limite dessa escolha está documentado.
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.
O backend não chama a Conversions API direto. Um único caminho de envio reduz o risco de evento duplicado na Meta.
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 repositório é privado. Mostro a arquitetura e o código em uma conversa.
Projeto independente. Não é afiliado nem endossado por RedTrack, Hotmart ou Meta. Nomes e marcas pertencem aos respectivos donos.