Schedule your first maintenance
Schedule a maintenance window with auto-start and auto-complete.
Maintenance windows differ from incidents in two ways: they are planned in advance, and Observer auto-transitions them through their lifecycle on a cron tick (so you do not have to remember to mark "started" / "completed" manually).
Steps
Open the new-maintenance form
In the console, navigate to Updates > Post update. Pick Maintenance as the type. The form replaces the severity field with a Scheduled start + Scheduled end pair.
Set the window
Pick the start and end times in your local timezone. The cron auto-transitions the maintenance through:
scheduled→in_progresswhennow() >= scheduled_start_at.in_progress→completedwhennow() >= scheduled_end_at.
A maintenance.starting_soon webhook fires one hour before
scheduled_start_at (idempotent; once per maintenance row).
Pick affected services
The public page renders a banner for the maintenance starting within 24 hours and a sticky banner while in progress. The banner lists affected services so customers know which surfaces are impacted.
Publish
Maintenances always publish on save (drafts are an incident-only
flow). The page banner appears within 24 hours of the scheduled
start; subscribers receive maintenance.scheduled immediately and
maintenance.starting_soon one hour out.
Cancel a scheduled maintenance
Open the maintenance row from Updates. The right-side rail has a
Cancel action. canceled_at is set, the banner is removed, and
the maintenance.canceled webhook fires.
Manual override
The lifecycle transitions can be triggered manually via the API
(POST /api/v1/maintenances/{id}/start and /complete) when the
cron schedule does not match the actual change-window timing.