Skip to navigation

Webhook de Decisão

Webhook de Decisão

O webhook é um callback de saída: o Decisionfy envia eventos para a URL configurada no endpoint do parceiro (tipo WEBHOOK). Não é um endpoint que você chama no Decisionfy — é uma URL sua, que recebe as notificações.

DireçãoDecisionfy → seu sistema
MétodoPOST
Content-Typeapplication/json
Header do eventoX-DecisionFy-Event
Timeout de envio10 segundos

Eventos enviados

EventoQuando é enviado
NEW_ORDERPedido criado
STATUS_CHANGEDAlteração em status
DECISION_CHANGEDAlteração em decisionStatus
DECISION_COMPLETEDFluxo finalizado

Payload

{
"event": "DECISION_COMPLETED",
"accessKey": "SUA_ACCESS_KEY",
"id": 7281,
"orderId": "PED-2026-0001",
"sessionId": "00000000-0000-0000-0000-000000000000",
"status": "COMPLETED",
"decisionStatus": "APPROVED",
"startedAt": "2026-05-04T15:17:21.000Z",
"completedAt": "2026-05-04T15:17:32.000Z",
"notifiedAt": "2026-05-04T15:17:32.300Z"
}

Exemplo de endpoint receptor

import express from "express";
const app = express();
app.use(express.json());
app.post("/webhooks/decisionfy", (req, res) => {
const event = req.header("X-DecisionFy-Event") || req.body?.event;
// Sempre responder 2xx rapido para evitar retries e timeout
res.status(200).json({ received: true });
// Processamento assincrono recomendado
console.log("Evento recebido:", event);
console.log("Payload:", req.body);
});
app.listen(4000, () => {
console.log("Webhook receiver na porta 4000");
});

Boas práticas

  • Responda 200 rapidamente e processe de forma assíncrona.
  • Use idempotência por orderId + event para evitar duplicidade.
  • Aplique timeout e retry no seu lado consumidor.
  • Registre logs com orderId e event para rastreabilidade.