Get started
Gateway overview
How Ensue Gateway receives, verifies, queues and delivers the webhooks your services depend on.
Receiving webhooks reliably takes more than an endpoint. Senders retry, burst and go quiet; your own services deploy, slow down and fail. Ensue Gateway sits between the two. It accepts a webhook, stores it durably, answers the sender straight away, and then delivers it to your service at a pace the service can handle, retrying on failure and keeping a record of every step.
Stripe ─┐ ┌─▶ billing service
GitHub ─┼─▶ source URL ─▶ flow(s) ─▶ queue ─────┼─▶ analytics
Shopify ┘ verify · dedupe filter · transform └─▶ agent inbox
Core concepts
| Concept | What it is |
|---|---|
| Source | A URL you give to a sender. Ensue verifies each request against the method you choose, stores it, and answers the sender at once. |
| Destination | Where events go: an HTTPS URL, or an agent inbox. Each destination has its own queue, retry schedule and rate limit. |
| Flow | Connects one source to one destination, with an optional filter and transformation. |
| Request | One HTTP request a source received. Rejected requests are kept too, with the reason. |
| Event | What a flow creates from an accepted request: one event per matching flow. This is what is delivered. |
| Attempt | One try at delivering an event, with the response and how long it took. |
A request that reaches a source with three active flows becomes three events, each delivered to its own destination and each retried independently.
What happens to a request
- Verify. The request is checked against the source’s verification method. Failures get a
401and are logged with the reason; nothing is delivered. - Deduplicate. If the source has a deduplication key and Ensue has seen that value before, the sender gets the original answer and nothing new is created.
- Store and acknowledge. The request, its events and the usage count are written together. Only then does the sender get its
200, so an acknowledged webhook is never lost. - Filter and transform. Each flow decides whether the request matches its filter and reshapes the body with its transformation.
- Deliver. The destination’s queue sends the event, signs it, and applies the delivery policy: retries, backoff, rate limits and the circuit breaker.
- Record. Every step lands on the event’s timeline. Failures can be replayed.
What Gateway guarantees
Gateway delivers at least once. A destination can see the same event more than once, for example after a timeout where your service had already processed it. Every delivery carries an idempotency-key header (the event ID) so your handler can ignore repeats. Gateway does not promise exactly-once delivery or global ordering; if you need order, ordering keeps events for the same key in sequence.
Where to go next
- New to Ensue? Follow the Quickstart and deliver your first event in a few minutes.
- Receiving from Stripe, GitHub or similar: Verify incoming webhooks.
- Something failing: Events and timeline and Replay and dead letters.
- Sending webhooks to your own customers instead? See Dispatch.