On-Call
Configure on-call schedules so the right people get paged when incidents occur.
Overview
On-call management ensures someone is always responsible for responding to incidents. Runframe handles scheduling, rotations, timezones, and automatic paging so your team can focus on fixing issues instead of managing calendars.
What on-call provides
| Feature | Benefit |
|---|---|
| Automated rotations | No manual calendar updates needed |
| Timezone-aware scheduling | Correct handoffs across regions |
| Service-based routing | Incidents page the right on-call for each service |
| Override and swap support | Handle time off and shift trades |
| Calendar integration | View and sync with external calendars |
| Slack notifications | Know who’s on-call without leaving Slack |
Setting up on-call
Create a schedule
- Navigate to On-Call in the sidebar
- Click New Schedule
- Configure the schedule:
- Name: e.g., “Backend API,” “Database,” “Platform”
- Timezone: Choose the primary timezone for this schedule
- Services: Link services that this on-call covers
- Rotation: Define how often the on-call changes
- Add team members to the rotation
- Click Create Schedule
Link services to schedules
When an incident is created, Runframe automatically suggests the on-call engineer for affected services. Link services to schedules in the schedule settings or from the Services page.
One schedule, multiple services
A single on-call schedule can cover multiple related services. For example, a “Platform” schedule might cover API, Database, and Infrastructure.
Rotation types
Runframe supports flexible rotation patterns to match your team’s structure.
| Rotation type | Description | Best for |
|---|---|---|
| Daily | Rotates at the same time every day | Smaller teams, rapid rotation |
| Weekly | Rotates on the same day each week | Standard weekly on-call |
| Bi-weekly | Rotates every 2 weeks | Teams with longer shifts |
| Monthly | Rotates on the same date each month | Large teams, infrequent rotation |
| Custom | Specify your own cadence | Non-standard rotation needs |
Daily rotation example
Rotates every day at 9 AM Pacific:
| Time | Mon | Tue | Wed | Thu | Fri |
|---|---|---|---|---|---|
| 9 AM PT | Alice | Bob | Carol | Dave | Eve |
Weekly rotation example
Rotates every Monday at 9 AM Pacific:
| Week | On-Call |
|---|---|
| Jan 1 to 7 | Alice |
| Jan 8 to 14 | Bob |
| Jan 15 to 21 | Carol |
Setting rotation time
The rotation time defines when handoffs occur. Choose a time when:
- The outgoing on-call is available to transfer context
- The incoming on-call is awake and ready to respond
- Your team has overlap for handoff meetings
Mind timezones in handoffs
If your team spans timezones, choose a rotation time that works for everyone. Avoid 3 AM local handoffs.
Managing shifts
Viewing the calendar
The On-Call page displays a calendar view of upcoming shifts. You can:
- See who’s on-call now and next
- View the full rotation schedule
- Identify gaps or unassigned shifts
- Export to iCal for external calendar sync
Override a shift
When someone can’t cover their shift, create an override:
- Click on the shift in the calendar
- Click Add Override
- Select the replacement team member
- Optionally set a reason (helpful for postmortems)
Overrides are temporary and don’t affect the underlying rotation schedule.
Swap shifts
For permanent changes to who covers which shifts, use swaps:
- Click on the shift in the calendar
- Click Swap
- Select the team member to swap with
- Choose whether this is a one-time swap or recurring
Swaps update the rotation schedule going forward.
Time off
Mark time off directly in the calendar:
- Click Add Time Off
- Select the date range
- Runframe automatically identifies which shifts need coverage
- Create overrides for uncovered shifts
Paging behavior
When an incident requires paging, Runframe:
- Identifies the on-call engineer for affected services
- Sends notifications based on incident severity
- Tracks acknowledgment time
- Escalates if no acknowledgment within SLA
Notification channels by severity
| Severity | Primary | Secondary | Tertiary |
|---|---|---|---|
| P0 | Phone call | SMS | Slack DM |
| P1 | SMS | Slack DM | Phone call |
| P2 | Slack DM | SMS | — |
| P3 | Slack DM | — | — |
| P4 | Slack DM | — | — |
Configure notification preferences in user settings.
Page the on-call manually
From any Slack channel:
/inc page
Or for a specific service:
/inc page api-backend
Service targeting
If no service is specified, /inc page pages the on-call for services affected by the current incident (if in an incident channel) or the default service for your team.
On-Call responsibilities
Before your shift
- Review recent incidents – Understand what broke recently and how it was fixed
- Verify contact info – Ensure phone number and Slack notifications are current
- Check runbooks – Familiarize yourself with procedures for your services
- Test access – Confirm you can access dashboards, logs, and tools
During your shift
- Respond within SLA – Acknowledge incidents quickly
- Assess severity – Don’t over-escalate, but don’t under-estimate
- Document everything – Update incident status as you investigate
- Escalate when stuck – Use
/inc pageor pull in specialists - Communicate proactively – Regular updates manage expectations
Handoff best practices
When transferring to the next on-call:
- Sync in Slack – Schedule a 15 to 30 minute overlap if possible
- Document active incidents – Status, next steps, and blockers
- Share context – What’s fragile, what to watch, what’s in progress
- Transfer ownership – Update incident assignments to the new on-call
After your shift
- Debrief briefly – Share what went well and what didn’t
- Update runbooks – Add procedures you wish existed when you were paged
- Flag systemic issues – Create follow-up items for recurring problems
Slack integration
Runframe integrates with Slack to make on-call visible and accessible.
View on-call in Slack
See who’s on-call without leaving Slack:
/inc oncall
Displays the current on-call engineer for your default service or the current incident’s services.
On-call presence
Runframe can automatically update Slack status to show when you’re on-call. Enable in user settings.
Channel notifications
Post daily on-call assignments to a Slack channel:
- Channel: Choose where to post updates
- Time: When to post the daily reminder
- Format: Customize the message template
Timezones
Runframe handles timezones transparently:
- Schedule timezone: All rotation times are in the schedule’s timezone
- User timezone: Notifications respect the on-call engineer’s local time
- Handoff clarity: Calendar shows both local and schedule timezones
Distributed team considerations
For teams spanning multiple timezones, consider:
- Rotation times that work for most timezones
- Longer shifts to reduce handoff frequency
- Regional on-call (e.g., APAC, EMEA, Americas schedules)
Multiple on-call layers
For larger organizations, create layered on-call schedules:
| Layer | Schedule | Responsibility |
|---|---|---|
| Tier 1 | General rotation | Initial triage and investigation |
| Tier 2 | Service-specific | Escalation for complex issues |
| Tier 3 | Specialist/Manager | Escalation for critical or political issues |
Configure escalation policies to route between tiers automatically.
Analytics and insights
Track on-call metrics to improve your rotation:
| Metric | Definition | Goal |
|---|---|---|
| Incident frequency by person | How often each person is paged | Fair distribution |
| MTTA by person | Average acknowledgment time | Identify training needs |
| Escalation rate | How often Tier 1 escalates | Evaluate rotation difficulty |
| Off-hour incidents | Incidents outside business hours | Adjust shift timing |
View metrics in the Analytics section of the dashboard.
Need more?
- Slash Commands – Complete
/inccommand reference - Incidents – Incident lifecycle and severity
- Escalations – Configure escalation policies
- Web Dashboard – Full on-call management UI