FEATURES / WEBHOOKS

Outgoing webhooks,
done right.

HMAC signatures, exponential backoff, dead-letter queue, idempotency keys, signed URLs. Everything you need to ship a B2B integration.

Production-grade delivery semantics.

HMAC-SHA256 signing

Every payload signed with the destination's secret. Header includes timestamp + body hash to defeat replay.

BullMQ workers

Redis-backed queue. Concurrency tunable per endpoint. Failed deliveries auto-retry with jitter.

Exponential backoff

5 retries over 24 hours: 30s, 5min, 30min, 2h, 8h. Configurable per subscription.

Dead-letter queue

After max retries, the event drops into a DLQ table you can replay from the admin UI or CLI.

Idempotency

Each delivery carries a UUID. Receivers can dedupe safely; UseDeploy guarantees at-least-once.

Receiver verification

Helper function ships in 5 languages so your customers can verify signatures in one line.

Subscribe an endpoint, get a typed event stream.

Domain events are published into the in-process bus, then a single subscriber forwards them to BullMQ. From there, each registered destination fans out to its own queue. You write the event; the infrastructure handles the rest.

modules/webhooks/application/dispatch.ts
 1  eventBus.subscribe("OrderCreated", async (event) => {
 2    const subs = await webhookRepo.findByEvent(
 3      event.orgId, "order.created"
 4    );
 5    for (const sub of subs) {
 6      await queue.add("deliver", {
 7        subscriptionId: sub.id,
 8        payload: event.toPublicShape(),
 9      });
10    }
11  });

B2B-ready in a weekend.

Stripe-grade webhook delivery without the months of plumbing.