# Maintenance windows

A maintenance window is planned work in Spectate. While a window runs, new alerts on what it covers page nobody, and by default failed checks do not count as downtime. If an alert still fires when the window ends, its [escalation path](/alerting/escalation-paths) starts then.

## What happens during a window

| During a window | Behaviour |
|---|---|
| Checks | Keep running. |
| A new alert on something the window covers | Spectate creates the alert and shows it as **Muted**. Spectate sends no pages, no channel messages and no status page automation. |
| The problem ends during the window | The alert resolves. Nobody hears about it. |
| The alert still fires when the window ends | The escalation starts then, from the first step. |
| An alert that fired before the window started | The alert keeps its escalation. A window does not hide an outage that came first. |

## Create a window

1. In the dashboard, go to **Alerting → Maintenance windows**.
2. Select **New window**.
3. Enter a **Name**, and optionally a **Reason** for the team.
4. Under **When**, select **Once** or **Every week**.
5. Enter the times. See [One-off and weekly windows](#one-off-and-weekly-windows).
6. Select **Everything in this team**, or choose items under **Covers**.
7. Select **Create window**.

You can cover monitors, hosts, domains, alert sources and projects, up to 200 items. A project covers its monitors, hosts and domains.

## One-off and weekly windows

A one-off window has a start and an end. A weekly window has days, a start time, an end time and a time zone, for example Sunday 02:00 to 04:00 in `Europe/Amsterdam`.

- A weekly window follows the clock in its time zone, also across a daylight saving change.
- If the end time is before the start time, the window runs past midnight into the next day.
- A weekly window can have a **Last date**, in its own time zone. After that date it does not run again.

## Downtime

**Don't count this as downtime** is on by default. If it is on, a failed check during the window counts as up in the uptime figures, the downtime report and on status pages.

- The check counts as up. Spectate does not remove it, so 30 minutes of maintenance show as 30 good minutes.
- The monitor still shows **Down** during the outage, and the alert still exists.
- The check log shows the failed check with "not counted as down".
- The setting applies only while the window runs. It does not change outages from before the window.

If the setting is off, failed checks during the window count as downtime, and alerts are still muted.

## Change a running window

| Action | Effect |
|---|---|
| **Edit**, with a later end | Extends a one-off window. Muted alerts stay muted. |
| **End now** | Ends a one-off window. A weekly window skips this occurrence and runs again next time. |
| **Pause** | Stops the whole weekly schedule until you select **Resume**. |
| **Delete** | Removes the window. |

Spectate checks muted alerts every minute. After you end, pause or delete a window, alerts that still fire start their escalation within a minute.

## Muted alerts

The alert list shows a **Muted** status for a firing muted alert. Use the filter on the alert list to show muted alerts only.

To page for one alert while the window still runs, open the alert and select **Escalate now**.

## Many alerts when a window ends

When a window ends, the alerts that still fire form one escalation on each path. The alert with the highest severity leads, and the others wait with it. This happens whatever the path's [grouping setting](/alerting/escalation-paths#group-alerts) is. If 40 monitors are still down after a deploy, the path pages once.

## Status page maintenance

[Scheduled maintenance](/status-pages/maintenance#mute-alerts) on a status page can also mute alerts for the monitors linked to its components.

## API and AI assistants

The public API has `GET`, `POST`, `PATCH` and `DELETE` on `/v1/maintenance-windows`, and `end`, `pause` and `resume` actions. `POST /v1/alerts/{alert}/escalate-now` is **Escalate now**. See the [API reference](/api-reference/maintenance-windows).

A window has `starts_at` and `ends_at`, or `schedule`, never both. Reading needs the `alerting:read` ability, changes need `alerting:write`, and deleting needs `alerting:delete`.

The MCP server has the tools `list_maintenance_windows`, `create_maintenance_window` (needs `confirm`) and `end_maintenance_window`.

## Who can do what

| Role | Can do |
|---|---|
| Owner, manager, admin | View, create, change and delete windows. |
| Member | View windows. |
