Maintenance windows and deploy mutes
A maintenance window is a period during which CompleteStatus suppresses alert notifications for some or all monitors in a project. Checks keep running, results keep being recorded, and incidents still open and resolve as usual — you just don't get paged about downtime you caused on purpose.
Maintenance windows are managed per project at /settings/maintenance.
Quick mute: "Deploying now"
For unplanned, short work — a deploy, a config change, a restart — you don't need to fill in a form:
- Open /settings/maintenance and make sure the right project is selected.
- Click Mute for 30 min or Mute for 60 min.
This immediately creates an active window covering every monitor in the project, with the reason "Deploying now". It appears in the Active list, where you can end it early once the deploy is done.
Scheduling a maintenance window
For planned work, schedule a window in advance:
- On /settings/maintenance, open the scheduling form.
- Fill in:
- Starts at — date and time the mute begins (defaults to now).
- Ends at — when alerting resumes. Must be after the start.
- Open-ended — tick this instead of an end time to mute until you manually end the window. Use with care.
- Monitors — pick the monitors the window covers. Selecting none covers all monitors in the project, including monitors you add later.
- Reason — optional note (up to 255 characters) shown in the window list, e.g. "Database migration".
- Save. The window shows under Upcoming until its start time, then moves to Active, then to Past.
Managing existing windows:
- End now — stamps the end time to the current moment, immediately restoring alerting.
- Delete — removes the window entirely (works on upcoming, active or past windows).
Note: Windows are one-off. There is no recurrence option — for a weekly maintenance slot you need to schedule each window (or create them via your deploy tooling).
What a maintenance window does — and doesn't do
During an active window that covers a monitor:
- Alert fan-out is fully suppressed. When an incident opens or resolves on a covered monitor, no notifications go to any channel — email, chat (Slack, Teams, Discord, Telegram, Google Chat, Mattermost, Rocket.Chat, Zulip, Webex, Matrix), push (ntfy, Pushover, Gotify), webhooks, pagers (PagerDuty, Opsgenie) or ticketing (GitHub, GitLab, Jira, Linear) — and no automation hooks fire either. The suppression is logged, and it applies to the whole event, not per channel.
- Checks keep running. Uptime history, response times and daily rollups are unaffected, so your SLA reports reflect reality.
- Incidents are still recorded. If the service goes down mid-window, the incident opens, builds its timeline, and auto-resolves on recovery exactly as described in /docs/incidents-and-escalation — you can review it afterwards at /incidents.
What it does not do:
- It does not change monitor status. Monitors covered by a window still show Up/Down on dashboards and status pages.
- It does not hide anything from public status pages. A monitor that goes down during maintenance shows as down, and the incident appears in the page's recent-incidents list. If you want a page to read "degraded" rather than "down" during heavy maintenance, that is a function of monitor status, not of maintenance windows.
- It does not stop checks. To stop checking entirely, pause the monitor from its page instead — but note a paused monitor records nothing at all while paused.
Warning: An open-ended window silences alerts indefinitely until someone presses End now. If your alerts seem to have gone quiet, check the Active list on /settings/maintenance first.
Suppression is evaluated at send time
The mute check happens at the moment an alert would be sent, not when the incident opens. Two practical consequences:
- If a monitor goes down before the window starts and recovers during it, you get the
downalert but theup(recovery) alert is suppressed. - If it goes down during the window and recovers after the window ends, the
downalert is suppressed but the recovery alert is delivered.
Plan window boundaries with a little margin around the actual work to avoid a stray page at the edges.
Maintenance windows vs. other muting tools
| Tool | Checks | Incidents | Alerts | Scope |
|---|---|---|---|---|
| Maintenance window | keep running | still recorded | suppressed | project, or selected monitors |
| Quick mute (30/60 min) | keep running | still recorded | suppressed | whole project |
| Pause monitor | stopped | none | none | single monitor |
| Channel disabled | keep running | still recorded | that channel only | one channel, all its monitors |
| Rule cooldown | keep running | still recorded | throttled repeats | one rule |
Availability
Maintenance windows are available on every plan, including Free, with no limit on the number of windows.
Related guides
- /docs/incidents-and-escalation — the incident lifecycle windows interact with.
- /docs/alert-channels — channels, rules and cooldowns.
Further reading: Maintenance windows done right on the blog — planning, communicating and running planned downtime.