AppStatus Documentation Hub for Production Operations

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.

  1. Set company/page name and choose unique slug (availability check is built-in).
  2. Configure homepage URL, support contact, description, logo, and favicon.
  3. Apply design/theme settings and timezone/history retention policy.
  4. 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. 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. 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. 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 → Slug
    Tip

    Choose carefully — changing the slug later breaks any existing bookmarks and the SEO ranking of the page.

  4. 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. 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. 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. 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 domain
    Tip

    Save the page first — the editor shows you the exact CNAME target after you save.

  8. 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. 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

FieldOptionsWhat it doesRecommended
PublicOn / OffAnyone with the URL can view; the page is indexable by search engines.On for customer-facing services.
Password-protectedSet / Clear passwordVisitors 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 historyOn / OffDisplays a 90-day uptime bar under each component.On — builds trust and shows you have nothing to hide.
Show incident historyOn / OffLists past incidents below the current status.On for established services; Off for brand-new pages with no track record yet.
Minimum incident length0 / 60s / 5 min / 15 minHides ultra-short blips from the public timeline.5 minutes — filters flap noise without hiding real outages.
Search-engine indexableOn / OffToggles the noindex meta tag.On for public pages so customers can Google your status.

Component options

FieldOptionsWhat it doesRecommended
Linked monitorAny monitor in the workspaceDrives the component's status; UP/DEGRADED/DOWN inherited from monitor state.One monitor per component — keeps signal clean.
Display nameFree textCustomer-facing name (e.g. "Public API", not "prod-gateway-eu-west-1").Short, jargon-free, customer-recognisable.
GroupOptional group nameGroups related components under a heading (e.g. "Web", "API", "Mobile").Group when you have more than 5 components.
OrderDrag to reorderSets 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.

FeatureWhere in appDescription
Create pageSidebar → Status pages → + Create status pageDraft a new page with branding, components and visibility settings.
Slug availability checkEditor → Identity → Slug (live check)Confirms the subdomain is free before you save.
BrandingEditor → BrandingLogo, favicon, homepage URL, support contact, description.
Component mappingEditor → Structure → ComponentsBind monitors to public components with display names and order.
Custom domainEditor → Branding → Custom domain + DNS CNAMEBranded status.yourcompany.com with automatic TLS provisioning.
Password protectionEditor → Visibility → Password-protectedGate private status pages with a shared password.
SubscribersPublic page → Subscribe buttonCustomers subscribe by email for incident open / update / resolve.
Incident filterEditor → Visibility → Minimum incident lengthHides ultra-short blips from the public timeline.
MultilingualEditor → TranslationsPer-locale name + description for international customer bases.
PreviewEditor → Preview (top-right)Signed-link preview before publishing so only you can see drafts.

Next Steps

Continue building your monitoring stack: