Public pages

A URL you can put in an email at three in the morning.

Every organisation gets a page anyone can open, no account required. It lives on your own subdomain of statusowl.app the moment you create it, and on your own domain as soon as you point the DNS.

The address

Your name, on statusowl.app.

You choose the subdomain when you create the page. It is checked for format, checked against a reserved-word list, and checked for global uniqueness before it is yours.

Default
https://acme.statusowl.app
Your own domain
https://status.acme.com

A custom domain with automatic SSL is on every plan, including Free. You point a CNAME at status-pages.statusowl.app and the certificate issues and renews with nothing to install.

How the DNS setup works
Subdomain rules
Length
2–63 characters
Characters
a–z, 0–9, hyphen
First and last
Letter or number
Consecutive hyphens
Not allowed
Reserved words
Blocked
Uniqueness
Global

If a subdomain is taken or reserved you are told before you save, not after. Names that could be mistaken for StatusOwl infrastructure are on the blocklist.

What visitors see

No account, no cookie banner, no dashboard.

Someone who has never heard of StatusOwl should be able to answer their question in about two seconds.

https://acme.statusowl.app
Acme Status
Partial System Outage
API
99.98%
Web app
99.95%
Background jobs
99.89%
Uptime · 30 daysUpdated 1m ago
One banner, only when there is something to say

When a maintenance window is in progress, an incident is open, or a monitor is failing, a coloured banner sits at the top of the page saying so. When everything is up, there is no banner — the service rows speak for themselves.

A row per service

Current state, uptime over the last thirty days to two decimal places, and the most recent response time.

Ninety days of bars

Hoverable, with the date, the daily uptime figure, the average response time and the check count for that day.

Incidents and maintenance

Open incidents in the banner, upcoming windows listed ahead of time, and the archive underneath — each with its own permanent page.

Only what you switch on

Uptime bars, response times and incident history are individually toggleable per page.

Live without refreshing

Thirty seconds, and it behaves itself.

A status page is usually left open on a second monitor during an outage. That is the case this is built for — including what happens when the network the visitor is on is the thing that is broken.

Interval30 secHidden tabSkippedOn failureLast known
Not shipped yet — subscribers

Not built. There is no subscribe form on status pages and no subscriber list in the dashboard. Publishing an incident today updates the page; it does not send anything to anyone. There is no subscribe button on the page, so a visitor who wants to be told has to keep the tab open or come back.

Polling behaviour
Every 30 seconds

An open page re-fetches the current state of every service, the open incidents and the maintenance windows. Nobody has to press refresh, and you do not have to tell people to.

Paused on a hidden tab

If the tab is in the background the fetch is skipped rather than queued. A page left open in a pinned tab for a week does not spend the week making requests. It picks up again on the first tick after the visitor comes back.

A failed poll changes nothing

If the request errors or returns a non-OK response, the page keeps showing the last data it successfully received. It does not blank out, and it does not flip a service to unknown because one fetch failed.

An honest freshness stamp

The foot of the page carries an 'Updated Xm ago' line derived from the most recent check it actually has, alongside the full timestamp. A visitor can always tell how old the reading is.

Rendered on the server

A page a search engine can actually read.

Plenty of status pages are an empty shell that fills itself in from an API call. Ours is not, which matters when someone searches your product name plus the word down.

The status is in the HTML

The page is rendered on the server, so the first response already contains the current state, the service list and the incident history. Crawlers and link previews do not have to run JavaScript to see it.

Real titles and descriptions

The document title is your page's name and the meta description is the description you set on it, rather than one generic string shared by every customer.

Link previews

Open Graph and summary-card tags are generated per page, so the link pasted into Slack, Teams or a tweet shows your page name and description.

Nothing leaks

A page that is switched off or set to private returns a 404, so there is nothing for a crawler to index and no trace of it in search.

Light, dark, or their choice

The visitor gets the last word on the theme.

You set the page default. A toggle in the header lets each visitor override it, and the page remembers what they picked.

You set the default

Light, dark or auto, per page. Auto follows the visitor's operating system setting and keeps following it live if they change it mid-session.

They can override it

The toggle in the page header switches immediately and stores the choice in the browser. On their next visit their choice wins over your default.

No white flash

A small script runs before the first paint and applies the saved choice to the document, so a dark page never flashes white on the way in.

Claim your subdomain.

Pick a name, attach a monitor, and the page is live. Move it to your own domain whenever you are ready — that part is free too.