00 / guide
Why uptime checks pass while checkout or Stripe webhooks break
An uptime check asks one question: does the page load? Your checkout and your Stripe webhooks can break while the answer stays yes. Here is why, and what to watch.
01 / what CheckoutAlarm checks
a
Your page
We load one page you pick and check the status code and an expected title or phrase. One miss is not an alert. You get an email after 2 failures in a row, and another when it passes again.
b
Your Stripe account
With a read-only restricted key, we look for webhook events Stripe still hasn't delivered after about 15 minutes, endpoints that are disabled, and sales that go quiet for about 48 hours when the previous 14 days say they should still be coming in.
c
Plans
Free: 1 site, checked once a day. Pro: $19 a month, up to 3 sites checked hourly. You prove you own the site before any check runs. Compare plans
02 / why the check stays green
1
It only loads a page
A basic monitor requests a URL and reads the answer. UptimeRobot's free plan, for example, lists HTTP checks and a keyword monitor that looks for a word in the page's HTML. UptimeRobot: pricing A home page that loads says nothing about the code that runs after someone pays.
2
Webhooks go the other way
Your monitor calls your site. Stripe calls your webhook route. If that route answers with an error or a redirect, Stripe counts a failed delivery. Stripe treats any 3xx as a failure too. Stripe: fix HTTP status codes Your pages still load, so the monitor stays green.
3
Retries hide it for a while
In live mode Stripe retries a failed event for up to three days with exponential backoff. In a sandbox it retries three times over a few hours. Stripe: automatic retries Payments can go through in Stripe while your app never hears about them, and nothing looks down.
4
The endpoint is off, or in the wrong mode
Every webhook endpoint has a status of enabled or disabled. Stripe API: Webhook Endpoint object A disabled endpoint, or a live site with only a sandbox endpoint, gets no events. No page goes down.
5
The checkout page loads, but paying fails
A page check doesn't press Pay. Wrong keys, a broken redirect after payment, or a missing price can all fail behind a page that loads. To test the flow itself, use a check that clicks through it. Checkly lists browser checks with Playwright for flows like logins and checkouts. Checkly: pricing Pingdom lists transaction monitoring for flows like a shopping cart checkout. Pingdom Better Stack lists Playwright transaction monitoring. Better Stack: uptime
03 / what to watch
a
Is the page up?
A plain uptime monitor. UptimeRobot, Better Stack, Pingdom and Checkly all offer one. Better Stack's page says its free tier has 10 monitors with 3-minute checks. Better Stack: uptime
b
Does the checkout flow work?
A browser or transaction check that clicks through your flow, as above. Use a test mode or a test product so a check never makes a real charge.
c
Are webhooks being delivered?
Open your endpoint in Stripe and read the Event deliveries tab. Stripe: webhooks To find what you missed, list events with delivery_success=false. It covers the last 30 days. Stripe: process undelivered events If you route webhooks through a gateway such as Hookdeck, it has its own delivery view. Its pricing page lists a free Developer plan for up to 10,000 events. Hookdeck: pricing
d
Are sales still coming in?
If successful charges stop on a day they normally come in, check your checkout and your webhook deliveries. Compare recent charges with a normal day for your app.
04 / questions
- Why is my uptime monitor green when Stripe webhooks are failing?
- Your monitor loads a page on your site. Stripe sends webhooks the other way, from Stripe to your webhook route. That route can fail while your home page loads fine, so the monitor has nothing to catch.
- Does Stripe tell me when webhooks fail?
- Stripe's Dashboard shows each delivery and its status code on the endpoint's Event deliveries tab. In live mode Stripe retries a failed event for up to three days. You can also list events that failed delivery with the Events API and delivery_success=false, for events from the last 30 days.
- Can an uptime monitor test my checkout?
- A plain page check can't. Some monitors offer browser or transaction checks that click through a flow. Checkly, Pingdom and Better Stack each list this on their own pages.
- What does CheckoutAlarm check?
- One page you pick (status and an expected title or phrase), and your Stripe account with a read-only restricted key: undelivered webhook events (past about a 15-minute grace), disabled endpoints, and stalled sales (about 48 hours quiet vs the prior 14 days). Free checks 1 site once a day. Pro is $19 a month for up to 3 sites checked hourly. You verify you own the site first.
- Can CheckoutAlarm change my Stripe account?
- No. It uses a restricted key with read permissions only. Full secret keys are refused.
05 / where CheckoutAlarm fits
CheckoutAlarm watches the two places an uptime check can't see: Stripe's own webhook delivery state and your sales, read with a read-only key. It also checks one page. It does not run a browser, take screenshots, or click through your checkout.
CheckoutAlarm is new. It only checks sites you prove you own. How to verify
Watch my app free06 / sources
- Stripe: webhooks (delivery behavior)
- Stripe: automatic retries (up to three days in live mode)
- Stripe: fix HTTP status codes (3xx counts as a failure)
- Stripe API: Webhook Endpoint object (status)
- Stripe: process undelivered events (delivery_success, 30 days)
- UptimeRobot: pricing and monitor types
- Better Stack: uptime monitoring
- Pingdom: website monitoring
- Checkly: pricing and check types
- Hookdeck: event gateway pricing
Docs checked on Oct 19, 2026.