View as Markdown

Status pages

Every monitor gets its own public status page, and you can make more under Dashboard → Status pages: one for all your monitors, or one per product or customer, with your logo, colors and the names visitors see. A page shows each monitor's current state, its uptime over the last 90 days and its whole history, response times and past incidents. Monitor names, URLs and error details stay private.

Pro and Business add the options below to every page (Customize → Language, password and domain). Badges and the embeddable status are on every plan.

Password

Turn on Ask visitors for a password and choose one of 8 to 128 characters. Visitors see the page's name and a password form; the right password opens the page in their browser for 30 days, in an HttpOnly cookie, and changing the password closes it for everyone. Only a hash of the password is kept.

While a page has a password, it stays out of search engines, it has no badges or embed, and the homepage's website check never points to it. Its RSS and Atom feeds and its "Get updates" form work only in a browser that entered the password; feed readers, which can't, get nothing. Wrong guesses are limited to 5 a minute per visitor and 30 a minute per page. A page keeps its password if the workspace moves to the Free plan; it can be removed on any plan.

Your own domain

Enter a subdomain such as status.example.com and save. At your DNS provider, add the CNAME record the page shows, for example:

status.example.com.  CNAME  p3k7q2m9x4v8c1h5.domains.upheron.com.

Then press Check DNS on the list of pages. Once the record is found, the page is served at https://status.example.com/ within a minute, and its certificate is issued on the first visit. Its feeds (/feed.rss, /feed.atom) and "Get updates" form work there too, and the emails its subscribers get link there. The name in the record belongs to your page alone, which is how UpHeron knows the domain is yours: nobody else can put your domain on their page.

  • A domain's own name (example.com) can't have a CNAME record; use a subdomain.
  • If your DNS is on Cloudflare, set the record to DNS only: with the proxy on, the record can't be found.
  • The page keeps working at its upheron.com address too, which names the domain as its canonical address.

Language

The page's own text (its statuses, headings, captions, dates and times, incident updates and maintenance notices, the "Get updates" form, the confirm and unsubscribe pages, its feeds and its embeddable status) can be shown in English, German, French, Spanish, Italian, Portuguese (Brazil), Dutch, Polish or Bulgarian. Dates and times use the language's own format, in UTC. The names, updates and messages you write are shown as you wrote them; the emails subscribers get are in English.

Custom CSS

Add up to 10 KB of CSS, applied on that page only. Pages are built from plain class names you can target, such as .custom-status, .status-hero, .status-components article, .day-bar and .status-history.

So that a page's CSS can't harm its visitors, it may not load anything from anywhere: @import, @namespace and functions that fetch files (image-set(), src(), image(), cross-fade(), element()) are refused, and url() only takes an inline picture such as url(data:image/svg+xml,…). It can't contain <, and backslash escapes are only allowed inside quoted strings. The password form never gets the custom CSS.

Analytics

Each page counts its daily views and unique visitors, shown on the list of pages over the last 30 or 90 days, with a table view. No cookies are set and no addresses are kept: a visitor is a hash of their address and browser with a salt that changes every day, kept only for that day. A visitor's reloads within a minute count once. Daily totals are kept 90 days. Crawlers and link previews aren't counted.

Badges and embed

Every published page without a password has an SVG badge, on every plan, for READMEs and websites. Badges and embed on the list of pages gives Markdown and HTML to copy.

Address Shows
/status/<slug>/badge.svg The page's overall status
/status/<slug>/badge.svg?metric=uptime&period=30d The page's uptime over 24h, 7d or 30d
/status/<slug>/badge.svg?monitor=<id> One monitor the page shows (with metric and period as above)
…&label=API Another label

A badge only shows what the page shows: a monitor that isn't on the page has no badge there. Badges are built at most every 30 seconds and may be cached for a minute; each address answers at most 300 requests a minute per visitor.

The page's status can also be embedded in any website, in its language, linking to the page:

<iframe src="https://upheron.com/status/<slug>/embed" title="Acme status" width="320" height="44" style="border:0" loading="lazy"></iframe>

Add ?theme=light or ?theme=dark; by default it follows the visitor's setting. It runs no scripts.