Every ops team has been there: you start a planned database migration at 2 AM, monitoring picks up the downtime, and suddenly your on-call engineer's phone is blowing up with alerts. Your status page shows an outage. Stakeholders start asking questions. All for work you planned days ago.
Maintenance windows solve this by telling your monitoring system, "We know about this downtime, stand down." But setting them up poorly can be just as bad as not having them at all.
This guide covers how to configure maintenance windows that actually do their job: suppress the right alerts, keep your uptime data accurate, and communicate planned work to the people who need to know.
Key takeaways
- Maintenance windows suppress alerts during planned work, preventing false pages and keeping historical uptime data clean
- Always include a time buffer beyond your estimated maintenance duration
- Pair every maintenance window with a status page announcement and subscriber notification
- Use recurring schedules for regular deployment or patching windows
- Test your maintenance window configuration before the actual maintenance starts
What maintenance windows actually do
A maintenance window is a defined time period where your monitoring system pauses alerts for selected services. Three things happen during an active window:
Alert suppression. Monitors keep running, but notifications (Slack, email, SMS, PagerDuty) are silenced for the monitors you selected. Your team is not woken up for expected downtime.
Clean historical data. Downtime during a maintenance window is flagged as planned. This means your uptime monitoring reports stay accurate. A 99.95% uptime SLA should not take a hit because you ran a scheduled deployment.
Stakeholder communication. Your status page can automatically display "Scheduled Maintenance" instead of showing an unexpected outage. Subscribers get a heads-up before the work starts, not a surprise alert when things go down.
Without maintenance windows, teams end up doing awkward workarounds: manually pausing monitors, muting Slack channels, or just accepting the false alert noise. None of these scale, and all of them introduce risk.
Setting up maintenance windows step by step
1. Define the window
Start with three things: start time, duration, and timezone.
The start time is obvious, but timezone catches people more often than you would expect. If your team is in New York but your infrastructure runs on UTC, make sure the window is set in the right timezone. Hyperping lets you specify the timezone when creating a maintenance window, so there is no ambiguity about when it kicks in.
For duration, take your best estimate of how long the work will take and add 20-30%. A database migration you expect to finish in 45 minutes should get a 60-minute window. You can always end the window early. You cannot un-send the alerts that fired because you cut it too close.
2. Select which monitors to include
This is where most teams make their first mistake. They pause the monitor for the primary service but forget about dependent services.
Say you are migrating your main database. You need to include:
- The database health check monitor
- Your API endpoints that depend on that database
- Any background job processors that will fail without database access
- Webhook endpoints that will return errors during the migration
Think through the dependency chain. If service A depends on service B, and you are taking service B down, both monitors should be part of the window.
3. Configure the status page announcement
Your status page should reflect the maintenance window automatically. When the window starts, affected services should show "Under Maintenance" status instead of their normal green/red state.
In Hyperping, maintenance windows integrate directly with your status page. You set the window, and the status page updates on its own. No manual toggling required.
Write a clear maintenance message that includes:
- What services are affected
- What users can expect (e.g., "API requests will return 503 errors during this period")
- Estimated completion time
- Where to get updates if the window extends
A good maintenance message reads like this: "We are performing scheduled database maintenance on April 5th from 2:00 AM to 3:00 AM UTC. Our API and dashboard will be unavailable during this time. We will update this page when maintenance is complete."
4. Set up pre-maintenance notifications
Do not wait until the maintenance starts to tell people. Send subscriber notifications at least 24 hours in advance, ideally 48 hours for major maintenance.
This gives your users time to:
- Schedule their own work around your downtime
- Set expectations with their own customers
- Prepare any manual workarounds they might need
Hyperping sends these notifications to your status page subscribers automatically when you schedule the maintenance window in advance. You write the message once, pick the notification timing, and the system handles delivery.
5. Enable auto-resume after the window ends
When the maintenance window closes, monitoring should resume automatically. Alerts should start firing again, and your status page should return to normal operational state.
The worst thing that can happen is finishing your maintenance, going to bed, and then having a real outage hit an hour later with no alerts because someone forgot to re-enable monitoring. Auto-resume eliminates that risk entirely.
Common mistakes with maintenance windows
I have seen teams make the same mistakes repeatedly when setting up maintenance windows.
Forgetting dependent monitors. As covered above, you need to think beyond the primary service. Map your dependencies before creating the window. If you use grouped services on your status page, this becomes easier to reason about.
Not notifying status page subscribers. A maintenance window without a subscriber notification is a missed opportunity. Your users will see the downtime, not know it was planned, and contact support. Pre-notification prevents that entirely. If you have not set up subscribers yet, here is why you need a status page with proper communication tools.
Setting windows too tight. If your deployment takes 30 minutes on a good day, a 30-minute window is not enough. Network issues, slow rollbacks, unexpected data volumes: all of these can extend your timeline. Build in buffer time. You can always close the window early.
Not testing the window configuration. Before your actual maintenance night, create a test window for five minutes during business hours. Verify that the right monitors are included, the status page updates correctly, and subscriber notifications go out. Finding a misconfiguration at 2 AM is not fun.
Leaving old windows around. Clean up one-off maintenance windows after they complete. A cluttered list of past windows makes it harder to find and manage active or upcoming ones.
Recurring maintenance schedules
Many teams have regular maintenance patterns: weekly deployments every Tuesday at midnight, monthly security patches on the first Saturday, or quarterly infrastructure upgrades.
Setting up recurring maintenance windows for these patterns saves time and reduces the chance of forgetting to create one. Instead of manually scheduling a window every week before your Tuesday deployment, you configure it once and it repeats automatically.
Weekly deployment windows. If your team ships to production every Tuesday and Thursday, set up recurring windows for those days with appropriate start times and durations. The status page announcement and subscriber notifications go out automatically each cycle.
Monthly patching windows. Security patches and OS updates often follow a monthly cadence. A recurring window on, say, the second Saturday of each month at 3 AM ensures your patching process always has alert suppression in place.
Managing exceptions. Sometimes you need to skip a recurring window (holiday freeze) or extend one (larger-than-usual update). Good tooling lets you modify individual occurrences without changing the entire recurring schedule.
The key benefit of recurring windows is consistency. Your team builds habits around them, your users learn to expect them, and your status page reflects a predictable maintenance pattern.
Maintenance windows and status pages
Maintenance windows and status pages are closely connected. When set up properly, they work together to give your users a clear picture of what is happening.
Automatically showing "Under Maintenance"
When a maintenance window activates, your status page should switch affected services to a maintenance state without anyone clicking a button. In Hyperping, this happens automatically. The status page shows a yellow or blue maintenance indicator instead of a red outage indicator, making it clear to visitors that the downtime is planned.
Pre-scheduling visibility
Your status page should display upcoming maintenance before it starts. Users who visit the page days before the scheduled work can see what is coming and plan accordingly.
This is one of the most requested features across the monitoring industry. Teams want their users to know about maintenance ahead of time without sending individual emails or posting in multiple channels. A status page with pre-scheduled maintenance visibility handles this in one place.
Post-maintenance verification
After the window closes, verify that everything came back online correctly. Check your monitors for the first few minutes after maintenance ends. Are all endpoints responding? Are response times back to normal?
If something is still broken after the window, you will get a real alert (since monitoring has resumed), and your status page will reflect the actual outage. This is the system working as intended: planned work is handled quietly, but unexpected issues after maintenance still trigger the full incident response.
Maintenance windows and on-call
Maintenance windows affect your on-call rotation in two important ways.
Suppress escalation during planned work
During a maintenance window, your escalation policies should respect the suppression. The on-call engineer should not receive pages for monitors covered by the active window.
This means fewer interrupted sleep cycles and less alert fatigue. On-call engineers learn to trust that when their phone rings, it is a real incident, not a scheduled deployment.
Still alert for unexpected issues during maintenance
There is an important nuance here. Maintenance windows suppress alerts for the monitors you included in the window. But what about monitors you did not include?
If you are doing a database migration and your CDN goes down at the same time (unrelated issue), your CDN monitors should still fire alerts normally. The maintenance window only covers what you explicitly selected.
Some teams also designate a "maintenance lead" who stays awake during the window. This person watches the maintenance progress and is the first point of contact if something goes wrong with the planned work itself. They handle the maintenance-related issues so the on-call engineer can focus on any unrelated incidents that might come in.
Setting up your first maintenance window
If you have not used maintenance windows before, start simple:
- Pick your next planned deployment or update
- Create a maintenance window in Hyperping with a generous time buffer
- Include all affected monitors and their dependencies
- Write a clear status page announcement
- Schedule a subscriber notification for 24 hours before
- Test the configuration with a short dry-run window
Once you have done it a few times, the process becomes second nature. And your team will wonder how they ever managed without it.
The difference between a well-run maintenance window and no maintenance window at all is the difference between a quiet night and a 2 AM fire drill. Your on-call engineers, your users, and your uptime metrics will all be better for it.
FAQ
What is a maintenance window in monitoring? ▼
A maintenance window is a scheduled time period during which monitoring alerts are suppressed for selected services. It prevents false alarms during planned work like deployments, database migrations, or infrastructure updates, and keeps your uptime metrics accurate by excluding expected downtime from outage calculations.
How long should a maintenance window last? ▼
A maintenance window should cover your estimated work time plus a 20-30% buffer for unexpected delays. For example, if a database migration typically takes 45 minutes, schedule a 60-minute window. Always err on the side of a longer window since you can end it early, but extending one after alerts have already fired defeats the purpose.
Should I notify status page subscribers before maintenance? ▼
Yes. Send a notification at least 24 hours before scheduled maintenance so subscribers can plan around the downtime. Include the expected start time, estimated duration, which services will be affected, and what users should expect. This reduces inbound support requests and builds trust with your users.
Can I set up recurring maintenance windows? ▼
Yes. Most monitoring tools, including Hyperping, support recurring maintenance schedules for regular activities like weekly deployments or monthly patching. Recurring windows save time by eliminating the need to manually create a new window each cycle, and they help teams build predictable maintenance habits.
What happens if maintenance runs longer than the scheduled window? ▼
If maintenance extends beyond the window, monitoring will resume and alerts will fire for any services still down. To avoid this, either build buffer time into your original window, or extend the window before it expires. Some teams assign a dedicated person to watch the clock and extend the window if the work is running behind.




