Integração via Webhook (Genérico)

Envie vendas de qualquer checkout pro Trackou com um POST HTTP.

Endpoint

POST https://trackou.io/api/webhooks/sales

A URL é a mesma pra todas as integrações. A chave no header identifica o seu dashboard.

Autenticação

x-webhook-secret: SUA_CHAVE

Envie a chave da integração no header x-webhook-secret. Você obtém a chave ao criar uma integração "Genérico" na página Integrações.

Eventos

O campo event define o status da venda. Só sale.approved dispara o evento Purchase via CAPI.

EventoSignificado
sale.pendingPix/boleto gerado (pagamento pendente)
sale.approvedVenda aprovada/paga: dispara Purchase no CAPI
sale.refundedVenda reembolsada
sale.chargebackChargeback (estorno)

Corpo (JSON)

Apenas transaction_id e amount são obrigatórios. Os demais enriquecem o rastreamento e a atribuição.

{
  "event": "sale.approved",
  "transaction_id": "abc123",
  "amount": 197.00,
  "currency": "BRL",
  "product_name": "Curso XYZ",
  "customer_name": "João Silva",
  "customer_email": "joao@email.com",
  "customer_phone": "11999998888",
  "payment_method": "pix",
  "utm_source": "facebook",
  "utm_campaign": "campanha|23850000000000",
  "fbclid": "AbCdEf",
  "fbc": "fb.1.1700000000.AbCdEf",
  "fbp": "fb.1.1700000000.1234567890",
  "client_ip_address": "203.0.113.42",
  "client_user_agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_0 like Mac OS X)",
  "event_source_url": "https://checkout.seusite.com/pedido",
  "external_id": "cliente_8842",
  "country": "br",
  "sale_date": "2026-06-28T15:30:00Z"
}

Básicos

CampoTipoObrigatórioDescrição
eventstringNãoTipo do evento. Default sale.approved.
transaction_idstringSimID único da transação/pedido.
amountnumberSimValor da venda.
currencystringNãoMoeda (ISO 4217). Default BRL.

Produto

CampoTipoObrigatórioDescrição
product_namestringNãoNome do produto.
product_idstringNãoID do produto.
offer_idstringNãoID da oferta.
offer_namestringNãoNome da oferta.

Cliente

CampoTipoObrigatórioDescrição
customer_namestringNãoNome do cliente.
customer_emailstringNãoEmail do cliente (usado no match do CAPI).
customer_phonestringNãoTelefone do cliente (usado no match do CAPI).

Pagamento

CampoTipoObrigatórioDescrição
platformstringNãoPlataforma de checkout (ex: vex).
gatewaystringNãoGateway de pagamento (ex: stripe).
payment_methodstringNãopix | credit_card | boleto | debit.
installmentsnumberNãoNúmero de parcelas.

UTMs e rastreamento

CampoTipoObrigatórioDescrição
utm_sourcestringNãoutm_source do anúncio.
utm_campaignstringNãoutm_campaign (pode conter o ID da campanha).
utm_mediumstringNãoutm_medium (pode conter o ID do conjunto).
utm_contentstringNãoutm_content (pode conter o ID do anúncio).
utm_termstringNãoutm_term.
fbclidstringNãoClick ID do Facebook.
fbcstringNãoCookie _fbc do clique no anúncio da Meta. Melhora a atribuição do CAPI.
fbpstringNãoCookie _fbp do navegador do comprador (Meta).
client_ip_addressstringNãoIP do comprador no checkout, enviado ao CAPI.
client_user_agentstringNãoUser-agent do navegador do comprador, enviado ao CAPI.
event_source_urlstringNãoURL da página onde a compra aconteceu.
external_idstringNãoSeu identificador do cliente. Vai hasheado pra Meta.
countrystringNãoPaís do comprador em ISO de duas letras (ex.: BR).
gclidstringNãoClick ID do Google.
sckstringNãoParâmetro de rastreamento sck.
srcstringNãoOrigem (src).

IDs do Meta

CampoTipoObrigatórioDescrição
meta_campaign_idstringNãoID da campanha Meta (ou extraído do utm_campaign).
meta_adset_idstringNãoID do conjunto Meta (ou extraído do utm_medium).
meta_ad_idstringNãoID do anúncio Meta (ou extraído do utm_content).

Outros

CampoTipoObrigatórioDescrição
sale_datestringNãoData/hora da venda (ISO 8601).
metadataobjectNãoObjeto livre com dados extras que quiser guardar.

Exemplo (cURL)

curl -X POST https://trackou.io/api/webhooks/sales \
  -H "Content-Type: application/json" \
  -H "x-webhook-secret: SUA_CHAVE" \
  -d '{
  "event": "sale.approved",
  "transaction_id": "abc123",
  "amount": 197.00,
  "currency": "BRL",
  "product_name": "Curso XYZ",
  "customer_name": "João Silva",
  "customer_email": "joao@email.com",
  "customer_phone": "11999998888",
  "payment_method": "pix",
  "utm_source": "facebook",
  "utm_campaign": "campanha|23850000000000",
  "fbclid": "AbCdEf",
  "fbc": "fb.1.1700000000.AbCdEf",
  "fbp": "fb.1.1700000000.1234567890",
  "client_ip_address": "203.0.113.42",
  "client_user_agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_0 like Mac OS X)",
  "event_source_url": "https://checkout.seusite.com/pedido",
  "external_id": "cliente_8842",
  "country": "br",
  "sale_date": "2026-06-28T15:30:00Z"
}'

Resposta

200 OK com o id da venda. Reenvios com o mesmo transaction_id são idempotentes (atualizam a venda em vez de duplicar).

{ "success": true, "action": "created", "sale_id": "..." }