Get started

Dispatch overview

Send webhooks to your own customers, with signing, retries, fan-out and a delivery history.

Gateway receives webhooks other services send to you. Dispatch is the other direction: your application sends webhooks to your customers, the way Stripe or Shopify do. You post one event to Ensue. Ensue works out which customer endpoints want it, signs it, delivers it, retries it, and shows you the history.

your app ──POST /v1/dispatch/events──▶ Ensue ──┬─▶ endpoint A (customer 1)
                                               ├─▶ endpoint B (customer 1)
                                               └─▶ endpoint C (customer 2)

Building webhook delivery yourself means queues, retries with backoff, signing, secret rotation, an event catalog, per-customer endpoints and a way to debug “I didn’t get your webhook”. Dispatch is all of that, behind one API call.

Core concepts

Concept What it is
Event type An entry in your catalog, such as order.shipped, with a description and versioned JSON Schemas.
Customer One of your customers (a tenant). You identify them with your own ID, so you never store ours.
Endpoint A URL a customer receives webhooks on. It subscribes to event types and has its own signing secret.
Message One event you sent: its type, data, customer and optional idempotency key.
Delivery A message going to one endpoint, with its own status and attempt history.

One message produces one delivery per matching endpoint. Each delivery succeeds, retries and fails on its own, so one customer’s broken server never delays another’s.

What Dispatch handles

  • Fan-out. One call reaches every endpoint subscribed to the event type, for one customer or for all of them.
  • Validation. Payloads are checked against the event type’s JSON Schema before anything is sent.
  • Signing. Every delivery is signed with the Standard Webhooks scheme, so your customers can verify with any open-source library. See Verify signatures.
  • Retries. Failed deliveries retry with backoff and Retry-After, with a circuit breaker for endpoints that stay down. See Retries and recovery.
  • Idempotency. An idempotency key makes your own retries safe.
  • History. Every message, delivery and attempt is searchable. See Monitor deliveries.

Dispatch uses the same delivery engine as Gateway, so retries, backoff, rate limits, quotas and the Events page behave the same way for both.

How it fits together

Gateway Dispatch
Source The send API (POST /v1/dispatch/events)
Flow An endpoint’s event type subscription
Destination An endpoint (a customer’s URL)
x-ensue-signature Standard Webhooks headers

Next steps

  1. Follow the Quickstart: create an event type, a customer and an endpoint, and send your first message.
  2. Read Send events for targeting and idempotency.
  3. Tell your customers how to verify signatures.