Reliability

Do you need a public status page? A guide for small teams

A status page is the cheapest support engineer you will ever hire — provided it tells the truth, and provided someone can find it before they open a ticket.

A status page showing per-component health and an open incident

A small SaaS product or an agency managing client sites needs a status page from the moment a second person would otherwise ask "is it just me?" — because that question, multiplied, is the support load of every incident. The page shows, per component, whether it is operating normally, degraded or down, plus any open incident with timestamped updates, and it is generated from the same monitoring that detects the problem rather than updated by hand. For agencies, a private per-client page reached by a token URL is often better than a public one: the client sees their own assets, and nobody else sees the client list. The rules that make a status page worth trusting are short: automatic, honest, and updated before the tickets arrive.

Key takeaways
  • The status page's job is to answer "is it just me?" before the ticket is written. Every incident, that is the majority of the support load.
  • It must be driven by monitoring, not edited by hand. A page that says "all systems operational" during an outage is worse than no page.
  • Agencies: a private per-client page via token URL shows a client their own assets without publishing your client list.
  • Post the first update within minutes of detection, even if it only says "we are investigating". Silence is what people screenshot.
  • Show history. Ninety days of honest uptime is a sales asset; a page with no history looks like it was made this morning.

When it earns its place

When it does not: an internal tool with twenty users who sit near you. Tell them in the channel.

What it should show

ComponentsThe three to eight things a user would name: web app, API, login, payments, email delivery, the client's site
State per componentOperational · Degraded · Partial outage · Major outage — derived from monitoring, not typed
Open incidentsTitle, affected components, timestamped updates newest first, current status (investigating, identified, monitoring, resolved)
Scheduled maintenanceAnnounced in advance, with a window; excluded from the SLA if your terms say so
HistoryPast incidents and uptime for the last 30–90 days, per component

What it should not show: internal component names nobody outside recognises, every micro-service, or a green tick that is not connected to anything.

Public page, private page, or both

A public page suits a SaaS product: one URL, linked from the footer and from every error message, indexed so "is [product] down" finds it. A private page — reached by a token in the URL, not by login — suits agencies and B2B vendors: each client sees only their own assets, the URL goes in the onboarding email and the monthly report, and the agency's client list stays confidential. Many teams need both: public for the product, private per client for managed sites. The data behind them is the same monitoring.

The honesty rules

  1. Automatic state. Component state comes from the monitoring checks. If the checks fail, the page changes, whether or not anyone has looked yet. A hand-edited page lags by exactly the time it takes someone to notice, which is the time you were trying to eliminate. Reducing time to detect.
  2. First update fast. "Investigating elevated errors on the API since 14:02" within minutes beats a polished paragraph an hour later.
  3. Say what users see, not what you think is broken. "Login may fail intermittently" is useful; "database connection pool exhaustion" is a diary entry.
  4. Attribute dependencies honestly — "caused by an outage at our payment provider" — but do not hide behind them. It is still your incident to your users.
  5. Never rewrite history. An incident that happened stays in the history. Deleting it is discovered eventually and costs more than the incident did.

An incident update template

Investigating — "Since 14:02 IST some users are seeing errors when saving. We are investigating. Next update within 30 minutes."
Identified — "The cause is a failed deploy at 13:58; we are rolling back. Saving may fail until the rollback completes."
Monitoring — "Rollback completed at 14:21. Error rates are back to normal; we are monitoring."
Resolved — "Resolved at 14:45. Duration 43 minutes. Affected: saving in the web app. A summary will follow in the monthly report."

Four states, each with a time, each promising the next update. That is the whole discipline. The monthly SLA report is where the fuller account goes.

Quick reference

PurposeAnswer "is it just me?" before the ticket is opened
State sourceMonitoring checks — automatic, never hand-edited
Components3–8 things users would name
Incident statesInvestigating → Identified → Monitoring → Resolved, each timestamped
Private pagesToken URL per client; no login; client list stays confidential
History30–90 days per component; never deleted

Frequently asked questions

Does a small SaaS need a status page?

Yes, from the first paying users. The first outage without one produces a ticket from every affected user asking the same question. A status page driven by your monitoring answers that question automatically and cuts incident support load to a fraction, and its history becomes evidence of reliability for prospects.

Should an agency have a status page for client websites?

Yes, but usually a private one per client rather than a public one. A per-client page reached by a token URL shows the client their own sites' state and incident history without publishing the agency's client list, and it belongs in the onboarding email and the monthly SLA report as part of the maintenance retainer.

What should a status page show?

The handful of components a user would name, each with a state derived from monitoring; any open incident with timestamped updates and a current status; scheduled maintenance; and 30–90 days of history. It should not list internal services nobody recognises or show a green state that is not connected to real checks.

Should a status page be updated manually or automatically?

Component state should be automatic, driven by the same checks that detect the failure, so the page changes before anyone has looked. Incident narrative — what users see, what is being done, when the next update is due — is written by a person, quickly, in four states: investigating, identified, monitoring, resolved.

What is the difference between a public and a private status page?

A public page has one URL anyone can open and is right for a product with many users. A private page is reached by a secret token in the URL, without a login, and shows one client only their own assets — right for agencies and B2B vendors who do not want to publish who their clients are. The monitoring behind both is the same.

How quickly should I post a status update during an incident?

Within minutes of detection, even if it only says you are investigating and when the next update will come. The first update's purpose is to stop the tickets, not to explain the cause. Follow with identified, monitoring and resolved states, each timestamped.

How Merik handles it

Merik's Digital Operations module includes status pages that are generated from the monitoring, not typed. Each client's assets can be exposed on a private page reached by a token URL — no login, no client list — showing per-asset state, open incidents with their timeline, and history. Because component state comes from the same outside-in checks that open the incident, the page changes when the failure is confirmed, before anyone has been alerted, and returns to normal when the checks recover.

Incidents carry deploy markers from GitHub and Vercel webhooks and dependency context from vendor status feeds, so the narrative on the page can say honestly whether it was a deploy or a provider. The same data produces the monthly per-client SLA report. See the Digital Operations module.

Create your workspace →

Or talk to us about your team →