Escalation
Page the primary, then the backup, until someone actually acknowledges
An escalation policy pages the primary step, then the backup, through whichever channel they've personally set up, until someone actually acknowledges it, not just until an alert was sent.
Primary, then backup, if nobody answers
An escalation policy has two steps, primary and backup, and each one either resolves through an on-call schedule or is a hand-typed contact, never both. A schedule-driven step is resolved fresh at the moment it actually fires, not once when the policy was first configured, since who's on call can genuinely change between the primary page and the backup one going out minutes later.
If the primary step isn't acknowledged within the policy's own escalate_after_minutes window, the backup step fires next automatically, no one has to notice the silence and page the backup by hand.
Reaches people the way they've actually set themselves up to be reached
A schedule-driven step can page through email, a Slack DM, or a personal webhook, each read off the on-call person's own account rather than a contact hard-typed onto the policy itself. There's no separate "recovered" notification to wait on either: acknowledging is a single link right in the alert itself, and it stops the escalation from ever reaching its backup step at all.
The same acknowledge link on every channel; click it and the backup step never fires.
Enterprise plan only
Enforced at the model layer, the same unbypassable pattern every other gated feature in this app uses (SSO, uptime monitoring, API access): an escalation policy can't be saved for an organization whose plan doesn't include it, regardless of which path in the app tries to create one.