# Status pages

A status page shows your users whether your servers and services work, and what you're doing about a problem. Each service on the page is one of your tunnels or checks, under a public name you choose. Incidents and updates you post appear on the page at once.

## Creating a status page

<Steps>

1. In the sidebar, go to **Status pages** and click **New status page**.

2. Give the page a **Name**. Its **Address** comes from the name, and you can change it. Click **Next**.

3. In **Choose services**, tick what the page shows. Tunnels and website checks that aren't paused start ticked. Heartbeats, keyword, ping, port and DNS checks, and paused ones, start unticked. Groups start folded: open one with its arrow, or tick it to take all of it. Search finds names, addresses, and tags.

4. Click **Create status page**. The page is a draft, and nothing is public yet.

5. Click **Publish**.

</Steps>

A page lives at its own address, `<address>.tunnelhq.net`, for example `larkspur-vpn.tunnelhq.net`, and on [your own domain](#your-own-domain) if you add one. Links to the older address, `status.tunnelhq.com/larkspur-vpn`, forward to the new one.

A page needs at least one service that isn't hidden before it can be published. Once it's published, your changes wait until you click **Publish changes**. Beside it, **View page** opens the public page, and the copy button (**Copy address**) copies its address. Both work once the page is published.

A page has its own **Services**, **Updates**, and **Settings** tabs.

## Choosing what a page shows

The **Services** tab shows the page's sections, with a count such as "103 of 400 services" above them. **Choose services** opens the same list as when you created the page: tick what should be on it, untick what shouldn't, and click **Save**.

- A page shows up to 400 services, counted the way visitors see them. A server's tunnels on one address count once, because the page shows them as one row. A group counts its members.
- A page has 1 to 20 sections. **Add section** adds one at the end.
- Every service needs a public name, and each tunnel or check can be on a page only once. A server's address is left out of the names it starts with.
- A hidden service stays in the page's setup, with its name and place, but isn't shown on the public page.
- Drag a row by its handle to move it. Tick rows, or a whole section, to hide, show, move, or remove many at once.

A section's menu can remove the section in two ways. **Remove section, keep its services** moves its services into the section above it (or, for the first section, the one below). **Remove section and its 12 services**, with the section's own count, takes them off the page too. A page's only section stays, but its menu can take all its services off. Either way, the tunnels and checks themselves stay as they are.

Changes save by themselves as you make them.

## Posting an incident

On the **Updates** tab, click **New update**. Give it a title, choose how bad it is and which services it affects, write a message, then click **Post update**. It's public at once.

| Status | Means |
| --- | --- |
| Investigating | You know about the problem and are looking into it. |
| Identified | You know the cause. |
| Monitoring | A fix is in place and you're watching it. |
| Resolved | It's over. Choose **Resolved** and click **Resolve** to post the last update. |

The impact is **Degraded**, **Partial outage**, or **Full outage**. Messages are plain text, and web addresses in them become links on the page.

### Automatic incidents

With automatic incidents on, an incident opens by itself as **Investigating** when a service on the page goes down, written in the page's language from its prefilled text. It closes by itself when the service recovers. Once someone posts an update to it, it's theirs: it closes only when they post **Resolved**.

### While an incident is Monitoring

You can choose to show the services of a **Monitoring** incident with the state their checks report, instead of the incident's impact. The incident itself stays on the page. This takes effect at once, without **Publish changes**.

## Settings

The **Settings** tab has **General**, **Appearance**, **Domain**, **Page access**, **Search and sharing**, **Language**, **Updates**, and **Notifications**.

- **General:** the name, the address, your website, and a contact link. Changing the address of a published page moves it: the old address stops answering.
- **Appearance:** the theme, brand colour, logo, favicon, header, and how services are shown. See [Logo and pictures](#logo-and-pictures).
- **Page access:** a password makes the page private. It must be 8 to 72 characters. The page's feeds then need the password too, and search engines never list it.
- **Search and sharing:** whether search engines may list the page, the browser tab's title, and the share image shown when someone shares the link. When listing is off, the page asks search engines not to list it. That isn't privacy: anyone with the address can still open it.
- **Language:** the page comes in 13 languages: English, French, German, Spanish, Brazilian Portuguese, Dutch, Polish, Swedish, Russian, Turkish, Persian, Arabic, and Simplified Chinese. Offer more than one, and visitors can switch with the language menu in the page header.
- **Updates:** automatic incidents, how services look while an incident is Monitoring, and the prefilled text each kind of update starts with.
- **Notifications:** the addresses of the page's RSS and Atom [feeds](#feeds). There are no email subscriptions.

Showing in search results, the password, and the **Updates** settings take effect at once. The rest wait for **Publish changes** on a published page.

### Logo and pictures

Under **Appearance**, **Get from your website** reads the website you set under **General** and shows what it found: the logo (the mark in your site's header), the favicon, and the share image. If your logo is an SVG drawn in the text colour, you get a light and a dark logo from it. Nothing is saved until you click **Use** beside one, or **Use all**.

To set a picture yourself, drop a file on its box, or click it to choose one:

| Picture | Files | Size |
| --- | --- | --- |
| Logo, and the logo for dark mode | PNG, JPEG, WebP, or SVG | Up to 300 KB |
| Favicon | PNG, SVG, ICO, GIF, or JPEG | Up to 50 KB |
| Share image | PNG or JPEG, best at 1200 by 630 | Up to 500 KB |

Without a dark logo, the page uses the light one in dark mode. The logo's height is 24, 32, 40, or 48 pixels.

**Show the name beside the logo** follows the logo's shape until you choose: a square mark gets the page's name beside it, and a wide logo that spells the name doesn't. A new logo hands the choice back to its shape.

## Your own domain

A page can use your own domain, such as `status.example.com`, under **Settings**, **Domain**. Enter the domain and click **Save**, and the panel shows the record to add at your DNS provider:

| Your domain | Record to add |
| --- | --- |
| A subdomain, such as `status.example.com` | A CNAME record named `status`, pointing to `cname.tunnelhq.net`. |
| A bare domain, such as `example.com` | A CNAME record named `@`, pointing to `cname.tunnelhq.net`, added as your DNS provider's CNAME flattening, ALIAS or ANAME record. A domain without a subdomain can't hold an ordinary CNAME, so if your provider offers none of these, use a subdomain such as `status.example.com`. |

On Cloudflare, set the record to **DNS only** (grey cloud). With the proxy on, the check fails and says so: "Cloudflare's proxy answers for this name." An older record that points to `tunnelhq.net` or `status.tunnelhq.com` keeps working.

Then click **Check**. Once the record points to TunnelHQ, HTTPS comes on by itself, usually within a few minutes. If HTTPS fails 4 times in an hour, the check stops trying for that hour, because Let's Encrypt refuses a domain for a while after 5 failures: fix the record, then try again later. The domain goes through these states:

| State | Means |
| --- | --- |
| Waiting for the record | The domain is saved, but its record doesn't point to TunnelHQ yet. The line under it says what the check found. |
| Connected. HTTPS is being set up | The record points here, and the certificate is on its way. |
| Connected. HTTPS on | The page answers on your domain. |
| Connected, but HTTPS failed | The certificate failed. The line under it says why. |

Under the state, the panel shows the page's address on your domain, such as `https://status.example.com`, marked **not live yet**. Once HTTPS is on, it becomes a link, with **Copy** beside it.

Once the domain is on, the published page uses it. Its own address keeps working too.

## Maintenance

A [maintenance window](https://docs.tunnelhq.com/concepts/maintenance/) that covers a service on the page shows on it, up to 7 days before it starts and while it runs. A page with tabs in its header lists them under **Maintenance**.

## Feeds

Every page has an RSS feed and an Atom feed, so people can follow its updates in a feed reader: `/feed.rss` and `/feed.atom` at the page's address, for example `larkspur-vpn.tunnelhq.net/feed.rss`, or on its own domain.

The feeds carry the page's incidents, with a new entry for each update, and the [maintenance](#maintenance) it shows. A window's entry is titled "Maintenance: " and its name, links to the page's maintenance list, and says "Scheduled" or "In progress", when it runs, and its note, in the page's language. When the window starts, it comes as a new entry, so readers see the start too.

## Who can do what

Anyone in the project can see its status pages. Creating, editing, publishing, or deleting a page needs a role that can edit the project. Posting incidents and updates needs a role that can edit monitors. Owner, Admin, and Manager can do both by default; Viewer can only look (see [Roles](https://docs.tunnelhq.com/team/)).

## From the API, the CLI, or an AI assistant

- The [REST API](https://docs.tunnelhq.com/api/reference/operations/list-status-pages/) can do everything on this page, including the custom domain, and pictures from your website or from a link (`logo_url` and the like).
- An [AI assistant](https://docs.tunnelhq.com/mcp/#tools) can create pages with the services you name, add, remove, hide, or show many services at once, edit settings and the password, take pictures from your website or a link, set up your own domain, publish, and post incidents and updates. Deleting a page needs the dashboard or an API key.
- The [CLI](https://docs.tunnelhq.com/cli/#manage-status-pages) can create a page, change many services at once, set up your own domain, take pictures from your website, and post incidents and updates. These commands come with the CLI's next release.
