Eventos confiáveis, assinados e rastreáveis.
Receba mudanças da sua operação sem polling. Cada entrega passa pela fila dedicada, guarda tentativas e leva uma assinatura verificável.
28 eventos de domínio
Assine todos com * ou escolha somente os eventos que o seu aplicativo realmente consome.
offer.createdoffer.updatedoffer.archivedoffer.publishedsegment.createdsegment.updatedsegment.deletedcoupon.createdcoupon.updatedcoupon.archivedtemplate.createdtemplate.updatedtemplate.deletedschedule.createdschedule.updatedschedule.deletedschedule.executedmonitor.createdmonitor.updatedmonitor.deletedstore.updatedjourney.createdjourney.updatedjourney.deletedconversation.updatedconversation.closedconversation.repliedwebhook.testSchemas versionados por evento
Todo envelope leva api_version. O catálogo informa a URL do schema e fornece um exemplo para validar consumidores antes de publicar uma mudança.
json
{
"id": "evt_...",
"type": "offer.updated",
"api_version": "2026-08-31",
"created_at": "2026-08-31T12:00:00.000Z",
"data": { "offer_id": "off_..." }
}Valide antes de processar
O segredo aparece uma única vez. Calcule HMAC-SHA256 sobre o timestamp e o corpo bruto e compare em tempo constante.
javascript
import { createHmac, timingSafeEqual } from "node:crypto";
const signed = `${timestamp}.${rawBody}`;
const expected = createHmac("sha256", process.env.ACHADU_WEBHOOK_SECRET)
.update(signed)
.digest("hex");
const received = signature.replace("sha256=", "");
if (!timingSafeEqual(Buffer.from(expected), Buffer.from(received))) {
throw new Error("Invalid signature");
}Entrega durável
Fila independente do processo web.
Até seis tentativas para falhas transitórias.
Timeout de 12 segundos por tentativa.
Histórico com status HTTP, erro e horário.
Destinos internos e endereços privados são bloqueados.
Webhook Inspector
Na área Desenvolvedores, abra uma entrega para conferir payload, resposta do destino, status HTTP, duração, tentativas e próximo retry. O mesmo painel permite copiar o evento e enfileirar um reenvio.
Corpo bruto preservado para depuração.
Resposta limitada e sem segredos.
Duração medida por tentativa.
Reenvio cria uma nova entrega ligada ao mesmo event_id.