Gateway For webhooks you receive →

Never miss
a webhook.

One URL per sender. Every webhook verified, filtered and delivered to your services until they take it.

SendersEnsueYour services
Stripeinvoice.paid
GitHubworkflow_run
Shopifyorders/create
Clerkuser.created
Ensue
Your APIapi.acme.com/hooks
Slack#deploys
Agent inboxci-fixer
HubSpotCRM sync
How it works

From the sender
to your service.

Senders never talk to your servers directly. Ensue answers them in milliseconds, keeps the event, and delivers it on your terms.

01 · Source

One URL per sender

Paste it into Stripe or GitHub. Ensue checks the signature, answers handshakes and replies 200 as soon as the event is stored.

hooks.getensue.com/in/src_7Hq…verified
02 · Flow

Rules on every field

Match on event type or any payload field, reshape the body, and send one event to as many destinations as need it.

type = invoice.paidfilter
stripe-to-ledgertransform
03 · Destination

Delivered, or explained

Each destination gets its own queue. Failures are retried with backoff, and anything that can't be delivered says why.

billing-api · attempt 2200
Gateway

The hard parts,
already built.

Verification, retries, failures and history, in one place.

Verified before anything else

Pick how a sender signs and Ensue checks every request. Unsigned or tampered requests are refused and logged, never delivered.

StripeStandard WebhooksSvixAmazon SNSHMAC SHA-256Bearer tokenBasic authAPI key header SNS subscription confirmAzure Event Grid validationCloudEvents handshake

Duplicates absorbed

Senders retry. Point a source at its unique ID and a repeat gets a 200 and creates nothing.

evt_1QxT… · invoice.paidaccepted
evt_1QxT… · invoice.paidduplicate

Filters and transforms

Drop the events a service doesn't care about and send it only the fields it needs. Edit a transform once and every flow using it changes.

{ "customer": data.object.customer,
  "amount":   data.object.amount_paid,
  "currency": data.object.currency }

Retries that listen

Retry-After is honoured, backoff is spread out, and a 400 isn't retried forever.

attempt 1 · 503wait 30s
attempt 2 · 200delivered

Circuit breaker

A destination that keeps failing is paused and probed instead of hammered, and you're told.

billing-apipaused
proberecovered

Dead letters, with reasons

Every event that gave up says why. Fix the consumer and redrive them in one go.

422 · missing field skudead
redrive 41 eventssent

A timeline for every event

Received, verified, filtered, every attempt with its response. Replay one event or a whole window, to the same destination or another.

12:04:11 received · verifiedok
12:04:11 attempt 1 · timeoutfailed
12:04:41 attempt 2 · 200 in 142msdelivered

Combine updates

Forty status updates for one CI run become one delivery with the latest state and a list of what changed. Final states are always delivered; payments and orders are never combined.

workflow_run 8812 · 40 updatesgithub-actions
completed · success1 delivery

Send from a fixed region

When a partner only accepts traffic from known IPs, a flow can deliver from one region instead of the nearest edge.

US EastUS WestEurope WestFrankfurtSingaporeTokyoMumbai

Your own domain Soon

Give senders a URL on your domain, so moving off Ensue later never means re-registering a webhook.

hooks.acme.com/in/src_7Hq…CNAME → Ensue
Build or buy

Your own endpoint
vs. Gateway.

Your own endpoint

  • Returns 500 while your database is down, and the sender gives up
  • Signature checks copied per provider, and one forgotten
  • Duplicates processed twice
  • Retries that hammer a service that's already down
  • “Did we get that webhook?” answered from logs, if they're kept
  • Replaying a lost day means a script and a prayer

Ensue Gateway

  • Accepted and stored even while your services are down
  • One place that verifies every sender
  • Duplicates dropped by the sender's own ID
  • Backoff, Retry-After and a circuit breaker
  • Every event's timeline, with each response
  • Replay and redrive from the dashboard

Stop losing webhooks.

Sending webhooks to your own customers? See Dispatch.