Escalation policy configuration
Unit Oncall does not have a standalone "escalation policy" resource. Escalation is configured inside the Schedule that handles an alert: the same fields that define rotation also decide how long Unit Oncall waits for each responder, how many rounds to attempt, and who to notify as the final fallback.
This page collects all of those fields in one place so you can reason about escalation on its own. See Schedule for the full Schedule reference.
Fields (on the Schedule)
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
rotation_timeout_seconds | number | Yes | — | Seconds Unit Oncall waits for a responder before moving on to the next member. Range: 30–300. |
rotation_rounds | number | Yes | — | How many full rounds through the member list Unit Oncall attempts before giving up. Range: 1–5. |
final_escalation_user_email | string | No | — | Email of the user notified after the last round fails. Must be a member of the Schedule's Team. |
members | array | Yes | — | The on-call rotation. Each entry is { user_id, rotation_order } or { user_email, rotation_order }. Members must belong to the Team. |
configurations | array | No | [] | Overlay rotations effective only inside a date range. Up to 10; date ranges must not overlap; each overlay needs at least one member. |
How escalation runs
When an alert is routed to a Schedule:
- Unit Oncall takes the first member by
rotation_orderand notifies them. - If the member does not respond within
rotation_timeout_seconds, Unit Oncall moves to the next member in order. - After the last member in the list, the round is finished. Unit Oncall starts the next round, up to
rotation_roundstotal rounds. - If every round finishes without a response, Unit Oncall escalates to
final_escalation_user_email(the final fallback). Iffinal_escalation_user_emailis not set, no extra notification is sent after the last round.
A few details to keep in mind:
- The number of attempts per alert is bounded by
members × rotation_rounds, so setrotation_timeout_secondsandrotation_roundsso the total wait is acceptable. final_escalation_user_emailis resolved against the Team's members only. An email that is not a member of the Team is rejected (email_not_found).- Members in
members(and any overlay) are also resolved against the Team's members. Non-members are rejected (not_team_member). - If an overlay is active for the current date, its
membersreplace the basemembersfor that period; rotation_timeout and rotation_rounds still come from the Schedule.
Validation rules
rotation_timeout_secondsis rejected outside30–300.rotation_roundsis rejected outside1–5.membersmust contain at least one entry.final_escalation_user_email, when provided, must belong to a current Team member.configurations: at most 10 overlays, no date-range overlaps, each overlay must have at least one member.
Examples
A small team with a single round and a fallback user:
{
"name": "Backend on-call",
"rotation_period": "weekly",
"rotation_timeout_seconds": 120,
"rotation_rounds": 1,
"final_escalation_user_email": "lead@example.com",
"members": [
{ "user_email": "alice@example.com", "rotation_order": 1 },
{ "user_email": "bob@example.com", "rotation_order": 2 }
]
}
Three rounds, longer per-member wait, no final fallback:
{
"name": "Platform on-call",
"rotation_period": "weekly",
"rotation_timeout_seconds": 300,
"rotation_rounds": 3,
"members": [
{ "user_email": "carol@example.com", "rotation_order": 1 },
{ "user_email": "dave@example.com", "rotation_order": 2 },
{ "user_email": "erin@example.com", "rotation_order": 3 }
]
}
Rotation with a holiday overlay:
{
"name": "EU on-call",
"rotation_period": "weekly",
"rotation_timeout_seconds": 180,
"rotation_rounds": 2,
"final_escalation_user_email": "eu-lead@example.com",
"members": [
{ "user_email": "fred@example.com", "rotation_order": 1 },
{ "user_email": "gina@example.com", "rotation_order": 2 }
],
"configurations": [
{
"effective_date": "2026-12-23",
"end_date": "2027-01-03",
"members": [
{ "user_email": "henri@example.com", "rotation_order": 1 }
]
}
]
}
Related
- Schedule — full Schedule reference, including timezone, labels, and VoIP call behavior.
- Team — both rotation members and the final-escalation user must be members of the Team.
- Maintenance window — pause escalation for a Schedule during planned work.
