Runbook: Missed escalation
Symptom: An alert fired and an incident was created, but the on-call engineer was not paged. Or the first tier was paged but escalation to the next tier did not fire after the timeout.Diagnose
1. Check the incident timeline: Open the incident in the UI → Timeline tab. Look for:escalation_triggeredentries — confirms the escalation policy firednotification_sententries — confirms the page was attempted- Any error entries related to notifications
- At least one tier has users or a schedule assigned
- Tier timeouts are set (e.g., 5 minutes before escalating to the next tier)
- The schedule referenced in the policy has active members at the time the incident fired
Common causes
Mitigate
Page the on-call engineer manually while investigating root cause — don’t wait for the system to recover first. Manually trigger escalation: If the incident exists but nobody was paged, manually acknowledge and then page via Slack if that integration is working:Resolve
- Fix the root cause (schedule gap, Redis, policy config)
- Verify by creating a test incident and confirming the escalation fires at the expected timeout
- Check the schedule for the next 7 days to ensure there are no other gaps where nobody is on call
Prevention
- Every escalation policy tier should have a fallback schedule or a named individual as the final tier with no timeout (always pages)
- Run a monthly “schedule audit” — go to On-Call → Schedules and verify every schedule has coverage for the next 30 days
- Monitor Redis availability — escalation timers depend on it
- Set a routing rule default action that attaches your primary escalation policy to all new incidents
