Webhooks
Receba eventos do FreteFlow assim que acontecem.
Cadastrando um endpoint
Em Integrações → Webhooks, cadastre a URL HTTPS do seu endpoint e selecione os eventos que deseja receber. Você receberá um secret usado para assinar cada chamada.
Eventos disponíveis
freight.createdfreight.publishedfreight.status_changedoffer.received/offer.accepteddriver.assignedmessage.received/message.delivered
Verificando a assinatura
Cada requisição traz o header X-Webhook-Signature: HMAC-SHA256 do corpo cru da requisição usando seu secret. Sempre valide antes de processar:
ts
import { createHmac, timingSafeEqual } from "crypto";
function verify(body: string, signature: string, secret: string) {
const expected = createHmac("sha256", secret).update(body).digest("hex");
return timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
}Segurança
Nunca processe um webhook sem validar a assinatura. Atacantes podem forjar requisições para sua URL pública.
Retries
Se sua URL responder com status diferente de 2xx (ou demorar > 10s), o FreteFlow reagenda a entrega com backoff exponencial: 1min, 5min, 30min, 2h, 6h. Após 5 tentativas o evento é marcado como failed e fica disponível em Integrações → Eventos para reprocessamento manual.
Payload
json
{
"id": "evt_01HABCDE...",
"type": "freight.status_changed",
"created_at": "2026-05-06T10:11:12Z",
"data": {
"freight_id": "FR-1234",
"from": "in_transit",
"to": "delivered"
}
}