Paste your failed Stripe webhook delivery rows or event JSON, then select Build replay plan. A sample outage with out-of-order subscription and invoice events is loaded so you can try it right away.
About the Stripe webhook replay planner
The Stripe webhook replay planner takes the failed deliveries from a webhook outage and turns them into a safe replay plan. Paste the failed delivery rows or the raw Stripe event JSON, and the tool sorts the events into chronological order by their created timestamp, flags duplicate event ids and events that touch the same object, and writes an idempotency checklist so a replay does not double-process anything. It is built for the moment after an endpoint was down or rejecting deliveries and you need to reprocess a backlog without corrupting subscription or invoice state.
A sample outage is loaded so you can see a plan right away: out-of-order subscription and invoice events, plus a duplicate delivery, ordered into the sequence you should replay them in. Switch to the delivery-rows sample to see the simple paste format. Everything runs in your browser. The pasted rows and event JSON are never uploaded, logged, or stored. When the plan looks right, download the replay CSV to work the backlog or copy the outage note for your incident channel.
How to use
- Gather the failed deliveries from your Stripe Dashboard webhook attempts or your own logs.
- Paste them as raw event JSON (a single event, an array, or a Stripe events list) or as delimited rows of event id, type, created, and delivery status.
- Select Build replay plan to sort the events chronologically and flag duplicate and shared-object risk.
- Read the replay order and the idempotency checklist before you reprocess anything.
- Download the replay CSV to work the backlog, or copy the outage note for your incident write-up.
Worked examples
Out-of-order events get sorted for replay
The sample outage has the invoice event pasted before the subscription that it depends on. The planner sorts them by created timestamp so you replay the subscription first.
A duplicate delivery is flagged high risk
The sample includes the same event id delivered twice. The planner marks both rows high duplicate risk and reminds you to guard your handler with an idempotency key on event.id.
Rows that touch the same object are grouped
Several events touch the same subscription object. The planner flags them so you replay them in order and state transitions apply cleanly.
Frequently asked questions
- What can I paste in?
- Three shapes at first ship. Raw Stripe event JSON: a single event object, an array of events, or a Stripe events list with a data array. Or delimited rows, one event per line, with columns in this order: event id, event type, created (unix seconds or an ISO timestamp), and delivery status, separated by a pipe, tab, or comma. A header row is detected and skipped. Lines that match neither shape are reported as parse warnings instead of silently dropped.
- How does it decide the replay order?
- It sorts every parsed event by its created timestamp, ascending, which is the order Stripe generated them and the order they should be reprocessed. Events with no timestamp are placed after the timestamped ones, in the order you pasted them, and are called out so you can confirm their real position before replay.
- How does it detect duplicates and ordering risk?
- Two checks. If the same event id appears more than once, every row with that id is flagged high duplicate risk, because re-delivering it should be a no-op in a correct handler. If more than one event touches the same Stripe object id (for example several events on one subscription), those rows are flagged so you replay them in the listed order and the object's state transitions apply cleanly.
- Is my pasted data sent anywhere?
- No. The planner parses and sorts the events in your browser. The pasted rows and event JSON are never uploaded, logged, or stored, and the CSV and outage note you export are generated locally. The only analytics recorded are coarse bands, such as a bucketed event count and a bucketed duplicate-risk level, never event ids, types, object ids, endpoint urls, or any pasted value.
- Can it replay the webhooks for me?
- No. This is a planning aid, not a replay executor. It produces the order to replay in and the checks to apply, but you reprocess the events with your own tooling or the Stripe Dashboard. First ship exports a review CSV and an outage note, not executable Stripe CLI commands.
Use this again tomorrow
Save this page so it's one tap away when you need a quick result.
Ready for a quick Daily Challenge?
Play Daily Challenge on sts.games