00 / free tool
What did that broken webhook cost?
When a Stripe webhook fails, people still pay. Your app just never hears about it. Put in your numbers to see what was at risk, and what Stripe will still retry.
01 / outage cost
Your normal day. Check Stripe, Payments.
From the first failed webhook to the fix.
100 if access or delivery only happens when your webhook runs.
$218 paid by about 7.5 customers who may not have got what they paid for
- > In live mode Stripe keeps retrying for up to 3 days. Fix the endpoint now and the waiting events should go through on the next retries. Check Event deliveries to be sure.
| If you heard about it from | Window | At risk |
|---|---|---|
| You found out after | 36 hours | $218 |
| A daily check (about 1 day) | 24 hours | $145 |
| An hourly check (about 1 hour) | 1 hour | $6.04 |
An estimate from your numbers, not a measurement. Real sales come in unevenly.
02 / did my sales stall?
No webhook errors, but no sales either? Check if the quiet spell is likely to be luck.
At your 14-day pace you'd expect about 5.7 sales in 2 days. The chance of zero by luck alone is about 0.3%.
That's unlikely to be luck. Check that checkout loads, that your price IDs are live, and that Stripe shows no failed webhook deliveries.
This treats sales as random arrivals at a steady average rate (a Poisson model). Weekends, launches and seasons break that, so treat it as a rough guide.
03 / what to do now
a
Fix the endpoint first
Find the failing status in Event deliveries and fix it, or replays fail too. The error decoder explains each status.
b
Recover what Stripe won't retry
Stripe retries live events for up to three days. Stripe: automatic retries For anything older, list undelivered events and process them yourself. Stripe: process undelivered events Stripe: manual retries Our missed webhooks guide walks through it.
c
Make it right with customers
Find payments from the outage that never unlocked anything. Customer paid but didn't get access
04 / questions
- How long does Stripe retry a failed webhook?
- In live mode, up to three days with exponential backoff. In a sandbox, three times over a few hours. If the endpoint is disabled or deleted when a retry is due, that event isn't retried.
- My webhook was broken for more than 3 days. What now?
- List events with delivery_success=false (the API returns the last 30 days) and process them yourself, skipping any you've already handled. You can resend single events from the Dashboard for 15 days, or with the Stripe CLI for 30 days.
- Did those customers get charged?
- Yes. A broken webhook doesn't stop Stripe from taking the payment. It stops your app from hearing about it, so the customer may have paid and got nothing.
- How is the quiet-spell chance worked out?
- We take your last 14 days of sales as an average rate and ask how likely zero sales in your quiet window would be by luck (a Poisson model). Real sales aren't that steady, so treat it as a rough guide.
05 / catch it next time
The table above is the whole pitch: the sooner you hear, the less is at risk. CheckoutAlarm emails you when Stripe events are still undelivered after about 15 minutes, when an endpoint is disabled, and when sales stop for 48 hours while your last 14 days say at least 3 should have come in.
Free: 1 site, checked once a day. Pro: $19 a month for up to 3 sites, checked hourly. We only check sites you prove you own, and for Stripe we only take a read-only restricted key. Compare plans
Watch my app freeFree for one app. Checked every day. No card needed.
06 / more free tools
- Stripe webhook signature checkerPaste the raw body, the Stripe-Signature header and your whsec_ secret. See if they match and why not. Runs in your browser.
- Stripe webhook error decoderPaste a webhook error or an Event deliveries status (400, 401, 307, timed out). Get what it means and the fix.