Most on-call platforms treat PTO as someone else's problem — and that's how people on vacation get paged. OpShift ships with a PTO module that lives inside the same database as your schedule, so approved time-off and live rotations are reconciled at every scheduling step.
Requests, policies, balances
- Policies — define accrual rates, carryover limits, and which leave types your team supports (vacation, sick, parental, unpaid).
- Requests — engineers submit start/end dates and a leave type; admins approve or deny.
- Balances — accrued, used, and remaining hours per policy, computed live so engineers always know what they have.
- Templates — reusable presets for common request patterns (single-day, half-day, holiday block).
Cross-check with on-call
When a PTO request is approved, the system iterates over the affected on-call schedule slots. For each slot it asks: is this engineer the one on duty? If yes, the slot is flagged with a conflict marker the team can resolve before the shift starts. When auto-swap is enabled, the slot is reassigned to the next available engineer in the rotation.
Blackout dates
Launches, migrations, and freeze windows are the inverse of PTO — times when you need someone available. Mark those windows as blackouts and PTO requests overlapping them require an explicit admin override.
The classic failure mode of bolt-on PTO integrations is a stale sync: someone approves PTO on Monday, the on-call sync runs Wednesday, and in the meantime an alert pages a person on leave. OpShift avoids that because there is no sync — both systems read from the same database.