Webhook Replay Lab

Webhook Replay and Idempotency Checklist

Replay duplicate deliveries against a sandbox and count durable side effects. Two accepted deliveries should still create one effect when they represent the same scoped event.

Worked example

Synthetic inputs
Synthetic deliveryEventExpected durable effects
Initial deliveryevent-0011
Retry after lost acknowledgementevent-0011
New eventevent-0022

The retry leaves the total at one. The new event increments it to two. Compare the durable ledger with these counts after restarting the handler.

Download the synthetic example as CSV

How to run the check

  1. Record the provider account, event ID, attempt ID and expected effect.
  2. Deliver the event, simulate a lost acknowledgement, then resend it after a restart.
  3. Compare the downstream ledger with the fixture. Stop if an effect is missing or duplicated.

Use synthetic payloads and sandbox destinations. The correct key scope and retention period depend on the provider and your recovery policy.

Why count effects instead of successful responses?

Multiple delivery attempts can be accepted without repeating a database write, an email or another external effect.

Reference: GitHub webhook best practices

Follow Webhook Replay Lab on Bluesky