---
title: "Status Pages"
description: "Status pages let you communicate service health to your customers transparently: live overall state, a per-service breakdown, and a short history of recent incidents and maintenance. Each page is fully brandable and can run on your own domain (e.g. status.deinkunde.com)."
---

<Cards>
  <Card title="Design & branding" href="/status-pages/design">
    8 layouts, color schemes, accent color, custom title, and toggles for what to show.
  </Card>
  <Card title="Custom domains" href="/status-pages/custom-domains">
    Serve a page on `status.deinkunde.com` with DNS verification and automatic HTTPS.
  </Card>
  <Card title="Status Pages API" href="/api/status-pages">
    Create, update, design, and manage domains programmatically.
  </Card>
</Cards>

## What a status page shows

- **Overall state**: a single banner: Operational, Degraded, or Maintenance.
- **Services**: the customer's monitored websites and service monitors, each with its own state.
- **Uptime statistics**: optional per-service uptime percentages.
- **Recent history**: optional list of recent incidents and maintenance windows.

### How the public state is derived

Uptimeify computes each service's public state from two live signals. It never exposes raw check data:

| Condition | Public state |
|-----------|--------------|
| One or more **open incidents** | **Degraded** |
| **Active maintenance window** and no open incidents | **Maintenance** |
| Neither | **Operational** |

The overall banner reflects the worst state across all services. See [Incidents](/incidents) and [Maintenance](/maintenance) for how those signals are produced.

## Create a status page

In the app, go to **Dashboard → Status Pages → Create**. A page always belongs to exactly one **customer**. It shows that customer's services.

| Setting | Description |
|---------|-------------|
| **Customer** | Required. The customer whose services the page displays. |
| **Public name** | The page title shown to visitors. |
| **Slug** | Used for the friendly URL. Auto-generated from the name; lowercase letters, numbers, and hyphens. |
| **Description** | Optional intro text shown under the title. |
| **Visibility** | `public` (anyone can view) or `customer_members_only` (login + access to the customer required). |
| **Published** | Toggle off to hide the page without deleting it. |

You can do all of this via the [API](/api/status-pages/create-status-page) too.

## URLs

Every status page is reachable at:

- `/status/<slug>`: friendly URL based on the configured slug.
- `/status/<id>`: stable URL based on the page ID (always available, even if the slug changes).

With a [custom domain](/status-pages/custom-domains) configured and active, the page is also served at the apex of that hostname, e.g. `https://status.deinkunde.com/`.

## Visibility & publishing

- **`public`**: the page is reachable by anyone with the link. Best for customer-facing status.
- **`customer_members_only`**: visitors must be logged in and have access to the customer. Best for internal or NDA-bound services.
- **Published** is independent of visibility: an unpublished page returns *not found* regardless of visibility, which is useful while you are still setting it up.

## Recent history

The **Recent History** section is controlled by two independent toggles:

- **Show recent incidents**
- **Show recent maintenance**

These only affect the *history list*. Live indicators (such as a service currently being in maintenance) are always shown, independent of these flags. The [design settings](/status-pages/design) additionally control the history time window (`historyDays`).

## Troubleshooting

### "Status page not found"

- Confirm the page is **Published**.
- If visibility is `customer_members_only`, you must be logged in and have access to that customer.
- Double-check the slug. It is normalized to lowercase-with-hyphens on save.

### A service shows the wrong state

- **Stuck on Degraded?** There is still an open incident for that service. Resolve it or wait for automatic recovery (see [Incidents](/incidents)).
- **Expected Maintenance but see Operational?** Verify the maintenance window is **active** and the current time is within its start/end (see [Maintenance](/maintenance)).

