Docs > Getting Started > Getting Started with Status Pages
Getting Started with Status Pages
Overview
This guide introduces AppStatus Status Pages and covers:
- Public and private status pages with custom domains
- 7 editor tabs: Settings, Structure, Updates, Maintenance, Subscribers, Translations, Advanced
- Monitor-to-component mapping with custom display names
- Password protection with Argon2id hashing
- Email subscriber management with verification
- Design themes: modern/classic with light/dark/system modes
- Custom CSS/JavaScript injection for full control
- Multi-language translations support
What are AppStatus Status Pages?
Status Pages provide transparent, real-time communication about service availability and incident progress. They map your internal monitors to public-facing components with custom display names, uptime history, and incident timelines — giving stakeholders visibility without exposing internal infrastructure.
Each status page is configured through a 7-tab editor covering identity, component mapping, incident updates, scheduled maintenance, subscriber management, translations, and advanced settings. Pages support custom domains, password protection, search engine control, and full design customization through themes, custom CSS, and JavaScript injection.
Key capabilities:
- Subdomain hosting: {slug}.yourdomain.com with automatic wildcard SSL
- Custom domain support with CNAME configuration
- Password protection using Argon2id (64KB memory, 4 iterations, 4 threads)
- Auth cookie: HTTP-only, 30-day expiry, constant-time comparison
- Email subscribers with verification tokens and unsubscribe
- Announcement-triggered subscriber emails
- Monitor mapping with custom display names, ordering, and visibility toggles
- Per-monitor uptime history toggle and section grouping
- Status page groups for organizing multiple pages
- Design: modern_look/classic, light/dark/system theme, custom primary color
- Custom CSS and JavaScript injection
- Multi-language translations via JSONB
- Auto-refresh: public page updates every 10 seconds
- Incident display with min_incident_length filter
Status Page Workflows
Each workflow maps to real AppStatus features and API endpoints used in the main app.
Domain & Identity
Status page core identity is configured in editor settings with mandatory name + slug and optional custom domain/support endpoints.
- Set company/page name and choose unique slug (availability check is built-in).
- Configure homepage URL, support contact, description, logo, and favicon.
- Apply design/theme settings and timezone/history retention policy.
- Use custom domain only after DNS/TLS readiness.
Troubleshooting
Custom domain not working
Verify DNS CNAME record points to your status page subdomain. TLS certificate must be provisioned — check your wildcard SSL configuration. Custom domains are only resolved after DNS propagation (up to 48 hours).
Password protection not blocking access
Check password_protected is true and a password is set. The system uses HTTP-only cookie (status_page_auth_{id}) valid for 30 days. Clear browser cookies to re-test. Minimum password length is 4 characters.
Subscribers not receiving emails
Verify subscribers are both is_verified and is_active. Check notify_subscribers is enabled on the status page. Announcement changes auto-create status_page_updates entries. Review email delivery logs.
Monitor status not updating on public page
Public pages auto-refresh every 10 seconds. Verify the monitor is mapped in the Structure tab and is_visible is true. Check if the status page is_active and is_public.
Custom CSS/JavaScript not applying
Custom CSS/JavaScript is injected by the server. Verify the code is syntactically valid. Check browser developer tools for errors. Custom styles may be overridden by the base theme — use !important selectively.
Operational Guidance
- Avoid manual status overrides unless explicitly required.
- Use pre-approved update templates during live incidents.
- Review subscriber growth and delivery reliability monthly.
Step-by-Step Setup
A status page is how your customers find out about an outage without opening a support ticket. You pick a slug (e.g. acme-status.appstatus.io), map your monitors to public components (e.g. "API", "Web dashboard"), brand it with your logo and colours, and optionally point a custom domain. Incident updates posted from the Incidents page show up on the public page automatically.
Before you start
- At least one monitor to display as a public component
- A short slug for the page (e.g. "acme-status") — must be globally unique
- (Optional) A domain you can add a CNAME for, if you want a branded URL
- 1
Open Status pages from the sidebar
The list shows every status page in the workspace, public and private. The status column tells you whether the page is currently published.
WhereSidebar → Status pages - 2
Click "+ Create status page"
The editor opens in a draft (private) state. You can fully build and preview the page before flipping it to public — visitors see nothing until you publish.
WhereStatus pages → + Create status page - 3
Pick a unique slug
The slug becomes the subdomain (e.g. acme-status → acme-status.appstatus.io). The form checks availability live as you type and shows a green tick when the slug is free.
WhereEditor → Identity → SlugTipChoose carefully — changing the slug later breaks any existing bookmarks and the SEO ranking of the page.
- 4
Add branding
Upload your logo and favicon, set a homepage URL and a support contact, write a short description. These show in the page header and footer and give customers the context they expect.
WhereEditor → Branding → Logo, Favicon, Homepage URL, Support contact, Description - 5
Map monitors to public components
Public visitors see "components" with friendly names ("API", "Web dashboard", "Mobile app"), not your internal monitor names. Pick which monitors to expose, give each one a display name, and drag to reorder. Each component shows green when its monitor is UP.
WhereEditor → Structure → Components → Add monitor - 6
Choose visibility settings
Decide who can see this page: public (anyone with the URL), public + password-protected (gated portal for customers), or private (workspace members only). Toggle "Show uptime history" and "Show incident history" based on how transparent you want to be.
WhereEditor → Visibility → Public / Password-protected / Private - 7
(Optional) Add a custom domain
For status.yourcompany.com instead of yourcompany.appstatus.io, paste your domain into the Custom domain field. Then add a CNAME record in your DNS pointing to status.appstatus.io. TLS provisions automatically within a few minutes.
WhereEditor → Branding → Custom domainTipSave the page first — the editor shows you the exact CNAME target after you save.
- 8
Preview before publishing
The "Preview" button (top-right) opens the page in a new tab using the slug subdomain. Anonymous visitors still cannot reach it because the page is private — this preview uses a signed link visible only to you.
WhereEditor → Preview (top-right) - 9
Publish
Flip the "Public" toggle to On and click Save. The page becomes reachable at https://<slug>.appstatus.io (or your custom domain). Customers can now visit it and subscribe to incident updates.
WhereEditor → Visibility → Public: On → Save
Configuration Options
Every option you can set, what each choice means, and what to pick. Use this as a reference while you fill in the form.
Visibility options
| Field | Options | What it does | Recommended |
|---|---|---|---|
| Public | On / Off | Anyone with the URL can view; the page is indexable by search engines. | On for customer-facing services. |
| Password-protected | Set / Clear password | Visitors must enter a shared password — useful for partner-only or beta-customer portals. | For private SaaS rolling out to one customer at a time. |
| Show uptime history | On / Off | Displays a 90-day uptime bar under each component. | On — builds trust and shows you have nothing to hide. |
| Show incident history | On / Off | Lists past incidents below the current status. | On for established services; Off for brand-new pages with no track record yet. |
| Minimum incident length | 0 / 60s / 5 min / 15 min | Hides ultra-short blips from the public timeline. | 5 minutes — filters flap noise without hiding real outages. |
| Search-engine indexable | On / Off | Toggles the noindex meta tag. | On for public pages so customers can Google your status. |
Component options
| Field | Options | What it does | Recommended |
|---|---|---|---|
| Linked monitor | Any monitor in the workspace | Drives the component's status; UP/DEGRADED/DOWN inherited from monitor state. | One monitor per component — keeps signal clean. |
| Display name | Free text | Customer-facing name (e.g. "Public API", not "prod-gateway-eu-west-1"). | Short, jargon-free, customer-recognisable. |
| Group | Optional group name | Groups related components under a heading (e.g. "Web", "API", "Mobile"). | Group when you have more than 5 components. |
| Order | Drag to reorder | Sets the display order on the public page. | Put the most customer-critical components on top. |
Feature Reference
Every feature, where to find it in the app, and what it does. Use this when you know what you want to do but not where it lives.
| Feature | Where in app | Description |
|---|---|---|
| Create page | Sidebar → Status pages → + Create status page | Draft a new page with branding, components and visibility settings. |
| Slug availability check | Editor → Identity → Slug (live check) | Confirms the subdomain is free before you save. |
| Branding | Editor → Branding | Logo, favicon, homepage URL, support contact, description. |
| Component mapping | Editor → Structure → Components | Bind monitors to public components with display names and order. |
| Custom domain | Editor → Branding → Custom domain + DNS CNAME | Branded status.yourcompany.com with automatic TLS provisioning. |
| Password protection | Editor → Visibility → Password-protected | Gate private status pages with a shared password. |
| Subscribers | Public page → Subscribe button | Customers subscribe by email for incident open / update / resolve. |
| Incident filter | Editor → Visibility → Minimum incident length | Hides ultra-short blips from the public timeline. |
| Multilingual | Editor → Translations | Per-locale name + description for international customer bases. |
| Preview | Editor → Preview (top-right) | Signed-link preview before publishing so only you can see drafts. |
Next Steps
Continue building your monitoring stack:
Set up Monitors
Create health checks to drive status page component states.
Configure Alerts
Get notified when status page components change state.
Manage Incidents
Publish incident updates on your status page.
Team Governance
Control who can publish updates to status pages.
Set up Heartbeats
Monitor cron jobs that affect status page components.
Install the Agent
Get deeper infrastructure insights for status components.
