Opsgenie shuts down April 2027 - migrate to Pagerly in one click
PagerlyPagerly
← All postsOn-Call Management

How to Create an On-Call Schedule in Google Sheets

Step-by-step guide to building an on-call schedule in Google Sheets, including formulas, conditional formatting, and when to move to a dedicated tool.

How to Create an On-Call Schedule in Google Sheets

On-call schedule template in Google Sheets

Google Sheets is where many engineering teams start when they need to track an on-call schedule. It is free, accessible to everyone with a Google Workspace account, and flexible enough to build a basic rotation tracker without any special tooling. For small teams with simple rotations and low incident volume, a Google Sheets schedule can work well enough to get started.

The limitations surface quickly as teams grow. A Google Sheets schedule requires someone to manually update it every rotation cycle. It does not send shift reminders. It does not route alerts to whoever is on-call. It does not escalate when the on-call engineer does not respond.

This guide covers how to build a functional on-call schedule in Google Sheets, the limitations you will hit as your team grows, and when it makes sense to move to a dedicated on-call scheduling tool.


What to Include in an On-Call Schedule Spreadsheet

  • Date range: The start and end dates for each on-call shift
  • On-call engineer (primary): Name and contact information
  • Secondary/backup engineer: Who covers if the primary is unreachable
  • Phone number: The mobile number for the on-call engineer
  • Notes: Any relevant context for the shift

Step-by-Step: Building an On-Call Schedule in Google Sheets

Step 1: Set Up the Basic Structure

Create a new Google Sheet with the following column headers in row 1: Start Date, End Date, Primary On-Call, Primary Phone Number, Secondary On-Call, Secondary Phone Number, Team or Service, Notes. Format date columns correctly and freeze the header row.

Step 2: Populate the Rotation

For a four-engineer weekly rotation, create one row per week. Use a formula in the end date column: =A2+6 to fill in the date six days after the start. Use data validation dropdowns for engineer names to prevent typos.

Step 3: Add Conditional Formatting to Highlight the Current Shift

Use conditional formatting with the custom formula: =AND($A2<=TODAY(),$B2>=TODAY()) to highlight today's active on-call row in green or yellow.

Step 4: Create a Named Range for Easy Lookup

Create a named range for your engineer list (Data, Named Ranges) called EngineerList on a separate Config tab.

Step 5: Add a Summary View for Current On-Call

Use an INDEX/MATCH array formula to show who is on-call right now:
=INDEX(C:C,MATCH(1,(A:A<=TODAY())*(B:B>=TODAY()),0))

Step 6: Share the Sheet with the Team

Share with all team members using view-only access. Only the schedule manager should have edit access. Add the sheet link to your team's Slack channel description.


Using Google Apps Script for Automated Reminders

A Google Apps Script can run on a daily trigger and send an email reminder to the upcoming on-call engineer before their shift begins. This adds meaningful value but requires JavaScript knowledge and breaks if the sheet structure changes.


Limitations of Google Sheets for On-Call Scheduling

  • No alert routing: The spreadsheet knows who is on-call, but your monitoring tools do not
  • Manual rotation updates: Someone has to update the sheet every rotation cycle
  • No escalation logic: If the primary engineer does not respond, there is no automatic mechanism to page the secondary
  • No shift swap workflow: Swaps are negotiated manually with no self-service process or audit trail
  • No integration with Slack or PagerDuty
  • No Google Calendar sync
  • Grows brittle with team size: A sheet tracking twenty engineers across five services becomes a maintenance burden

When to Move Beyond Google Sheets

  • Your team is receiving more than five to ten pages per week and manual coordination is creating delays
  • Engineers have missed shifts because the spreadsheet was not updated
  • Shift swaps require manager involvement because there is no self-service process
  • Your monitoring alerts are going to a shared channel rather than to the specific on-call engineer
  • You need separate rotations for multiple teams or services
  • Your team is distributed across time zones

The Automated Alternative: Pagerly

Pagerly on-call schedule automation in Slack replacing Google Sheets

Pagerly replaces the Google Sheets on-call schedule with a system that manages the rotation automatically, routes alerts to the right person, and handles escalation without any manual maintenance.

What Pagerly provides that Google Sheets cannot:

  • Rotation management entirely within Slack: create, view, and adjust the schedule without a spreadsheet or external dashboard
  • AI-powered rotation creation: describe your scheduling requirements and Pagerly generates the rotation automatically
  • Slack usergroup sync: @sre-on-call always reflects the current on-call engineer, updated automatically at every rotation change
  • Channel topic auto-updates showing the current on-call engineer in designated Slack channels
  • Automated shift reminders at 6 hours, 12 hours, and 1 day before each shift
  • Handover notifications at every rotation change with context for the incoming engineer
  • Self-service cover request system for shift swaps directly in Slack
  • Automatic escalation if the primary on-call engineer does not acknowledge within your defined window
  • Google Calendar integration so engineers see on-call shifts alongside their work schedule
  • Two-way sync with PagerDuty, OpsGenie, Jira, and Datadog
  • Per-team pricing so the cost stays flat as the team grows

Ready to replace your Google Sheets on-call schedule? Pagerly manages your rotation in Slack with automated reminders, usergroup sync, and escalation built in. Get started free