← blog/posteptrack-como-funciona
    // blog/posteptrack-como-funciona.md

    PostepTrack por dentro: do clique ao lead carimbado

    Três portas de entrada, quatro passos no motor, dois destinos — e o retry que não deixa lead pra trás. A mecânica completa da atribuição.

    2026-07-17·6 min de leitura·engenharia·POSTEP Digital

    ctwa_clid · leadgen_id · utm_* → Graph API → CRM + banco · retry a cada 5 min · R$ por anúncio

    // o fluxo em uma imagem
    InvesteAnúnciosMeta · Google
    Click-to-WhatsAppabre conversa
    Lead Adsformulário Meta
    Landing / sitePixel + CAPI
    AtribuiPostepTrackqual anúncio gerou
    OrganizaSeu CRMKommo · Clint · Ploomes
    MedeDashboardtempo real
    SupabaseBanco de atribuição: cada lead é gravado com sua origem, o CRM sincroniza o status da venda de volta, e o dashboard lê tudo em tempo real.
    a venda ganha volta como atribuição de receita — você sabe qual anúncio deu lucro e realoca a verba
    // 01

    O que o PostepTrack grava (e por quê)

    O PostepTrack grava em cada lead, no momento em que ele entra no CRM, a origem exata do clique: campanha, conjunto e anúncio — nome e ID. Não é “veio do Meta”. É “veio do anúncio X, do conjunto Y, da campanha Z”.

    Já contamos aqui por que cada cliente tem a própria instância e quais armadilhas esse pipeline esconde. Esse post é a peça que faltava: a mecânica. O que acontece, na ordem em que acontece, do clique ao lead carimbado.

    // 02

    As três portas de entrada

    Todo lead chega por um de três caminhos, e cada um solta um identificador diferente. O resto do sistema existe pra transformar esse identificador em atribuição.

    CTWA — anúncio → WhatsAppctwa_clid

    o cliente clica no anúncio e cai direto no WhatsApp. A primeira mensagem chega com o identificador do clique embutido, entregue pelo webhook do WhatsApp Business

    Lead Ads — formulário do Metaleadgen_id

    o cliente preenche o formulário nativo sem sair do Instagram/Facebook. O webhook de leadgen entrega o ID do lead gerado

    Site / landing pageutm_* + fbclid

    o clique chega ao site com os parâmetros de rastreio na URL, que seguem junto quando o lead é enviado

    Três formatos diferentes, um mesmo destino: o webhook chega em tempo real na Edge Function do cliente.

    // 03

    O motor: 4 passos dentro da Edge Function

    Cada cliente tem uma Edge Function dedicada rodando no Supabase (Deno). Ela responde ao Meta em milissegundos e processa em background. O trabalho real são quatro passos:

    // do webhook ao carimbo
    webhook chega (ctwa · leadgen · site)
    a. identifica o tipo de evento e extrai o identificador do clique
    b. consulta a Graph API: identificador → ad_id → adset_id → campaign_id (+ nomes)
    c. localiza o lead recém-criado no CRM (telefone / ID)
    d. grava a atribuição nos dois destinos
    lead carimbado ✓ campanha · conjunto · anúncio

    O passo b é o coração: é a Graph API do Meta que responde de qual anúncio aquele clique veio. O PostepTrack só faz a pergunta certa, com o token certo, na hora certa — e guarda a resposta onde ela vale dinheiro.

    // 04

    Dois destinos + o retry que não deixa lead pra trás

    A mesma atribuição é gravada em dois lugares, porque ela serve dois públicos diferentes:

    // mesmos dados, dois consumidores
    CRM — campos do lead
    PATCH via API (Kommo · Clint · Ploomes)
    campanha, conjunto e anúncio em campos próprios
    vendedor vê a origem no card do lead
    relatórios do CRM filtram por anúncio
    Banco (Supabase) — tabela de leads
    1 linha por lead, ~30 colunas de atribuição
    protegida por RLS
    alimenta os dashboards do cliente
    custo por lead REAL por campanha

    E tem a corrida de timing: às vezes o webhook do Meta chega ANTES de o CRM criar o lead. Se o passo c não encontra ninguém, o evento não é descartado — vai pra uma fila de recuperação e um retry automático roda a cada 5 minutos até casar.

    Nenhum clique se perde porque o CRM demorou dez segundos. Essa fila (recovery_pending) nasceu de caso real — não de paranoia.

    // 05

    Fechando a malha: R$ por anúncio

    Quando o CRM do cliente suporta webhook de saída, o PostepTrack vai além do lead: fecha a malha até a receita.

    // do caixa de volta pro anúncio
    venda marcada como ganha no CRM
    webhook de saída dispara com deal_id + valor
    PostepTrack casa o negócio com o lead de origem
    match pelo deal_id gravado na entrada → recupera campanha/conjunto/anúncio
    ✓ R$ da venda somado no anúncio que originou o lead

    A pergunta muda de “quantos leads esse anúncio trouxe” pra “quantos reais em venda esse anúncio gerou”. ROI por anúncio, não por canal.

    // 06

    As peças da instância

    Cada cliente roda uma instância dedicada e isolada — nada compartilhado. São quatro peças:

    #01 — App Meta dedicado

    Aplicativo próprio do cliente na Meta, com token de System User (não expira). Recebe os webhooks de CTWA e Lead Ads e autentica as consultas à Graph API.

    #02 — Edge Function

    Função serverless (Supabase/Deno) exclusiva do cliente. Responde ao webhook em milissegundos e faz o trabalho pesado em background.

    #03 — Tabela de leads

    Postgres com ~30 colunas de atribuição, protegida por RLS. É a base dos dashboards e das análises de custo por lead.

    #04 — Integração com o CRM

    Kommo (API v4), Clint ou Ploomes (OData, com webhook de saída pra receita). Campos custom criados no lead do CRM do cliente.

    // o que fica gravado em cada lead

    campanha · conjunto · anúncio (nome + id) · origem do evento · utm_source/medium/campaign/content · ctwa_clid / leadgen_id / fbclid · telefone normalizado · timestamps · deal_id (p/ receita)

    escrito por
    POSTEP Digital
    ← ver todos os posts