15 days until Shopify stops accepting app script tags. Is your store running one? Check your store free
Get started free
← Blog

How to set up a customer-facing status page for your store

A customer-facing status page for your store takes an afternoon to build, and its real job is narrow: absorb support tickets and stop repeat "is my order OK?" messages while a vendor outage plays out. To make it work you need three things done in advance: a page that does not depend on the platform that might be down, pre-written templates for the three outage types customers actually notice, and a named person allowed to hit publish without asking anyone.

What does a store status page actually need to do?

It is not an engineering artifact. It has four jobs:

  • Confirm to a customer that the problem is real and you know about it, so they stop retrying checkout and stop emailing.
  • Tell them what to do next in one sentence (wait, use a different payment method, expect a shipping delay).
  • Give a time for the next update so support can reply with a link instead of a guess.
  • Give your team a single source of wording so your Instagram DMs, your helpdesk macros, and your SMS reply all say the same thing.

Anything beyond that (component-level uptime charts, historical percentages) is nice but does not reduce ticket volume.

Where should the page live?

Not on the system most likely to fail. If your checkout is broken because your e-commerce platform is having an incident, a status page published as a page on that same store may be unreachable or slow at exactly the wrong moment. Options, with the trade-offs:

  • A page on your store platform (for example a Shopify page at /pages/status). Fastest to set up, zero extra cost, and fine for outages that are not platform outages, such as a shipping API or email platform failing. It fails when the platform itself is down.
  • A separate static host on a subdomain like status.yourstore.com. This survives a platform incident, but you need to create the DNS record now, not during the incident, and you need someone who can edit and deploy the file from a phone.
  • A hosted status page product. Least work, but it is another vendor that can have its own bad day, and you still have to write the copy.

Practical middle ground for a small team: create the subdomain and a single static page today, and add a link to it in your theme footer. One page, one headline, one paragraph, one timestamp. No build step.

Which scenarios should you write templates for?

Write three, not thirty. Customers only notice outages that block a purchase, hide their order, or break a promised message. Here is a starting matrix you can copy.

ScenarioWhat the customer seesOne-line instruction to publish
Payment or checkout failure Card declined, spinner, error at payment step "Card payments are failing at checkout. If you have PayPal or a wallet option available, that route is working. Your cart is saved."
Shipping, label, or tracking failure Tracking page blank or stale, "no information available" "Tracking updates are delayed for orders placed since [time]. Your parcel is moving; the tracking feed is not updating. No action needed."
Email or SMS failure No order confirmation, no shipping notification "Order confirmation emails are delayed. Your order is placed and you can see it in your account. Confirmations will send once the provider recovers."

Store these as drafts in whatever you use to publish, with the variable fields marked in brackets. The person on call should be filling in two brackets, not writing prose.

What should each update say?

Four lines, in this order, every time:

  1. Status word. Investigating, Identified, Monitoring, Resolved. Use only those four.
  2. Scope. What is affected and what is not. "Checkout is affected. Browsing, order history, and returns are working normally."
  3. Customer action. Including "no action needed" when that is the truth.
  4. Next update time. An actual clock time with a timezone, not "shortly."

On naming the vendor: say the function, not the brand, until the vendor has confirmed it publicly. "Our payment provider is experiencing an outage" is accurate and does not leave you correcting yourself. Once the vendor posts, you can link to their page and name them.

How often should you post updates?

Set the cadence from how long incidents in that category actually last, not from how anxious you feel. Over the 90 days ending September 15, 2026, incident length varied widely by service: Shopify's two major incidents averaged 62 minutes each, Shippo ran 9 major or critical incidents averaging 148 minutes, and Plaid's 4 incidents averaged 387 minutes for 1,548 minutes of total downtime. These figures come from StatusBird's independent 2-minute monitoring over the 90 days ending September 15, 2026.

That spread gives you a workable rule:

  • Checkout or payment outage: update every 20 minutes. This is the one people refresh.
  • Shipping, tracking, or fulfillment outage: update every 60 minutes. Multi-hour incidents are normal here, and 20-minute updates that say nothing new erode trust.
  • Email, SMS, analytics, or reviews outage: update at the start, once mid-incident, and at resolution.

You can sanity-check the typical duration for any service you depend on on its reliability history page, for example Shippo's reliability history or Plaid's, and the monthly totals on the outage index. How those numbers are produced is documented in the methodology.

Who publishes, and how do they find out?

Write these four lines into the page's own README or a pinned note in your ops channel:

  1. Primary publisher (name, phone number).
  2. Backup publisher if the primary has not acknowledged within 10 minutes.
  3. Publish threshold. Suggested: publish if checkout is affected at all, or if any other function has been degraded for more than 30 minutes.
  4. Who does not need to approve. Say explicitly that the publisher does not need the founder's sign-off for a templated update. Approval chains are how 10-minute outages become 90-minute silences.

For the trigger, route your outage alerts for checkout-critical services to SMS and to one Slack or Teams channel that only carries alerts. Everything else goes to that channel and email only. The signal you want is: phone buzzes, publisher opens the draft, fills two brackets, publishes.

How do you point customers at it?

An unlinked status page gets no traffic. Wire up these five placements once:

  • Theme footer link labelled "Service status." Permanent, low noise.
  • Announcement bar in your theme settings, enabled only during an incident, with the text "Checkout issues: see our status page." Keep a saved theme draft so you are not editing copy under pressure.
  • Helpdesk macro in Gorgias, Zendesk, or Freshdesk with the link plus the current update text pasted in.
  • Auto-reply on your support inbox, switched on during checkout and shipping incidents only.
  • Social bio link swap for the duration of a checkout outage, since that is where people complain first.

Do not email your full list about an outage unless the outage blocks purchases or affects orders already placed. A broadcast about a delayed-tracking incident creates more concern than it resolves.

How do you close out an incident?

Post a Resolved update with the start time, the end time, and one sentence on what customers should do if they are still stuck, such as "if your confirmation email still has not arrived by 6pm, reply to this and we will resend it." Then leave the resolved entry on the page for at least 30 days. A page with visible history and honest timestamps is far more convincing than a page that only ever says "All systems operational."

How do you test it?

Once a quarter, run a 15-minute drill. Pick a service you depend on, open its live status view, for example Shopify or ShipStation, and then have the backup publisher, not the primary, do the following from a phone: publish the templated update, enable the announcement bar, and send the helpdesk macro to a test ticket. Time it. If it takes more than five minutes, the bottleneck is usually login credentials or DNS access nobody remembers. Fix that, and note the fix in your runbook.

If you want the alert that starts this whole sequence to arrive before your customers do, StatusBird monitors 84 e-commerce services plus your own storefront every 2 minutes and sends notifications by SMS, email, Slack, Teams, and Discord. You can set it up at statusbird.io/register.

Never find out about an outage from your customers

StatusBird monitors Stripe, Klaviyo, Google Ads, Shopify, and 80+ other services your store depends on. Get an SMS alert within minutes of any outage.

Start monitoring free