Guide
On-Call Guide
Set up rotations, define escalation chains, and ensure every critical alert reaches the right person — automatically.
On-call management in PingParrot is built around two independent concepts that pair naturally:
On-Call Schedules
Define who is responsible at any given time. Pages sent to a schedule are automatically routed to whoever is currently on duty.
Escalation Policies
Define what happens if a page goes unacknowledged. Chain steps together — page a backup, then a lead, then the whole group — each with its own timer.
Both are optional and independent. You can page someone directly without a schedule, use a schedule without a policy, or combine both for a fully automated response chain.
Key Concepts
A named list of time windows, each assigned to a team member. At any moment, exactly one person (or nobody) is "on call" for a given schedule.
A single time window within a schedule, assigned to one user. Entries can repeat on any weekly interval — weekly, every 5 weeks, or any interval from 1–52 weeks.
A temporary change to who is on call. Overrides take priority over all schedule entries and expire automatically.
A named sequence of escalation steps. When attached to a page, each step fires in order if the page remains unacknowledged.
One node in an escalation policy. A step has a target (user or group), a delay in minutes, and an optional repeat setting.
Creating a Schedule
Schedules are created and managed from the web portal. Organization owners and members can both create schedules.
Open On-Call Schedules
Navigate to On-Call Schedules in the left sidebar.
Enter a name
Choose a descriptive name like Database Team Rotation or Infra On-Call. The name appears in the page creation form when selecting a schedule.
Click Create
The schedule appears in the list, empty. Add entries in the next step.
Add schedule entries
Use the Add Entry form under the schedule to define who is on call and when.
Schedule Entries
Each entry assigns one team member to a time window. You can have multiple entries per schedule — they can overlap or leave gaps.
| Field | Required | Description |
|---|---|---|
| user | Yes | The team member on call during this window |
| starts_at | Yes | When this window begins (your local timezone) |
| ends_at | Yes | When this window ends — must be after starts_at |
| repeat_weeks | No | How often this entry repeats, in weeks. Leave blank for one-time; enter 1 for weekly, 2 for bi-weekly, up to 52 |
Recurrence
The repeat_weeks field controls how often an entry repeats. Leave it blank to create a one-time entry; enter any integer from 1–52 to repeat every N weeks from the original start date.
| repeat_weeks | Label | Behavior |
|---|---|---|
| (blank) | One-time | Active only during the exact dates specified. Never repeats. |
| 1 | Weekly | Repeats every 7 days from the original start. A window from Mon 08:00–Mon 17:00 is active every Monday 08:00–17:00 indefinitely. |
| 2 | Bi-weekly | Repeats every 14 days. Useful for teams alternating between two on-call engineers every other week. |
| 3 – 52 | Custom | Repeats every N × 7 days. Enter 4 for monthly-ish rotations, 6 for six-week cycles, etc. |
starts_at date. The day-of-week is fixed to whichever day you originally set. To model a Monday–Friday shift for multiple engineers, create separate entries for each person.
How On-Call Resolves
When a page targets a schedule, PingParrot evaluates it in this order:
Active override?
If a member has set an active Cover Now override on this schedule, they receive the page. Schedule entries are ignored while an override is active.
Matching schedule entry?
PingParrot looks for an entry whose window contains the current time, factoring in recurrence. If multiple entries match, the most recently created one is used.
Nobody on call
If neither an override nor a matching entry exists, PingParrot rejects the page with an error. Ensure your schedule has coverage for the hours you expect to page it.
Cover Now
Any team member can temporarily step up as on-call without changing the schedule. This is useful for shift swaps, sick cover, or emergency situations.
On the web portal
Go to On-Call Schedules and find the schedule you want to cover.
Select a duration from the Duration dropdown (1 hour to 24 hours).
Click Cover Now. You immediately appear as on call for that schedule. The schedule header shows an amber "Override" badge with the expiry time.
End Now
If your situation changes before your override expires, you can cancel it early. The schedule immediately resumes its normal rotation.
On the web portal, the Cover Now button is replaced by an End Now button while you have an active override. Click it to cancel immediately.
On the mobile app, the same button swap occurs on the On-Call tab.
Owner Assignments
By default, clicking Cover Now sets you as the override. Organization owners have an additional Who dropdown that lets them assign coverage to any team member.
This is useful for managers who need to arrange cover on behalf of a colleague who isn't currently logged in — for example, assigning an engineer to cover a sick teammate's shift.
Escalation Policies
An escalation policy is a named chain of steps that fire in sequence when a page goes unacknowledged. Each step targets a specific person or group, and each step has its own delay timer.
Creating a policy
Go to Escalation Policies in the sidebar.
Enter a name (e.g. Engineering On-Call) and click Create.
Add steps using the Add Step form that appears below the policy.
Policy Steps
Each step in a policy has three settings:
| Setting | Description |
|---|---|
| Target | A single user or a group. When targeting a group, all current members are paged simultaneously. |
| Delay (minutes) | How long after the previous step fires before this step triggers. Step 1 always fires immediately (delay = 0 means "as soon as the page is sent"). A step 2 delay of 5 means "5 minutes after step 1 fired". |
| Repeat page | If enabled, PingParrot re-pages this step's target on the page's configured repeat interval. Useful for keeping pressure on the current step's target while waiting for the next step's delay to expire. |
Example Policy
A three-step policy for a web engineering team. Step 1 pages the on-call engineer immediately. If they don't respond in 5 minutes, the backup is paged. After another 10 minutes with no acknowledgement, the entire group is paged.
Policy: "Web Engineering On-Call"
Alex — On-Call Engineer
Fires immediatelyRepeat enabled · pages every 30s until acknowledged or step 2 fires
Sam — Backup Engineer
+5 minRepeat enabled · pages every 30s until acknowledged or step 3 fires
Engineering Group
+10 minBroadcast to all group members · 15 minutes total from page creation
If Alex acknowledges the page at any point — whether during step 1 or step 2 — the chain stops and Sam and the group are never paged. The clock resets if no one responds.
On-Call Delivery Mode
When creating a page, you can send it directly to whoever is currently on call on a schedule, without knowing in advance who that is.
Open Send a Page and fill in the subject, message, and priority.
Set Delivery Mode to On-Call. A schedule picker appears.
Select a schedule. The picker shows who is currently on call for each schedule in real time.
Send the page. PingParrot resolves the current on-call person (checking for overrides first) and delivers to them.
Attaching an Escalation Policy
Any page — regardless of delivery mode — can have an escalation policy attached to it. When the page is sent, the policy steps fire in sequence if the page goes unacknowledged.
On the Send a Page form, expand the Escalation Policy section. Select a policy from the dropdown — the steps preview automatically updates to show the chain.
Policies are independent of delivery mode. You can attach a policy to a direct page, a group broadcast, or an on-call schedule delivery.
Recommended combination
On-Call Delivery handles who gets paged first — whoever is currently on duty. Escalation Policy handles what happens next if they don't respond. Together they give you a fully automated response chain that adapts to whoever is on call that week.
Mobile App — On-Call Tab
The mobile app has a dedicated On-Call tab in the bottom navigation bar alongside the Pages feed.
The On-Call tab lists every schedule in your organization. For each schedule you can see:
- →Who is currently on call (their name in teal)
- →Whether an override is active (amber "Override" badge)
- →How long an active override lasts (e.g. "Until 3:00 PM")
- →Whether you are currently covering (shows your end time in a teal box)
Pull down to refresh the list at any time, or use the refresh button in the top right corner.
Mobile Overrides
You can set and end overrides directly from the mobile app — no need to open a browser.
Cover Now
On the On-Call tab, find the schedule you want to cover and tap Cover Now.
A duration picker appears with chip options: 1h, 2h, 4h, 8h, 12h, 24h. Tap your chosen duration.
Tap Cover Now to confirm. The schedule refreshes immediately — your name appears as on call across all devices.
End Now
While you have an active override, the Cover Now button changes to End Now. Tap it to cancel your override immediately. The scheduled rotation resumes on every device in your organization in real time.
Notification Priority Levels
The page priority you choose controls more than who gets notified first — it determines how aggressively the notification cuts through the recipient's device settings. PingParrot uses two tiers on iOS, backed by Apple Critical Alerts Entitlement.
Apple Critical Alerts — bypasses silent mode & DND
Pages at critical or high priority use Apple's Critical Alerts Entitlement, which Apple grants only after a review process. The notification plays at full volume even when the device is silenced or Do Not Disturb is on. The ringer switch and Focus modes are overridden entirely. This is the strongest delivery tier available on iOS.
Time-Sensitive — breaks through Focus filters
Pages at normal or low priority use iOS Time-Sensitive delivery. These notifications break through Focus modes (such as Sleep or Work Focus) but respect the ringer switch and your volume setting. If the device is silenced, the notification arrives visually and vibrates but does not play audio.
Calendar Subscribe
Every on-call schedule has a personal subscribe URL that exports the rotation as a live iCal feed. Add it to Google Calendar, Apple Calendar, Outlook, or any CalDAV client and it stays up to date automatically.
Finding the URL
Open On-Call → Schedules and expand any schedule. Directly above the Override panel you'll find a Subscribe section with the unique URL for that schedule. Click the copy button to copy it.
/ical/schedule/{token}
Public — no login required
Adding to Google Calendar
- 1. Open Google Calendar and click the + next to Other calendars.
- 2. Choose From URL.
- 3. Paste the subscribe URL and click Add calendar.
- 4. Google will poll the feed periodically. Events show who is on call for the next 6 months.
Adding to Apple Calendar
- 1. In Apple Calendar, choose File → New Calendar Subscription.
- 2. Paste the subscribe URL and click Subscribe.
- 3. Set Auto-refresh to Every hour for timely updates.
Maintenance Windows
Maintenance windows suppress pages during planned downtime so your team isn't flooded with alerts during a scheduled maintenance event or deployment.
How they work
- › An Org-wide window suppresses all group and broadcast pages for your entire organization.
- › A Group window suppresses pages targeted at one specific group only.
- › On-call delivery is never suppressed — escalation chains continue to fire even during a maintenance window. Direct (single-user) pages are also unaffected.
- › Suppressed pages are saved with status
suppressedand logged so you have a full audit trail.
Managing windows
Go to Maintenance in the sidebar (owners and managers only). Windows are grouped into Active, Upcoming, and Past. Create a window by providing a name, start time, end time, and scope. Delete a window at any time — if it was active, suppression ends immediately.