How to publish a status page that writes itself (rows, strips, incidents, maintenance, badges)

Published 18 Sep 2026 · Updated 18 Sep 2026

What a status page is for

A status page answers one question before anyone asks it: is it you, or is it me? When the checkout is slow, the first thing a customer, a colleague or a client does is look for a page that says so. If there is none, they write to you, and you answer the same question thirty times while fixing the thing. A public page that draws itself from the monitors you already run answers it once, in the same minute the monitors notice, and keeps answering while you work.

hostnag's status pages are that: a page per group, published at hostnag.com/status/<slug>, showing every monitor you pick under a public name, its word (Up, Down, Degraded, Expiring soon), its uptime figures, a strip of the last day or month, the incidents and the maintenance you have planned. Nothing on it is typed by hand.

Publish one

Open the group and press STATUS PAGE on its strip (admins and owners), give the page a slug and a title, and mark it Published. One page per group; 1 on Free, 10 on Pro, as many as you like on Business. The slug is the address, so pick the one you would put in a footer: acme, not acme-status-page-2. A few words are reserved (status, api, login and the like) and a slug another org holds is taken.

Then pick the rows. A new page starts with every monitor of the group; the editor is where things come off, and where each row gets its public name. That name is all a visitor sees: the hostname, the URL, the port and every error string stay inside the app. "Checkout" is a public name; api.acme.example/health is not.

What each row shows

A row is a lamp, a name and a word. For a tracked monitor (a website, a port, a DNS record, a ping, a heartbeat, a vendor page) the right-hand figure is uptime over 30 days, and under the name the 24 h and 7 d figures; with the latency switch on, p50 and p95 over the last day beside them. A certificate or a domain shows its days left instead, and, while the page draws strips, its runway: the validity window with the spent part muted and the rest coloured by the row's own word.

The strip is the same recorder the History page draws: one cell per hour over 24 h and 7 d, one per day over 30 d and 90 d, coloured up, blip (a bad minute or two inside an hour that stayed at or above 99 %) or down, with the p95 pen on its own pane beneath when latency is on. Hovering a cell reads the hour: uptime, runs, p95. Readers pick the range from the section head; 90 d is offered where the plan keeps rollups that long (Pro and Business).

Three switches on the page control this: Show uptime (the figures and the 30 d number), Show uptime graph (the strips and runways under the rows) and Show response time (the p95 pane and the p50 / p95 words). A page that shows uptime but no chart is a plain list of words and figures, which some people prefer.

Incidents and maintenance write themselves

An incident is an open episode on one of the page's rows: the moment a down or a not-valid certificate is confirmed, it is on the page with when it was raised; when someone acknowledges the alert, "Acked" and the time join it; when it clears, "Cleared" and how long it lasted. The last 30 days stay listed. There is no incident editor and no post-mortem field, on purpose: what the page says is what the monitors saw.

Planned maintenance comes from the maintenance windows you schedule on the group or a monitor. A window in the future is listed with its start on its own clock, its length and its repeat ("Sundays", "every day"); while one runs, the page's headline reads Planned maintenance in progress and the rows under it go unlit rather than red. The NOW switch on a plate is a window too, and it shows as "until further notice".

Subscribers and badges

Anyone can subscribe from the foot of the page with an email address. It is double opt-in: a confirmation mail first, then a message when something on the page goes down and another when it comes back, each with an unsubscribe link. The page owner never sees the addresses in bulk; they are a tally on the editor.

Every page and every row has a badge: /status/<slug>/badge.svg reads status: all normal, status: 2 down or status: degraded, and /status/<slug>/m/<monitor id>/badge.svg reads a row's own word, up 99.98% or expires in 11 d. Both are SVGs cached a minute, made for a README, a wiki or an internal portal.

Branding, and the domain

Your logo goes on the page on every plan: the page's own, or the org's when the page has none. The "Monitored by hostnag" line at the foot is on by default and can be switched off on Pro and Business; a downgrade puts it back without touching the page.

The address is hostnag.com/status/<slug> today. A custom domain, status.yourcompany.com pointed at hostnag with one CNAME, is coming; until then a link from your footer or a redirect on your own domain does the job.

See one, then publish yours

See one: hostnag's own page at hostnag.com/status/hostnag is a real page over hostnag's own monitors, the site, the app, the ping probes and the services behind them, drawn the same way yours would be.

Publish yours: status pages shows the page over sample data, every switch and both badges; a page is one form behind the group's STATUS PAGE button.

Watch this for good.

Start free