Xitoring Document
Home
FAQ
Support
Register
Home
FAQ
Support
Register
  • Xitoring

    • Introduction
    • Release Notes
    • Xitoring Release Notes
    • Linux Xitogent Release Notes
    • Windows Xitogent Release Notes
    • Xitoring Mobile App Release Notes
    • Account Management
    • API Access & Automation
    • Team Management & Collaboration
    • Billing & Subscription Management
  • Getting Started

    • Getting Started with Xitoring
    • Workflows & Guides
    • Monitor Your First Server
    • Import / Migration
    • Migrate from UptimeRobot to Xitoring
    • Migrate from Pingdom to Xitoring
    • Migrate from Uptime.com to Xitoring
    • Migrate from BetterStack to Xitoring
  • Help & Support

    • FAQ & Troubleshooting
    • Glossary
  • Server Monitoring

    • Server Monitoring
    • Graphs
    • Live Statistics
    • Monitor Services
    • Auto-Triggers
  • Xitogent on Linux

    • Install Xitogent on Linux
    • Update Xitogent on Linux
    • Uninstall Xitogent on Linux
  • Xitogent on Windows

    • Install Xitogent on Windows
    • Uninstall Xitogent on Windows
    • Xitogent Service
    • Update Xitogent on Windows
    • Disk Performance (I/O)
  • Xitogent on Azure

    • Xitogent on Azure
    • Monitor Azure Linux VM
    • Monitor Azure Windows VM
  • Xitogent CLI

    • Xitogent CLI
    • Xitogent Pause/Unpause
    • Xitogent Status
    • Xitogent debug
    • Xitogent Diagnosis
    • Which data we collect
  • Xitoring CLI

    • Xitoring CLI
  • Uptime Monitoring

    • What is Uptime Monitoring
    • Monitoring Nodes (Geographic Locations)
    • What is Check
    • Auto-Discovery
    • Auto Fault Tolerance
    • Heartbeat Check
    • Ping Check
    • HTTP(S) Check
    • DNS Check
    • FTP Check
    • SMTP Check
    • IMAP Check
    • POP3 Check
    • TCP Check
    • UDP Check
    • Domain Expiry Check
  • SSL Monitoring

    • SSL Monitoring
  • Incidents

    • Incidents
    • Incident's Root Cause
    • Incidents Notification
    • Incident Notes
    • Acknowledge and Snooze Incidents
    • Resolving Incidents Manually
    • Incident Policy
  • On-Call

    • On-Call
    • On-Call Schedules
    • Escalation Policies
  • Maintenance Schedule

    • Maintenance Schedule
  • Email Reports

    • Email Reports
  • Integrations

    • Integrations
    • Apache Integration
    • CoreDNS Integration
    • CouchDB Integration
    • Disk Health Integration
    • Docker Integration
    • Dovecot Integration
    • Exim Integration
    • HAProxy Integration
    • IIS Integration
    • InfluxDB Integration
    • Kafka Integration
    • KeyDB Integration
    • LiteSpeed Integration
    • MongoDB Integration
    • MySQL Integration
    • Netstat Integration
    • Nginx Integration
    • OpenLiteSpeed Integration
    • OpenVPN Integration
    • PHP-FPM Integration
    • Postfix Integration
    • PostgreSQL Integration
    • RabbitMQ integration
    • Redis Integration
    • MS SQL Server Integration
    • Supervisor Integration
    • Varnish Integration
    • Wireguard Integration
  • Notifications

    • Notifications
    • Creating Notification Roles
    • Email Integration
    • Mobile Push Notifications
    • SMS Integration
    • Phone call Integration
    • Webhook Integration
    • Integration for Slack
    • Telegram Integration
    • WhatsApp Integration
    • Mattermost Integration
    • Discord Integration
    • Google Chat Integration
    • Microsoft Teams Integration
    • Microsoft Teams (Webhook)
    • Atlassian Opsgenie Integration
    • Jira Service Management
    • Splunk On-Call Integration
    • Pushover Integration
    • Pushbullet Integration
    • Gotify Integration
    • Ntfy Integration
    • Spike.sh Integration
    • PagerDuty Integration
    • Zapier Integration
    • AlertOps Integration
  • Status Page

    • Status page
  • 3rd Party Status Pages

    • Using 3rd party Status Pages
    • Atlassian Status Page Integration with Xitoring
    • Status.io Integration with Xitoring
    • Statuspal Integration with Xitoring
    • Instatus Integration with Xitoring
  • Dashboards

    • Main Dashboard
    • Custom Dashboards
  • Metrics

    • Metrics
  • MCP Server

    • Setup & Tool Reference

Escalation Policies

An escalation policy notifies more people, step by step, while an incident is open and nobody has acknowledged it. For example: the on-call person first, their backup 15 minutes later, then the team lead.

Escalation policies are included in the Business plans.

Policies add to notification roles

A policy doesn't replace notification roles. The trigger's roles still fire immediately, and their repeat setting works as before. The policy's steps run in addition.

How a policy runs

  1. The incident opens and the trigger's notification roles send the first notification.
  2. Step 1 waits for its delay, counted from that first notification.
  3. Each later step waits for its own delay, counted from the previous step.
  4. After the last step, the policy starts over if it is set to repeat. Otherwise it is finished.

For example:

StepDelaySent afterMessage starts with
15 minutes5 minutes[ESCALATED 1/3]
215 minutes20 minutes[ESCALATED 2/3]
330 minutes50 minutes[ESCALATED 3/3]

What stops it

EventEffect
AcknowledgeStops the policy
SnoozePauses the policy
The incident resolvesStops the policy
The check is pausedSteps are skipped
A maintenance window is activeSteps are skipped

Steps and targets

A policy has a name, an optional description and 1 to 10 steps. Each step has:

  • A delay from 0 to 1440 minutes (24 hours).
  • Targets, at least one per step:
    • Notification roles, which reach the role's people, custom recipients and integrations such as Slack.
    • People or on-call schedules per channel: email, SMS, phone call or push notification. A schedule means whoever is on call when the step is sent.

Each list holds up to 20 entries. SMS and phone calls use your credits.

Deleting a role, a person or a schedule removes it from every step. That can leave a step with no targets, so review your policies after removing someone from the team.

Repeat

After the last step, a policy can start over:

  • Repeat times: 0 to 10. 0 means it doesn't repeat.
  • Repeat after: 1 to 1440 minutes between rounds. Required when it repeats.

Attach a policy

You can attach a policy at three levels. The most specific one wins:

  1. Trigger: the policy set on the trigger itself.
  2. Server: used by the server's triggers that have no policy of their own.
  3. Group: used when neither the trigger nor the server has one. Subgroups without their own policy inherit it.

Each trigger, server and group can have one policy. Clearing a policy at one level lets the next one apply. Deleting a policy removes it from everything that used it, which then relies on notification roles only.

Test a policy

A dry run shows who each step would reach right now, resolving roles and schedules as of this moment. Nothing is sent. Run it after changing a rotation or a role, since the answer can change as shifts change.

Who can manage policies

Everyone on the account can see policies and run a dry run. Creating, editing and deleting them needs the on-call permission. Attaching a policy to a server or group needs write access to it.

Relation to repeat notifications

Role repeatEscalation policy
Set onNotification roleTrigger, server or group
Who gets itThe same recipients each timeDifferent targets per step
TimingOne fixed intervalA delay per step
Message starts with[REPEATED][ESCALATED 2/3]
PlansAllBusiness
Stopped by acknowledgeYesYes

Use a role repeat to keep reminding the same people. Use a policy when the alert should move on to someone else.

API

Authenticate with an API key.

RequestWhat it does
GET /api/v2/escalation-policiesList policies
POST /api/v2/escalation-policiesCreate a policy
GET /api/v2/escalation-policies/{id}A policy with its steps, each step's total wait, and how many servers, groups and triggers use it
PUT /api/v2/escalation-policies/{id}Update a policy. Sending steps replaces all steps
DELETE /api/v2/escalation-policies/{id}Delete a policy
POST /api/v2/escalation-policies/{id}/testDry run. Nothing is sent
PUT /api/v2/servers/{id}/escalation-policySet a server's policy with escalation_policy_id, or clear it with null
PUT /api/v2/groups/{id}/escalation-policySet a group's policy with escalation_policy_id, or clear it with null

On a trigger, send escalation_policy_id inside the trigger's data, next to notification_roles. Use null to clear it. Leaving it out of an update keeps the current policy.

A policy looks like this:

{
  "name": "Primary",
  "description": "On-call first, then the team lead",
  "repeat_times": 2,
  "repeat_after_minutes": 30,
  "steps": [
    {
      "delay_minutes": 5,
      "targets": {
        "recipients": {
          "sms": {"schedules": [12]},
          "notification": {"schedules": [12]}
        }
      }
    },
    {
      "delay_minutes": 15,
      "targets": {
        "notification_roles": [41],
        "recipients": {
          "call": {"contacts": [7]}
        }
      }
    }
  ]
}

Under recipients, the channels are email, sms, call and notification (push). Each takes clients (the account owner), contacts (team members) and schedules.

Last Updated: 11/9/26, 8:51 PM
Prev
On-Call Schedules