Better Stack On-Call Management
Overview
Better Stack Uptime includes integrated on-call scheduling that determines who gets paged when a monitor fails. Schedules define rotation patterns, and notification/escalation policies define how and when responders are alerted (via phone, SMS, email, or push). For MSPs, on-call is commonly configured per customer team, with separate schedules for each client's SLA requirements.
Anti-triggers
- Rotations that live in PagerDuty or Rootly — "who is on call",
"escalation policy", and "paging" are shared vocabulary across all
three products, and nothing in the phrasing disambiguates them. If
the MSP's paging system is not Better Stack, use
pagerduty-oncall
or rootly-oncall.
- Technician shifts, dispatch, or booked appointments — an on-call
rotation is not a service schedule; that lives in the PSA
(
autotask, halopsa, connectwise-psa).
- Changing what a monitor checks rather than who it wakes — use
betterstack-monitors.
Key Concepts
Schedule Structure
Better Stack schedules define:
- Members - Responders in the rotation
- Rotation - Daily, weekly, or custom patterns
- Time zone - Critical for follow-the-sun setups
- Start date - When the rotation begins
Notification (Escalation) Policies
Policies define the alert cascade when a monitor goes down:
| Step |
Description |
| 1 |
Page the on-call schedule via phone, SMS, email, push |
| 2 (after timeout) |
Escalate to a secondary schedule or individual |
| 3 (after timeout) |
Escalate to team manager or broader group |
Better Stack calls these "notification policies" rather than "escalation policies", but they serve the same purpose.
Notification Methods
- Phone call - Voice call for critical alerts
- SMS - Text message notification
- Email - Email alert with incident details
- Push notification - Mobile app notification
- Slack/Teams - Integration-based notifications
Integration with Monitors
Monitors are linked to notification policies at creation time. When a monitor goes down:
- Better Stack creates an incident
- The monitor's notification policy fires
- On-call responders are paged in sequence
- If acknowledged, escalation stops
- If not acknowledged within the timeout, the next tier is paged
API Patterns
List On-Call Schedules
list_on_call_schedules
Parameters:
per_page - Results per page
page[after] - Pagination cursor
Get On-Call Schedule
get_on_call_schedule
Parameters:
Key fields:
attributes.name - Schedule name
attributes.time_zone - Time zone (e.g., "America/New_York")
attributes.current_shift - Current on-call user and shift end
attributes.next_shift - Upcoming on-call user and shift start
Create On-Call Schedule
create_on_call_schedule
Parameters:
name - Schedule name (required)
time_zone - Time zone for the schedule
List Notification Policies
list_schedule_policies
Parameters:
per_page - Results per page
Common Workflows
Find Who Is Currently On-Call
- Call
list_on_call_schedules to get all schedules
- Call
get_on_call_schedule for each relevant schedule
- Check the
current_shift field -- shows who is currently on-call and when their shift ends
- For MSP use: filter schedules by team to find the on-call person for a specific customer account
Review Escalation Policy Coverage
- Call
list_schedule_policies to see all notification policies
- For each policy, review the escalation steps:
- Tier 1: who gets paged first and via what channels
- Tier 2: escalation timeout and who is next
- Tier 3: final escalation (manager, team-wide broadcast)
- Verify no step has a deleted or empty schedule assignment
On-Call Handoff
Before transitioning between on-call shifts:
- Call
list_incidents with status=acknowledged to find any open, active incidents
- For each open incident, call
get_incident to get current status
- Check the responsible monitor with
get_monitor for the affected service
- Brief the incoming responder on: what monitor is down, what was tried, current status
- The incoming responder runs
acknowledge_incident if they are taking ownership
Maintenance Window Coordination
During planned maintenance:
- Use
pause_monitor to prevent false pages during the window
- Notify the on-call team via
create_status_page_incident for customer-facing work
- After maintenance,
resume_monitor on all paused monitors
- Verify no stale incidents remain open with
list_incidents
Error Handling
Schedule Not Found
Cause: Invalid schedule ID or schedule was deleted
Solution: List schedules to verify the correct ID
Invalid Schedule Configuration
Cause: Invalid time zone format or member IDs
Solution: Verify time zone format and confirm member IDs exist
No On-Call User
Cause: Schedule has no on-call user for the current time
Solution: Check schedule configuration and ensure rotations cover all time periods
Best Practices
- Use one schedule per customer team for clean MSP client mapping
- Set reasonable escalation timeouts: 5 minutes for Tier 1, 10 minutes for Tier 2
- Always have at least Tier 2 and Tier 3 -- single-tier policies cause missed incidents
- Review
current_shift before major changes to confirm the right person is on-call
- Coordinate monitor pause/resume with on-call awareness to avoid false pages
- Test escalation policies monthly with synthetic incidents
- Document on-call handoff procedures for consistency
- Configure multiple notification methods for critical monitors
Related Skills
1---2name: better-stack-on-call3description: Better Stack on-call: on-call calendars and rotations, escalation and notification policies, alert routing, and determining who is currently on call.4---56# Better Stack On-Call Management78## Overview910Better Stack Uptime includes integrated on-call scheduling that determines who gets paged when a monitor fails. Schedules define rotation patterns, and notification/escalation policies define how and when responders are alerted (via phone, SMS, email, or push). For MSPs, on-call is commonly configured per customer team, with separate schedules for each client's SLA requirements.1112## Anti-triggers1314- **Rotations that live in PagerDuty or Rootly** — "who is on call",15 "escalation policy", and "paging" are shared vocabulary across all16 three products, and nothing in the phrasing disambiguates them. If17 the MSP's paging system is not Better Stack, use `pagerduty-oncall`18 or `rootly-oncall`.19- **Technician shifts, dispatch, or booked appointments** — an on-call20 rotation is not a service schedule; that lives in the PSA21 (`autotask`, `halopsa`, `connectwise-psa`).22- **Changing what a monitor checks rather than who it wakes** — use23 `betterstack-monitors`.2425## Key Concepts2627### Schedule Structure2829Better Stack schedules define:30- **Members** - Responders in the rotation31- **Rotation** - Daily, weekly, or custom patterns32- **Time zone** - Critical for follow-the-sun setups33- **Start date** - When the rotation begins3435### Notification (Escalation) Policies3637Policies define the alert cascade when a monitor goes down:3839| Step | Description |40|------|-------------|41| 1 | Page the on-call schedule via phone, SMS, email, push |42| 2 (after timeout) | Escalate to a secondary schedule or individual |43| 3 (after timeout) | Escalate to team manager or broader group |4445Better Stack calls these "notification policies" rather than "escalation policies", but they serve the same purpose.4647### Notification Methods4849- **Phone call** - Voice call for critical alerts50- **SMS** - Text message notification51- **Email** - Email alert with incident details52- **Push notification** - Mobile app notification53- **Slack/Teams** - Integration-based notifications5455### Integration with Monitors5657Monitors are linked to notification policies at creation time. When a monitor goes down:581. Better Stack creates an incident592. The monitor's notification policy fires603. On-call responders are paged in sequence614. If acknowledged, escalation stops625. If not acknowledged within the timeout, the next tier is paged6364## API Patterns6566### List On-Call Schedules6768```69list_on_call_schedules70```7172Parameters:73- `per_page` - Results per page74- `page[after]` - Pagination cursor7576### Get On-Call Schedule7778```79get_on_call_schedule80```8182Parameters:83- `id` - The schedule ID8485**Key fields:**86- `attributes.name` - Schedule name87- `attributes.time_zone` - Time zone (e.g., "America/New_York")88- `attributes.current_shift` - Current on-call user and shift end89- `attributes.next_shift` - Upcoming on-call user and shift start9091### Create On-Call Schedule9293```94create_on_call_schedule95```9697Parameters:98- `name` - Schedule name (required)99- `time_zone` - Time zone for the schedule100101### List Notification Policies102103```104list_schedule_policies105```106107Parameters:108- `per_page` - Results per page109110## Common Workflows111112### Find Who Is Currently On-Call1131141. Call `list_on_call_schedules` to get all schedules1152. Call `get_on_call_schedule` for each relevant schedule1163. Check the `current_shift` field -- shows who is currently on-call and when their shift ends1174. For MSP use: filter schedules by team to find the on-call person for a specific customer account118119### Review Escalation Policy Coverage1201211. Call `list_schedule_policies` to see all notification policies1222. For each policy, review the escalation steps:123 - Tier 1: who gets paged first and via what channels124 - Tier 2: escalation timeout and who is next125 - Tier 3: final escalation (manager, team-wide broadcast)1263. Verify no step has a deleted or empty schedule assignment127128### On-Call Handoff129130Before transitioning between on-call shifts:1311321. Call `list_incidents` with `status=acknowledged` to find any open, active incidents1332. For each open incident, call `get_incident` to get current status1343. Check the responsible monitor with `get_monitor` for the affected service1354. Brief the incoming responder on: what monitor is down, what was tried, current status1365. The incoming responder runs `acknowledge_incident` if they are taking ownership137138### Maintenance Window Coordination139140During planned maintenance:1411421. Use `pause_monitor` to prevent false pages during the window1432. Notify the on-call team via `create_status_page_incident` for customer-facing work1443. After maintenance, `resume_monitor` on all paused monitors1454. Verify no stale incidents remain open with `list_incidents`146147## Error Handling148149### Schedule Not Found150151**Cause:** Invalid schedule ID or schedule was deleted152**Solution:** List schedules to verify the correct ID153154### Invalid Schedule Configuration155156**Cause:** Invalid time zone format or member IDs157**Solution:** Verify time zone format and confirm member IDs exist158159### No On-Call User160161**Cause:** Schedule has no on-call user for the current time162**Solution:** Check schedule configuration and ensure rotations cover all time periods163164## Best Practices165166- Use one schedule per customer team for clean MSP client mapping167- Set reasonable escalation timeouts: 5 minutes for Tier 1, 10 minutes for Tier 2168- Always have at least Tier 2 and Tier 3 -- single-tier policies cause missed incidents169- Review `current_shift` before major changes to confirm the right person is on-call170- Coordinate monitor pause/resume with on-call awareness to avoid false pages171- Test escalation policies monthly with synthetic incidents172- Document on-call handoff procedures for consistency173- Configure multiple notification methods for critical monitors174175## Related Skills176177- [api-patterns](../api-patterns/SKILL.md) - Pagination and error handling178- [monitors](../monitors/SKILL.md) - Monitors that trigger on-call alerts179- [incidents](../incidents/SKILL.md) - Incidents routed through escalation180- [status-pages](../status-pages/SKILL.md) - Status pages updated during incidents181- [logging](../logging/SKILL.md) - Log investigation during incidents