Internal vs Public Status Page: Key Differences and When You Need Both
Internal and public status pages serve different audiences with different information needs. This guide explains what goes on each, when to run both, and how to manage them without doubling your workload.
Most teams think of a status page as one thing: the public page customers check during an outage. That is the right starting point. But as your product and team grow, one page cannot serve two different audiences without compromising both.
Your customers need to know whether the service they pay for is working. Your engineering team needs to know whether every internal dependency, staging environment, third-party vendor, and infrastructure component is healthy.
Those are different pages.
What Each Page Is For
Public status page
The public status page communicates service health to customers, prospects, and users. It answers: is the product working right now?
Public pages surface:
- Customer-facing services and features
- Active and historical incidents
- Planned maintenance windows
- SLA compliance data (if you publish it)
Public pages do not surface:
- Internal infrastructure components
- Staging and test environments
- Third-party vendor health that is outside your control
- Technical implementation details
The audience for a public page is non-technical. A support rep, a customer success manager, and an end user all need to read and understand it. Language should be plain. Component names should match what customers call your product, not what engineers call your services internally.
Internal status page
The internal status page communicates system health to your engineering and operations team. It answers: what is the current state of every dependency in our stack?
Internal pages surface:
- All services including non-customer-facing ones
- Infrastructure components: databases, queues, caches
- Third-party vendor health: payment processors, auth providers, CDN, DNS
- Staging and pre-production environments
- Internal tooling
- Alert counts and noise trends
The audience is technical. Engineers referencing the internal page during an incident need detail, not clarity. Component names should be specific: payment-api-prod not "Payments."
The Problem With Using One Page for Both Audiences
When the same page serves customers and engineers, it fails both.
Engineers need more than customers see. Your internal database health, queue depth, and background worker status are critical during incident response but meaningless and potentially alarming to customers. Showing every infrastructure component on a public page creates confusion: a customer who sees "RabbitMQ - Degraded" does not know whether that affects their product or not.
Customers need less than engineers see. An external status page with 40 components showing mostly green teaches customers to stop looking at it. The cognitive load of parsing your entire infrastructure is not a customer experience you should create.
Maintenance operations affect them differently. A database migration that engineers monitor closely may have zero customer-facing impact. Showing it as a maintenance window on the public page creates unnecessary concern.
Side-by-Side Comparison
| Aspect | Public status page | Internal status page |
|---|---|---|
| Primary audience | Customers, users, prospects | Engineers, SREs, on-call team |
| Component granularity | Product features and services | Individual services, databases, queues, vendors |
| Language | Plain language ("Payments") | Technical names ("payment-api-prod-eu") |
| Staging environments | Not included | Included |
| Third-party vendor health | Optional (only if it directly explains customer impact) | Always included |
| Historical incidents | Yes, with customer-facing summaries | Yes, with full technical timeline |
| Access control | Public | Internal only (IP restriction or auth) |
| Incident update frequency | Every 15-20 minutes | Continuous |
What Goes on Each Page
Public page components (examples)
- App / Dashboard
- API
- Login / Authentication
- Notifications
- Billing
- File uploads or media delivery
- Third-party integrations (if customer-visible)
Internal page components (examples)
Everything above, plus:
- Database (primary and replicas)
- Job queue (names and depths)
- Cache layer
- CDN / edge network
- DNS
- Email delivery (SendGrid, Postmark, etc.)
- Payment processor (Stripe, Braintree)
- Auth provider (Auth0, Okta, Clerk)
- Each microservice or internal API
- Staging environment
- Monitoring system itself
When to Run Both
Start with the public page. Every product with paying customers needs a public status page before anything else.
Add the internal page when any of these conditions apply:
Your team has more than 5 engineers. Shared visibility into the full stack prevents duplicate investigation work during incidents. When the database is known-healthy and displayed on a shared internal page, the engineer who would have checked the database first can skip to the next hypothesis.
You have multiple teams or services with different owners. An internal status page lets each team see whether the problem is in their domain or somewhere upstream.
You monitor third-party vendors. Vendor health belongs on the internal page so engineers can rule out dependencies quickly. It does not belong on the public page unless a vendor outage directly explains customer-facing symptoms you need to communicate about.
On-call response time matters. An internal dashboard with all service health visible in one place reduces mean time to diagnose (MTTD) for individual responders. Instead of opening six different dashboards, they open one.
Managing Both Without Doubling Your Workload
The concern teams have about running two status pages is maintenance: "we'll have to update both during every incident."
In practice, the two pages serve different update schedules and levels of detail.
During an incident:
- Internal page: your monitoring tool updates it automatically as checks fail and recover. No manual action.
- Public page: you post three to five human-written updates at 15-20 minute intervals. This is the same work you'd do with a single page.
For planned maintenance:
- Internal page: engineering calendar entry or tooling notification. Low ceremony.
- Public page: written customer notification 24-48 hours in advance with expected impact.
The difference in workload between one and two pages is small. The difference in clarity for both audiences is significant.
Access Control for Internal Pages
The internal status page needs to be private. Options:
IP allowlisting - restrict access to office IPs or VPN. Works for teams with consistent network setups. Breaks for remote-first teams without a reliable VPN.
Authentication - require login via SSO or your internal identity provider. More reliable for distributed teams.
Password protection - lightweight option for small teams. Not suitable if the page displays sensitive operational information.
Choose the access control that matches your security policy. The internal page will show database states, vendor dependencies, and infrastructure topology. Treat it with the same access controls as your internal dashboards.
Linking the Two Pages
The two pages should reference each other where appropriate.
On the public page: during incidents caused by a third-party vendor, you can state "this incident is related to a vendor outage" without exposing internal infrastructure details.
On the internal page: link to the corresponding public incident so responders can see what customers have been told and ensure consistent messaging.
Quick Setup Summary
Public status page:
- Create in your monitoring tool (Vantaj, Better Stack, Statuspage)
- Add customer-facing components only
- Set a custom domain (
status.yourdomain.com) - Link from your app, docs, and support pages
- Configure subscriber notifications
Internal status page:
- Create a second page in your monitoring tool, or use a dedicated internal dashboard
- Add all services, infrastructure components, and vendor monitors
- Restrict access to internal users only
- Link from your
#incidentsSlack channel description so responders can find it instantly