Strict FIFO is a per-webhook ordering mode where deliveries process strictly in order — the next delivery in the queue waits until the previous one succeeds or terminally fails. Available on the Pro tier and above.
In standard mode, deliveries process in parallel; in strict FIFO mode, they serialize per webhook.
When ordering matters
Most webhooks don't need strict ordering. The cases where they do:
- Subscription state sequences. A
subscription.createdfollowed by asubscription.updatedshould process in that order; processing them in reverse leaves your database in a stale state. - Stateful agent flows. An agent that tracks a multi-step user journey needs the steps in order to make sense.
- Counter or balance updates. Two updates to the same counter must serialize, or you get lost increments.
If your handler is fully idempotent and order-independent, you don't need strict FIFO and you'll get higher throughput without it.
The throughput trade-off
Strict FIFO is slower than parallel delivery by definition — if delivery 1 takes 30 seconds, delivery 2 waits 30 seconds before even starting. Long retry windows on the head delivery block everything behind it.
This trade-off is intentional. If you turn it on, you're choosing correctness (in-order processing) over throughput. The relay enforces it on a per-webhook basis so you can mix strict and parallel webhooks within the same project.
What happens on terminal failure
When a strict-FIFO head delivery fails terminally (exhausts retries), the next delivery in the queue advances to head and starts. The failed delivery moves to the DLQ for inspection — it doesn't block forever.
For the broader pattern: Routing, transforms, and replay for AI agents.
Related terms
- Delivery
A single dispatch lifecycle to a destination — includes all retry attempts.
Read - Retry
Re-attempting a failed delivery on a backoff schedule until it succeeds or hits a retry budget.
Read - Fan-out
Delivering one event to multiple consumers in parallel.
Read - Attempt
One HTTP request within a delivery's retry chain.
Read