Business

How to Test an Escalation Path with a Real Ticket

Antonio Evans10 min read

A split scene: on the left, an engineer at a desk creates a test ticket in a dashboard labeled 'Escalation Test'; on the right, an on-call phone lights up with a page notification showing a timer.
Key points

Key points

  1. 1A real test ticket must match the escalation rules exactly: right priority, right service, right team, or the page never fires.
  2. 2Measure two clocks separately: the escalation timeout that starts the next rule, and the time from page to human acknowledgment.
  3. 3An acknowledged incident is not a resolved one, and an ack from a shared inbox is not proof that a person who can act has seen it.
  4. 4Record every timestamp in one table, then fix contact data, timers and notification gaps before the next real incident finds them.

Building a test ticket that actually pages

Most escalation paths are configured once and then trusted for years. The failure mode is quiet: the ticket opens, a notification goes to a channel nobody is watching, and the outage ages until a customer reports it. A controlled test closes that gap, but only if the ticket you create is indistinguishable, from the routing system's point of view, from a real one.

Start by reading the escalation policy attached to the service. In PagerDuty, an escalation policy is an ordered set of rules, and when an incident triggers the system notifies the first rule's target immediately, with no delay before that first notification the PagerDuty escalation policy documentation. That tells you the minimum conditions a test ticket must meet: it must trigger an incident on the correct service, because services are what carry escalation policies.

The checklist below mirrors what a routing engine evaluates. Work through it before you create anything.

FieldWhat the engine checksCommon test failure
Service or teamMaps to one escalation policyTest created on a default service, so the real policy is never exercised
Priority or urgencySelects the policy variant, or the high-urgency notification pathLow priority chosen, so only an email fires
Alert sourceConfirms the alert arrived through the expected integrationManual ticket created, bypassing the alerting integration entirely
OwnershipAssigns the ticket to the on-call schedule, not a named personNamed individual chosen, so schedule rotation is never tested
Ticket typeDistinguishes incident from service requestRequest type used, which many systems route to a queue, not a page

Datadog's on-call documentation describes escalation policies in the same shape: policies define who gets notified and in what order when a monitor alerts Datadog's escalation policy docs. ServiceNow's on-call scheduling separates escalation trigger rules from the escalation process itself, which matters for the test because a trigger rule can silently fail to fire while the process looks correctly configured ServiceNow's escalation policy guide.

Practical rule: create the test ticket from the same entry point a real alert uses. If alerts arrive through a monitoring integration, trigger a synthetic alert through that integration rather than opening a ticket by hand. A hand-made ticket tests your typing, not your escalation path.

One more decision before you start: tell the on-call responder that a test is coming, but do not tell them the exact minute. A responder who knows the precise moment will be watching their phone and will acknowledge in four seconds, which tells you nothing about real behavior. A responder who knows a test is scheduled this week behaves close to normally.

Verifying the page reaches the right person

"Reached the right channel" and "reached the right person" are different claims. Slack messages to a shared channel, distribution lists and generic mailboxes are channels. The escalation path is only healthy if the notification lands on a device or account that a specific on-call human is monitoring.

Confirm five things during the first minutes of the test.

First, check the notification record in the tool, not the channel. Most incident tools log which targets were notified, by which method, at what timestamp. Second, confirm the identity of the target: is the person named in the notification record the same person currently on the schedule? Contact data drifts when people change phone numbers, move time zones or leave, and a stale number in a paging profile fails silently. Third, confirm the method: a push notification, a phone call and a text have very different reliability profiles, and a policy that only sends email is not a page. Fourth, confirm the device: ask the responder to reply from the device that received it, so you know they saw it where they would see a real alert. Fifth, confirm they can act: can they open the ticket, read the runbook link included in the notification, and reach the systems the ticket references?

That last point is where many paths break. The escalation reached a human, but the human lacked the permissions, the runbook or the context to do anything. Incident.io's guidance on escalation policy design puts ownership and service and role based routing near the center of reliable response workflows, precisely because a notification without an accountable owner produces acknowledgment without action incident.io's escalation policy best practices.

A rule for what counts as "reached"

Write the rule down before the test so nobody argues about it afterward. I use this one: an escalation step succeeds only when a named individual, currently on the schedule, receives the notification on a monitored device, opens the linked ticket or runbook, and states one concrete next action they would take. Anything less is a partial pass and gets logged as such.

Measuring response time from page to acknowledgment

You need two numbers, and they answer different questions.

The first is the escalation timeout. In PagerDuty, the "escalates after X min" value is the time a responder has to acknowledge, resolve or reassign before the incident moves to the next rule; it does not delay the first notification the PagerDuty escalation policy documentation. So the timeout is a configuration value, not a measurement. You verify it by observing when the second rule actually fires.

The second is time to acknowledgment: the gap between the first notification leaving the system and a human acknowledging. This is what you measure, and it is the number leadership should care about. Mean time to acknowledge appears on standard incident response metric lists alongside mean time to detect and mean time to resolve Splunk's incident response metrics overview.

A worked example makes the arithmetic concrete. Suppose your policy has three rules: primary on-call, then the secondary on-call after 5 minutes, then the engineering manager after 10 more minutes. You trigger the test at 14:02:00.

EventTimestampElapsedWhat it tells you
Ticket created, first rule notified14:02:000:00Trigger and routing work
Push delivered to primary's phone14:02:030:03Notification transport is fast
Primary does not acknowledge14:07:005:00Timeout matches configuration
Second rule notified14:07:025:02Escalation fired correctly
Secondary acknowledges14:08:406:40Human response time to ack: 6:40 from trigger, 1:38 after being paged

Read the table carefully. Total time to acknowledgment was 6 minutes 40 seconds, but the secondary responder took 1 minute 38 seconds once paged. If you only report the first number, you will spend effort on the wrong problem. If your target is three minutes to acknowledgment, the primary's absence is the issue, not the tooling. If the target is ten minutes, the path passed and you should move on to testing a different service.

Record more than the headline number. The 90th percentile across several tests matters more than any single run because on-call behavior varies by hour and by person, and a path that works at 11 a.m. on a Tuesday may behave differently at 3 a.m. on a Sunday. Run the test at least once outside business hours, and once during a handoff window if your team rotates across time zones. Incident.io's material on timezone handoffs treats those windows as a distinct coverage risk incident.io's escalation policy best practices.

For machine-generated alerts feeding the path, log structured fields rather than free text so you can compute these intervals later. The audit logging discipline described for AI systems applies here too: capture who acted, when, with what context, in a form you can query LoginRadius's guide to auditing agent activity and Latitude's audit log guidance. A timestamp buried in a prose note is not a measurement.

Confirming the escalation reaches a human who can act

This is the step teams skip, and it is the one that matters most during an outage. Acknowledgment proves someone pressed a button. It does not prove the incident reached a person with the authority, access and knowledge to fix the problem.

Acknowledging an incident tells the tool that a responder is working on it and stops the policy from escalating, but it does not resolve the incident, and an acknowledged incident that re-triggers resumes following the policy the PagerDuty escalation policy documentation. That behavior is a gift for testers: you can acknowledge as the primary, let the incident re-trigger, and observe the whole path again without rebuilding anything.

Test the "can act" dimension with three questions to the responder, asked live during the test.

  1. What is this ticket about, in one sentence? If they cannot answer, the notification lacks context, and a real responder would waste the first minutes hunting for it.
  2. What would you do next, concretely? They should be able to name a dashboard, a runbook step or a rollback command.
  3. Can you actually do it right now? Ask them to open the linked runbook and the relevant console read-only, so you are not asking anyone to change production. If permissions block them, you have found a real gap.

Then verify the escalation chain end to end, not just the first hop. Deliberately do not acknowledge as the primary, and watch whether the secondary is paged at the configured interval, then the manager. Confirm each rule's target is a person who can act, not a group alias. A manager rule that pages a shared leadership mailbox is a decorative rule.

Keep the test ticket and its timeline as evidence. Attach the notification log, the timestamp table and the responder's answers to the ticket, then close it with a short note. That record is what you will compare against when the policy changes, and it is what convinces a skeptical engineering manager that the on-call rotation is worth its cost.

The same discipline of measurement and attribution shows up in adjacent work. Teams that track per-task cost for AI agent work use the identical idea, attaching an owner and an identifier to every unit of activity so the bill or the alert can be attributed later Keito's guide to AI agent cost per task and Amnic's step-by-step cost allocation method. Escalation tests and cost attribution are both exercises in answering "who owns this, and how do we know?"

Handling failures and fixing the path

A test that passes on the first try deserves a second, harder test. A test that fails has just paid for itself. Triage failures into four buckets, because each has a different owner and a different fix.

FailureSymptom in the timelineFix ownerTypical fix
Contact dataNo delivery event at all for the first ruleOn-call adminCorrect phone numbers, verify push device, confirm the person is on the schedule
RoutingTicket created but attached to the wrong service or policyService ownerRepoint the service to the intended escalation policy
TimerEscalation fires early, late, or neverTooling adminCorrect the escalation timeout, check trigger rules
AuthorityNotification delivered and acknowledged, but responder cannot actEngineering managerGrant access, write or link the runbook, add context to the notification

For contact data, do not trust what the directory says. Ask the responder to read back the number on the device that received the page. For routing, remember that in PagerDuty a service can only be associated with one escalation policy, while a policy can serve many services, so a misrouted test usually means the service points somewhere unintended the PagerDuty escalation policy documentation. For timers, re-run the test after the fix; a timer change is only proven by observation.

For authority failures, the fix is often documentation rather than permissions. A notification that includes the runbook link and the service owner's name converts an acknowledged-but-stuck responder into an acting one. The IT service catalog literature makes the same point in a different vocabulary: a catalog entry is only useful if it states the service owner, the request procedure and the support path, so a person on the receiving end knows exactly what to do the ManageEngine service catalog guide and Superblocks' service catalog management guide. Your escalation notification should carry the same three facts.

Schedule the retest before you close the first ticket. A gap that is fixed but unverified is a gap waiting to reopen, and the retest takes minutes now versus hours during a real incident.

Turning one test into a repeatable check

One test proves one path on one night. The goal is a small, boring routine that runs often enough to catch drift. Three practices make the difference.

Run the test on a calendar cadence per service, and rotate which service you pick so every escalation policy gets exercised. Trigger the test through the real alerting integration so the integration itself is under test. Keep the timestamp table as the artifact, and compare each run against the last: if time to acknowledgment is creeping up, you have found a trend before it becomes an outage.

Automate the parts that can be automated. Several incident tools support programmatic incident creation, and PagerDuty's documentation set includes machine-readable guidance for assistants and automations integrating with it the PagerDuty escalation policy documentation. A scheduled job that opens a low-blast-radius test ticket on a rotating service, tags it as a test, and auto-resolves it if nobody touches it in twenty minutes gives you a continuous signal with almost no human effort. Keep the human-in-the-loop test for the "can act" questions, which no automation can answer.

Log the results where you keep your other operational records. The Cloud Security Alliance's auditing guidance for cloud service providers treats documented, repeatable assessment as a control in its own right, reviewed on a schedule rather than once the CSA AICM auditing guidelines. Escalation testing belongs in the same category: a control that is only real if it is exercised and recorded.

If your team is extending this discipline to AI-assisted operations, where agents increasingly open tickets and page humans on their own behalf, the "who can act" question gets sharper. That is a good moment to get a second opinion on how your detection, routing and response fit together; a free 30-minute discovery call with Quanta Consulting is one way to map it against your goals.

FAQ

FAQ

How do I create a test ticket that will actually trigger a page?

Create it through the same entry point a real alert uses, on the correct service and at the priority or urgency level that selects the paging path. If alerts arrive through a monitoring integration, fire a synthetic alert through that integration rather than opening a ticket by hand. Then confirm in the tool's notification log that the first rule's target was actually notified.

What is the difference between the escalation timeout and time to acknowledgment?

The escalation timeout is a configuration value: how long a responder has to act before the incident moves to the next rule. Time to acknowledgment is a measurement: the gap between the first notification and a human acknowledging. Report both, because a slow path can come from an absent primary responder or from a late-firing timer, and the two need different fixes.

Does an acknowledgment prove the escalation reached someone who can act?

No. Acknowledgment only stops the policy from escalating and pauses further notifications. To prove the escalation reached a person who can act, ask the responder to explain the ticket in one sentence, name their next concrete step, and open the linked runbook or console. If permissions or context block them, the step is a partial pass.

How often should I test an escalation path?

Test each service on a regular calendar cadence and rotate through services so every policy gets exercised, including at least one run outside business hours and one across a timezone handoff. Retest immediately after any fix, and compare each run's timestamps against the previous run to catch slow drift in acknowledgment times.

What should I do when the test fails?

Sort the failure into contact data, routing, timer or authority, then assign it to the owner who can fix that category. Correct the record, repoint the service, or adjust the timeout, and schedule the retest before closing the original ticket. Attach the notification log and timestamp table to the ticket so the fix is verifiable later.

Sources

Sources

  1. Escalation Policy Basics
  2. Escalation Policies
  3. Create an escalation policy
  4. Escalation policy best practices: designing ...
  5. Top 8 Incident Response Metrics To Know
  6. Auditing and Logging AI Agent Activity: A Guide for Engineers
  7. Audit logs in AI systems: What to track and why - Latitude.so
  8. AI Agent Cost Per Task: How to Measure the True Cost of ...
  9. How to Allocate AI Cost: A Step-by-Step FinOps Method
  10. ITIL service catalog guide: ITSM examples and templates
  11. Service Catalog Management: Examples, Best Practices & ...
  12. Auditing Guidelines for Cloud Service Providers (CSP)
About the author

About the author

Antonio Evans
Antonio Evans

Antonio Evans is the founder of Quanta Intelligence and a fractional CTO who builds HIPAA-ready AI systems for health and life-science companies. Before that he was technical co-founder of FriendsEAT for twenty years, CEO of Socialdraft, and a data engineer at IBM. Antonio lives with his dog Santino in Lisbon, Portugal.

All articles