# Show maintenance windows on your status page

A maintenance window can do more than hold back alerts: it can tell your status page visitors that downtime is
planned. With **Show on status page** on, a window appears automatically on every one of your
[status pages](/status-pages/overview/) that shows a monitor the window covers. There is no separate "add to status
page" step.

## What visitors see

| When | How it appears |
|---|---|
| Starts within the next **7 days** | A blue **maintenance panel** near the top of the page, with the window's name, its times and the affected components. |
| **In progress** | The same panel marked as in progress. A component that is down during the window shows as under maintenance instead of down. |
| In the **last 90 days** | The days it covered are drawn in **blue** on the affected components' uptime bars, so a planned deploy does not read as an unexplained dip. |

Rules behind that display:

- Only components backed by one of the window's monitors are affected. Third-party components (ones you set by hand)
  never pick up a maintenance window.
- A day is drawn blue only when no other component had a real problem that day - blue never hides a real outage.
- If you also declared a scheduled maintenance on the page for the same period, the page shows your declared one
  instead of a duplicate.
- The machine-readable `status.json` of the page lists upcoming and in-progress windows in its
  `scheduledMaintenances` array (`id`, `title`, `status`, `scheduledStart`, `scheduledEnd`), and reports a covered
  component that is down as `"maint"`. See [Embeds, badges and exports](/status-pages/embeds-exports/).
- Weekly windows show each occurrence that falls inside those horizons.

## Settings reference

| Setting (UI label) | API field | Type | Default | What it does for you |
|---|---|---|---|---|
| **Show on status page** | `showOnStatusPage` | `true` / `false` | `true` | Shows or hides this window on all your status pages. Presentation only - suppression of alerts and statistics is unchanged. |

The switch is per window. There is no page-level setting that hides every window, and no way to show a window on one
status page but not another: it appears on every page that includes one of its monitors.

## Turn it on or off in the app

1. Open **Maintenance** in the sidebar and click the gear on the window (or **Add** for a new one).
2. Under **Schedule**, find **Show on status page** and switch it on (visitors see it) or off (internal only - an
   internal check, a window customers should not hear about).
3. Click **Save**. Public pages pick up the change within a couple of minutes (status pages cache briefly).

## Do it with the API or MCP

```bash
curl -X PATCH https://api2.host-tracker.com/maintenance/MAINTENANCE_ID \
  -H "Authorization: Bearer $HT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "showOnStatusPage": false }'
```

Send `"showOnStatusPage": true` or `false` on `POST /maintenance` to set it at creation (scope `monitor:write`).

The MCP `create_maintenance` and `update_maintenance` tools have no `showOnStatusPage` argument, so windows they
create are shown by default. To change the flag from an assistant, use `api_request` with
`PATCH /maintenance/{id}`.

## Record maintenance after the fact

Did a planned change go ahead without a window, and now the status page shows red days? Create a window for the past
period through the API - `POST /maintenance` accepts a `from` in the past - covering the affected monitors, with
**Show on status page** on. The covered days turn blue on the uptime bars (within the last 90 days).

A window created afterwards cannot un-send alerts that already went out. Whether it also changes the uptime figures
in your own reports for that period is not something to rely on - its purpose is the public display.

The editor in the app does not accept a one-time start date before today, so backdating is an API task.

## Status page announcements for the same event

A window shows your window's name and times. To tell subscribers more - what you are doing, the expected impact -
also declare a **scheduled maintenance** on the status page. It is sent to the page's subscribers, which a window
alone is not. See [Post announcements and incident updates](/status-pages/announcements/).

## Related

- [What a maintenance window is](/maintenance/overview/)
- [Create a maintenance window](/maintenance/create/)
- [Post announcements and incident updates](/status-pages/announcements/)
- [Status pages overview](/status-pages/overview/)
