Status pages
Status Page Best Practices
How to design, publish, and maintain a status page customers trust — component structure, update cadence, maintenance windows, subscriber comms, and mistakes that erode confidence during outages.
On this page
A status page is your public contract with customers during incidents and maintenance. Done well, it cuts support tickets, prevents “is it down for everyone?” panic, and shows you are in control. Done poorly — stale timestamps, vague language, components that do not match reality — it makes a bad outage worse.
This guide covers practical habits engineering and comms leads use to keep status pages accurate, useful, and calm under pressure.
What a good status page does
| Audience | What they need |
|---|---|
| Customers | Is it me or them? What is broken? When will it fix? |
| Support | A canonical link to send instead of custom replies |
| Engineering | Alignment with internal incident severity and timeline |
| Leadership | Visible evidence that comms are handled |
A status page is not a monitoring dashboard. Customers do not need stack traces, pod names, or internal queue depths. They need impact in plain language and honest progress.
Structure components the way customers think
Group services the way your users experience the product — not the way your microservices are deployed.
Good component examples:
- Login & authentication
- Checkout & payments
- API
- Mobile app
- Dashboard
Weak component examples:
payments-service-v2us-east-1-kafkalegacy-monolith(unless customers know that name)
| Principle | Why it helps |
|---|---|
| User-facing names | Customers self-serve without translating jargon |
| Right granularity | Too many components = noise; too few = vague impact |
| Stable over time | Renaming components every quarter confuses subscribers |
| Match severity | Degraded vs partial outage vs major outage per component |
If one backend failure affects three customer-facing areas, update each affected component — do not hide impact behind a single “API” line unless that is how customers think about it.
When to publish (and when not to)
Publish when real customer impact exists or is likely:
- Errors, timeouts, or failed transactions
- Missing data or stale reads customers notice
- Third-party dependency failures you own in the SLA story
Usually skip the public page when:
- Internal tools or admin panels break with no customer path
- Pre-production environments fail
- You are still validating a single monitor blip with no user reports
Tie publishing to severity, not panic. Our severity levels guide helps: Critical and High with external impact almost always get a status post; Medium depends on breadth; Low rarely does.
Write updates customers can use
Each update should answer four questions:
- What is affected?
- What are customers experiencing?
- What are you doing now?
- When is the next update?
Status progression (keep it familiar)
| Phase | Customer-facing label | What to say briefly |
|---|---|---|
| Early | Investigating | We see impact; cause unknown; next update at |
| Narrowing | Identified | We know the cause area; fix in progress |
| Active fix | Monitoring | Fix deployed; watching metrics |
| Done | Resolved | Impact ended; brief summary optional |
Avoid internal codes (“SEV-1”, “rollback in progress on cluster B”) unless your audience expects them.
Cadence during long incidents
- Post the first update quickly — even “we are investigating.”
- State the next update time and honor it.
- If nothing changed, say so: “Still investigating; next update at 14:30 UTC.”
- When scope shrinks or grows, say so explicitly.
Copy our status page update template for consistent wording under stress.
Maintenance windows deserve the same care
Planned work should not surprise subscribers.
Before:
- Announce with enough lead time for your audience (hours to days).
- List affected components and expected impact (read-only mode, brief errors, no impact).
- Note timezone on start/end.
During:
- Start the window on time; mark components maintenance or degraded as appropriate.
- If work runs long, extend with a new end time — do not let the page show a past end time.
After:
- Close maintenance promptly; return components to operational.
- If unexpected issues appeared, transition to an incident post — do not pretend the window succeeded silently.
Use the maintenance window template for a repeatable checklist.
Subscribers, branding, and trust signals
- Email subscribers should get the same facts as the page — not a different story.
- Branding (logo, colors, domain) signals legitimacy; a generic subdomain is fine early, custom domain helps mature products.
- History matters: resolved incidents and completed maintenance show you track reliability over time — not only crises.
- “All systems operational” when something is wrong is worse than no page. Auto-green only when monitors and human review agree.
Connect status pages to incident response
Status pages work best when they are fed from the same incident record your engineers use — not a separate Slack thread someone forgets to update.
| Practice | Benefit |
|---|---|
| One owner for external comms | No contradictory tweets and status posts |
| Link severity to publish rules | Fewer debates during the outage |
| Timeline matches internal events | Post-mortems and customer comms align |
| On-call knows who publishes | Page updates do not wait for a manager |
The incident commander or a designated comms lead usually owns wording; engineering owns facts. On-call brings the first responder; status pages bring the customer.
Common mistakes
- Radio silence — Customers assume the worst and flood support.
- Over-promising ETAs — “Fixed in 10 minutes” repeated three times destroys credibility.
- Component sprawl — Forty green checks obscure the one red line that matters.
- Copy-paste from war room — Internal jargon on a public page confuses more than it helps.
- Forgotten maintenance — Window ends in the tool but the page still shows degraded.
- Publishing every alert — Training customers to ignore the page.
- No post-incident summary — A one-line resolved note helps subscribers close the mental loop.
Before your next outage
- Components named for customers, not repos
- Runbook line: who publishes, from which severity upward
- Update templates saved and linked from the incident workflow
- Maintenance template and subscriber lead-time agreed
- Dry run: one table-top incident with a practice status post
How Incido helps
Incido ties component health, incidents, maintenance, and subscriber email to themed public pages — so customer messaging stays aligned with the timeline your team already works in. Start a free trial or read what incident management looks like when comms are part of the same system.
FAQs
Should every incident appear on the status page?
Only when customer-facing services are degraded or down. Internal-only issues, security investigations with no user impact, and noisy alerts should stay off the public page.
How often should we post updates during an outage?
Set expectations in the first post (for example, every 30 minutes) and meet them — even if the update is "still investigating." Silence breaks trust faster than slow fixes.
Do we need a separate page per product?
Use multiple status pages when brands, regions, or customer contracts differ. One well-structured page beats several half-maintained ones.
What belongs in a maintenance notice?
Start and end time (with timezone), affected components, expected customer impact, and whether incidents are suppressed during the window.
Use the template
Plain-language templates for every public stage — incidents and planned maintenance.