Docs/Status page
Status page
Publish a public page that shows the health of selected monitors — a customer-facing version of your dashboard. Status pages are a Pro feature; the Free plan doesn't include them. Pro teams get one status page.
Setup
- Settings → Status page, toggle Enabled.
- Pick which monitors to surface. By default nothing is exposed until you opt each monitor in — you choose what's public.
- Set a title and description. These render at the top of the page.
- Optional: upload a logo, pick a theme (light/dark/auto) or paste custom CSS for brand-matching tweaks.
URLs
Each status page is hosted at:
https://uptime.statusharbor.io/<page-id>.html…with a JSON-feed sibling at /<page-id>.json for embedding the
status badge into other pages. Point a custom domain at the page
and the JSON also lives at https://your-domain/status.json so
embedding code doesn't need to know the page id.
What's shown
- A live status badge per published monitor (operational / down).
- 24h / 7d / 30d uptime percentages (rolling, recalculated when an incident resolves — see Uptime).
- A 90-day daily timeline — one bar per day, colored by that day's uptime: green ≥ 99%, yellow ≥ 95%, red below, gray for days with no data.
- Recent response time if you've enabled that toggle.
- Incident history — current and resolved — if you've enabled it.
The page is read-only for visitors. Acknowledge / resolve actions stay in the dashboard.
Uptime
The 24h / 7d / 30d numbers are computed from resolved incident downtime in their respective windows, not from raw check results. They recalculate when an incident resolves rather than on every check, so they're stable and don't flicker as new data arrives.
The 90-day timeline is computed from a daily aggregation that runs at 00:15 UTC and on app start (with up to 90 days of backfill the first time). Days with no aggregation yet render as gray bars.
Paused monitors are excluded from the status page entirely — they don't appear on the timeline and they don't drag the percentages.