Glossary · Reliability

Strict FIFO

Per-webhook ordering mode where the head delivery blocks subsequent ones until it succeeds or terminally fails.

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.created followed by a subscription.updated should 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