---
title: Publishing and previews
description: Publish a status page, or share it privately with a preview link before it goes live.
sidebar:
  label: Publishing & previews
---

{/* Source of truth: packages/shared/src/status-pages.ts —
    StatusPageVisibilities. Routes: statusPages.rotatePreviewToken,
    public.statusBySlug in packages/shared/src/routes.ts. */}

## Visibility

| State | Who can see it |
| --- | --- |
| `UNPUBLISHED` | Nobody, except with a preview link |
| `PUBLISHED` | Anyone with the URL |

A new page starts unpublished so you can build it without an audience.

## Preview links

An unpublished page can be shared with a preview token appended to its URL:

```http
https://status.glowo.dev/<slug>?preview=<token>
```

Use it to get sign-off on wording and branding before launch, or to show a
customer a page you are not ready to make public.

The token can be rotated, which immediately invalidates every previously shared
preview link:

```http
POST /status-pages/<id>/rotate-preview-token
```

:::caution
A preview link is a bearer secret — anyone who has it can see the page. Rotate
it after sharing externally, and do not put it anywhere indexable.
:::

## Before you publish

- Do the component names make sense to someone who does not work at your
  company?
- Is anything on the page that should not be public?
- Does the page look right on a phone, and in dark mode if you enabled it?
- Have you subscribed at least one internal person, so you find out that
  [subscriber notifications](/status-pages/subscribers) work before a real
  incident?

## After you publish

Tell people it exists. A status page nobody knows about does not reduce support
load. Link it from your app's footer, your help centre, and your support
auto-responder.

Putting it on [your own domain](/status-pages/custom-domains) makes it far more
likely people will find and trust it.
