Pular para o conteúdo
AchaduDevelopers
API operacionalIr para o site ↗
Painel →
Achadu/Developers/Webhooks

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.test

Schemas 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.