An on-call schedule decides who gets paged when an alert fires. OpShift schedules are rotation-based — you define the engineers in the pool, the cadence (daily, weekly, custom), and the shift boundaries. The system generates upcoming shifts, sends handoff DMs in Slack, and routes alerts to whoever is on duty at the moment of firing.
Rotation patterns
| Field | Type | Description |
|---|---|---|
daily | rotation | Each engineer takes one calendar day; handoff at a configurable time. |
weekly | rotation | Each engineer takes seven days. Default handoff is Monday morning local time. |
custom | rotation | Arbitrary shift length defined in hours; useful for follow-the-sun coverage. |
manual | rotation | No auto-generation — shifts placed by hand on the schedule grid. |
Handoffs
When a shift boundary arrives, OpShift sends a Slack DM to the outgoing and incoming engineer, posts a summary to the team channel, and updates the "who's on-call" widget across the dashboard. Handoff reminders also fire ahead of the boundary so people have time to wrap up.
Escalation
A notification policy can escalate an unacknowledged alert through multiple steps — Slack, then phone, then a backup engineer, with independent timers per step. Until the alert is acknowledged or resolved, each step fires in sequence. Acknowledgement stops the escalation chain.
PTO-aware scheduling
OpShift cross-references PTO with on-call rotations. When the engineer scheduled for a shift has an approved PTO request that overlaps the shift, the grid flags the conflict — visually, before the shift is ever active — and (if auto-swap is enabled) substitutes the next available engineer in the rotation.
- Visual conflict markers on the schedule grid
- Auto-swap coverage when PTO is approved after the schedule was generated
- Blackout dates for launches, migrations, and freeze windows
- Built-in PTO module — no separate HR tool to sync
The schedule consumes PTO data; the PTO module handles requests, policies, balances, and approvals.
Who's on-call right now?
Every page in OpShift shows the current on-call engineer. The same value drives the alert router — when an incident fires, OpShift resolves the current schedule slot, picks up the assigned engineer, and walks the notification policy from the top.