Skip to main content

Um lead pode ter várias vendas

Recompra é uma chamada nova, não uma atualização da anterior. Cada venda tem seu valor, sua data e seu produto. O lead expõe o consolidado:
O painel soma total; o funil conta o lead uma vez, não uma por venda.

sold_at é a data da compra

Não a data em que você está lançando. Essa distinção parece burocrática até a primeira vez que ela morde: uma venda de 31/07 lançada em 06/08 com a data errada aparece na semana seguinte, e o ROAS de duas semanas fica errado ao mesmo tempo.
O offset é obrigatório. Sem fuso a API responde 422. Ver Primeiros passos para o porquê.

Idempotência: external_source + external_id

Se a venda vem de uma plataforma, mande o id da transação de lá:
O par é único por empresa. O reenvio devolve 200 com duplicate: true em vez de criar outra venda. Isso é o que torna seguro:
  • reprocessar um webhook que falhou no meio
  • rodar de novo um script de importação
  • a plataforma reenviar o mesmo postback (todas reenviam)
Sem external_id não há idempotência. Duas chamadas iguais viram duas vendas e a receita dobra. Se a venda tem um id na origem, mande sempre — inclusive em importação de histórico, senão o dia em que você ligar o webhook a base duplica.

Remover

DELETE /v1/sales/{id} apaga a venda. O lead não volta de etapa: ele pode ter outras vendas, e mesmo sem nenhuma, escolher a etapa anterior seria inventar histórico. Mova o lead explicitamente se quiser desfazer o ganho.

Produtos

product_id é opcional e precisa existir no catálogo da empresa (Configurações → Funil → Produtos). Um product_id de outra empresa responde 404, nunca 403.