DocumentationFundamentals

Outbound throttling: control webhook delivery speed

Pace outgoing webhooks to a steady rate or a fixed concurrency you choose. Outbound throttling protects fragile endpoints and respects downstream rate limits, without dropping events.

Outbound throttling puts a governor between Webhook Relay and your destination. Instead of forwarding the instant an event arrives, Webhook Relay holds each webhook and releases it at the pace you set — turning a jagged spike into a smooth, predictable stream your server can handle. Nothing is dropped to keep the pace; throttled webhooks wait their turn, oldest first.

Throttling is available on every plan. For the product overview, see the throttling feature page.

Why throttle outgoing webhooks

A quiet integration can turn into a flood without warning — a provider replays a backlog, a sale goes live, or a batch job fires thousands of events at once. Webhook Relay absorbs that spike easily, but your destination might not. The usual symptoms are timeouts, 429 Too Many Requests responses, a database pegged at 100%, and failures that cascade past the webhook endpoint.

Throttling solves this without you having to stand up a queue, add workers, and write your own backpressure logic.

Two ways to set the pace

ModeWhat it doesUse it when
RateDeliver at most N webhooks per second, minute or hour.A downstream API allows 100 calls/minute, or an endpoint copes up to 20 req/s.
ConcurrencyCap how many deliveries are in flight at once.You want strictly one-at-a-time delivery (set it to 1), or a fixed amount of parallelism.

You can use either on its own or both together — for example "no more than 50/second and at most 5 in flight". Webhook Relay never exceeds whichever limit is tighter.

Turn on throttling

Throttling is configured per output destination, so each destination gets its own budget and a slow consumer can't starve the rest.

  1. Open your bucket and select the output destination you want to pace.
  2. In Delivery controls, open Throttling and switch it on.
  3. Set a Rate (e.g. 100 per minute) and/or a Concurrency limit (e.g. 5).
  4. Optionally set a queue limit to enable backpressure (see below), then Save.

New webhooks to that destination are now released at the pace you chose. Events waiting for their turn appear in the request log in order and go out the moment there's room.

Backpressure with a queue limit

By default, throttled webhooks simply wait in line. Add an optional queue limit and Webhook Relay pushes back at the source instead of building an endless backlog: once a destination's queue is full it returns a standard 429 Too Many Requests, so a runaway sender slows down. Anything still waiting past its deadline is cleaned up automatically, so queues never rot.

Works for public and internal destinations

Throttling behaves the same for:

  • Public HTTPS endpoints — your API, a partner's API, any SaaS webhook URL.
  • Internal destinations — services behind your firewall or on localhost reached through the Webhook Relay agent. This is especially useful when the thing you're protecting is a small service on your own infrastructure.

Better together with durable retries

Throttling decides how fast; durable retries decide how long. Turn on both and retries to a recovering endpoint respect the same speed limit as fresh traffic — so you never accidentally finish off a server that's only just getting back on its feet.

Frequently asked questions

Does throttling drop webhooks?

No. Throttling only changes when a webhook is delivered, not whether. Events wait their turn in order and go out as soon as there's capacity. (If you also set a queue limit, senders get a 429 once the queue is full, rather than events being silently discarded.)

What's the difference between rate and concurrency?

Rate caps how many webhooks leave per unit of time (e.g. 100/minute). Concurrency caps how many deliveries are in flight simultaneously (e.g. 5 at once). Rate controls throughput; concurrency controls parallel load. Use whichever matches the limit your destination cares about — or both.

Can I match a downstream API's rate limit exactly?

Yes — set the rate to the same budget the downstream API allows (for example 100 per minute) and Webhook Relay will never exceed it, so you stop getting rate-limited.

Is throttling available on the free plan?

Yes. Outbound throttling is included on every plan.

Did this page help you?