How we check whether a service is down
Every five minutes, from Sydney, Virginia and Frankfurt, we try the real thing: open the store, add to cart, reach checkout. Not a ping. Not the vendor's status page.
Every number on this page was read from our own rows at .
97
services checked
every five minutes, from three countries
86,100
checks in the last 24 hours
one region trying one service once
4/4
canaries reading correctly
our own four services with known answers
0%
we couldn't check
shown in grey, never as broken
What a check is
A check is the action, not a signal that the host is up. For a service we can transact with we open the store, open a product, add it to the cart and go to the checkout; for the rest we load the hosts a store loads. Every step is tried twice before it is believed, twenty seconds apart.
Nothing here reads a vendor's status page to decide anything. We read those too, and print them beside our own answer, labelled as theirs.
A step that answers but answers slowly is recorded as slow, with the milliseconds. A step that refuses our robot is recorded as refused. Those are different facts and the pages keep them apart.
Three kinds of check, and what each is allowed to claim
We buy on our own account 2 services
We add a product to the cart on our own store, or call the API with our own key.
We use their demo 1 services
We load a product page on a store they publish as a demo.
The 1 we check this way
We load what a store loads 94 services
We load the API host, the dashboard and the script a theme includes.
The 94 we check this way
Shop Pay · PayPal · Klaviyo · WooCommerce · BigCommerce · Wix · Squarespace · Adobe Commerce · Salesforce Commerce Cloud · Ecwid · Webflow · Lightspeed · Square Online · Etsy · eBay · Amazon Seller Central · Apple Pay · Google Pay · Square · Adyen · Braintree · Klarna · Afterpay · Zip · Affirm · Authorize.net · Worldpay · Checkout.com · Mollie · Razorpay · Paystack · Wise · Payoneer · Mailchimp · Omnisend · Postscript · Attentive · SendGrid · Resend · Postmark · Brevo · ActiveCampaign · HubSpot · Meta Ads · Google Ads · Google Analytics · Google Tag Manager · TikTok Ads · Pinterest Ads · Microsoft Ads · Triple Whale · Google Merchant Center · TikTok Shop · Facebook & Instagram Shops · ShipStation · Shippo · EasyPost · Australia Post · Royal Mail · USPS · UPS · FedEx · DHL · ShipBob · Aramex · Gorgias · Zendesk · Intercom · Tidio · Judge.me · Yotpo · Okendo · Stamped · Trustpilot · Cloudflare · AWS · Google Cloud · Azure · Vercel · Netlify · Fly.io · Fastly · Akamai · DigitalOcean · GoDaddy · Namecheap · Recharge · Bold Commerce · Loox · PageFly · Shogun · Matrixify · Smile.io · Privy
A tier is a promise about what the check can support, not a rating of the company. A page never prints a sentence its own steps did not earn: if a step behind a credential did not run, the page prints the smaller sentence instead.
How three answers become one state
Broken opens on the first window that qualifies, because an outage must not wait five minutes to be published. It closes only after two clean windows, and so does slow: a service that dips back under the bar for one window has not recovered, and a page that flickers is worth less than one that is a window late.
One failure is never an outage. Every step is retried twenty seconds later, and a window's reading is the median of its attempts, so a single slow or failed try that succeeds on the retry does not move the page.
How we check ourselves
Four of the services on this network are ours, built so that we know the right answer in advance. They are the only check that can prove the rule still means what it says.
Canary (working)
must read Working
reads Working
Canary (broken)
must read Broken
reads Broken
Canary (slow)
must read Working but slow
reads Working but slow
Canary (blocked)
must read Couldn't check
reads Couldn't check
A canary reading anything other than its known answer raises an alarm to the founder within ten minutes and marks the day red in our own public log, whatever the rest of the network says. No page can earn its way out of noindex on a day a canary was wrong.
What we can't check, and say so
This network checks the services an online store depends on. It does not check your store. If a service here is working and your store is not, the fault is in your setup — your theme, an app, your domain — and that is a different check: Bilby walks your own store and shows you the screen where it stopped.
WooCommerce is not on this list and cannot be. It runs on your own hosting, so there is no shared service to check: the thing that breaks is your site, your plugins or your host. Our two WooCommerce runbooks say so and cite WooCommerce's own documentation rather than pretending we reproduced it.
No service is refusing our checks at the moment. When one does, its page says they blocked our check
in grey — never that it is broken.
Three services have no page at all, because no check we could build on them would have been worth publishing:
- Shopify Payments — the only check we could run passed on the word "card" being present in a page, which would have read working while payments failed
- Sendle — every surface we could reach answers the same whether the service works or not
- ReConvert — it has no host that answers without a merchant's store attached to the request
Questions people ask
- Why not just read the vendor's status page?
- Because that is the vendor's word about the vendor. A status page is written by the company it describes, usually after somebody has decided what to say; a checkout either takes a card or it does not. We show their line beside ours on every page, labelled as theirs, and ours is what we saw when we tried it.
- Is this the same as Downdetector?
- No. Downdetector counts people reporting a problem, which tells you how many noticed. We perform the action ourselves and publish the result with the region and the time, which tells you whether it worked from three countries ten minutes ago.
- What does "couldn't check" mean?
- That we could not get an answer: their site refused our robot, or our own checker was silent. It is our failure to look, not their failure to work, so it is shown in grey and never as the service being broken. The page says which of the two it was.
- How fast does a page update when something breaks?
- A failure from two regions in one five-minute window turns the page red inside that window. The page itself is never more than two minutes behind the checks, and it prints the time of the checks the answer rests on rather than the time you loaded it.
- Can I get the data?
- Yes. Every service has a CSV of every incident on its history page, stating the range it covers, and each page carries the same answer as JSON. There is no key and no account.