Alert Escalation Policies¶
Availability: Maintenant Pro
Escalation policies automatically route unacknowledged alerts through a chain of notification levels, each with a configurable delay and a distinct set of channels.
Pattern: reserved-escalation channel. Since channels are silent by default (they only receive alerts when wired through an Alert Trigger), you can create a channel that exists only for an escalation level. The directrice technique's email referenced in Level 3 of a policy, with no trigger using it, will only be notified after T+1h of unacknowledged escalation — never at the initial dispatch. This is the cleanest way to model "last-resort" destinations without duplicate notifications.
Concept¶
When an alert fires and remains unacknowledged, an active escalation policy that matches the alert will start an escalation run. The run tracks which notification level is currently due and dispatches notifications to the configured channels at each level's delay. The chain stops as soon as the alert is acknowledged or resolved.
Alert fires
│
├─ Level 1 (delay 5 min) → Notify #slack-oncall
│
├─ Level 2 (delay 15 min, if still unacknowledged) → Page +33-6-XX
│
└─ Level 3 (delay 1 hour, if still unacknowledged) → Email management
Examples¶
Single-level policy¶
Notify the on-call Slack channel 5 minutes after an alert fires.
{
"name": "Critical pager — Level 1 only",
"active": true,
"filters": { "severities": ["critical"] },
"levels": [
{ "delay_seconds": 300, "channel_ids": [1] }
]
}
Multi-level policy¶
Escalate progressively over an hour.
{
"name": "Full on-call chain",
"active": true,
"filters": { "severities": ["critical", "warning"] },
"levels": [
{ "delay_seconds": 300, "channel_ids": [1] },
{ "delay_seconds": 900, "channel_ids": [2] },
{ "delay_seconds": 3600, "channel_ids": [3] }
]
}
Filter by tag¶
Only escalate alerts tagged prod.
{
"name": "Prod-only chain",
"active": true,
"filters": {
"severities": ["critical"],
"tags": ["prod"]
},
"levels": [
{ "delay_seconds": 300, "channel_ids": [1] }
]
}
Interactions¶
Acknowledgment stops escalation¶
When an alert is acknowledged, any active escalation run is immediately stopped with status stopped_by_ack. A notification is sent on all channels that have already received an escalation notification, informing them the alert has been acknowledged.
Resolution stops escalation¶
When an alert resolves (automatically or manually), any active run is stopped with status stopped_by_resolution. A similar closure notification is sent on escalated channels.
Maintenance windows suspend escalation¶
During a maintenance window that covers the monitored entity, escalation runs are paused (paused_by_maintenance) rather than stopped. When the window ends, the run resumes from where it left off — the delay is extended by the paused duration, so no level is skipped.
Chain exhausted¶
If all levels fire without an acknowledgment or resolution, the run ends with status exhausted. A final notification is sent on the last level's channels.
API¶
All endpoints require Pro edition. Requests in Community Edition return 403 edition_required.
| Method | Path | Description |
|---|---|---|
POST |
/api/v1/escalation-policies |
Create a policy |
GET |
/api/v1/escalation-policies |
List all policies |
GET |
/api/v1/escalation-policies/{id} |
Get a policy |
PUT |
/api/v1/escalation-policies/{id} |
Update a policy |
PATCH |
/api/v1/escalation-policies/{id}/active |
Activate / deactivate |
DELETE |
/api/v1/escalation-policies/{id} |
Delete a policy |
POST |
/api/v1/escalation-policies/overlap-probe |
Detect overlapping policies |
GET |
/api/v1/alerts/{id}/escalation-runs |
List runs for an alert |
GET |
/api/v1/escalation-runs/{id} |
Get run detail + deliveries |
GET |
/api/v1/escalation-policies/{id}/runs |
List recent runs for a policy |
FAQ¶
Can I have multiple policies matching the same alert? Yes. Each matching active policy starts its own independent run. The overlap-probe endpoint helps you detect potential conflicts before saving a policy.
What happens if a channel fails to deliver?
The delivery is recorded with status=failed and the error message. The run continues to the next level — a single channel failure does not stop the chain.
What happens to runs when I downgrade from Pro to Community?
All active policies are deactivated and all active runs are stopped with stopped_by_edition_downgrade. When you upgrade back to Pro, policies are automatically restored to their previous active state.
What is the audit trail?
Every notification attempt is recorded in the escalation_deliveries table with its status (sent, failed, pending), the channel, the level index, and timestamps. Use GET /api/v1/escalation-runs/{id} to retrieve the full delivery history for any run.
When are old runs purged?
Runs and their deliveries are purged nightly at 03:00 local time if their ended_at is older than 90 days. Active runs are never purged.