Grafana Cloud

Create on-call schedules

Create and manage on-call schedules in Grafana IRM. Set up recurring rotations, manage temporary schedule changes, and maintain visibility of who’s on-call across your organization.

Before you begin

Ensure you have the proper permissions and setup before creating a schedule:

  • You need Admin or Editor permissions to create, edit, and delete schedules
  • Add team members to Grafana IRM before assigning them to schedules
  • Users with the Viewer role can’t be assigned to on-call shifts or receive alert notifications

For details on role permissions, refer to Manage access.

Create a schedule

  1. In your Grafana Cloud stack, navigate to Alerts and IRMIRMSchedules
  2. Click + New Schedule
  3. Click + Create to start setting up your on-call rotation

Configure basic settings

  1. Schedule name: Enter a descriptive name that clearly identifies the schedule’s purpose (for example, “Database Team Primary” or “APAC Support”)

  2. Assign to team: Select the team responsible for this schedule. This controls ownership and visibility only. It doesn’t add team members to the rotation or change who is on-call. Add rotation participants in the Add rotations section.

  3. Timezone: By default, schedules use UTC. Select a different timezone to ensure shifts automatically adjust for Daylight Saving Time and remain aligned with your defined timezone. If your timezone was previously set via API, you may need to reset it to UTC, save, and then update it to your preferred timezone.

  4. Notification settings: Control how and when team members receive schedule-related notifications. Configure the following options:

    • Slack channel: Select a Slack channel where schedule notifications and calendar parsing errors are posted
    • Slack user group: Choose a Slack user group to automatically update with current on-call members, enabling @mentions. All schedule members must connect their Slack notification channel in their IRM profile for this to work. Refer to Notification channels for details.
    • Shift notifications: Set when team members receive reminders about their scheduled shifts
    • Current shift: Specify how to notify a user when their on-call shift begins
    • Next shift: Specify how to notify the user whose shift is the next one scheduled
    • No one on-call: Define notification behavior when no one is scheduled for a shift
    • Slack reports: Enable or disable weekly Slack reports about gaps and shifts with missing users

Add rotations

Rotations determine when team members are on-call by defining a pattern to generate the on-call shifts. To configure rotations:

  1. Click Add and select a rotation option from the dropdown menu

  2. Configure the following settings:

    • Start date and time: Set when the rotation begins
    • End date and time (optional): Set when the rotation ends. No more shifts are assigned after this date, but any active shift at that point continues until its scheduled end. The first shift may also be shortened to align with the end date.
    • Rotation frequency: Define how often the rotation pattern is applied (daily, weekly, or custom interval)
    • Select days: Choose active days for the rotation. Enabling this limits shifts to 24 hours.
    • Shift length: Enter the duration for each on-call shift (for example, 8 hours, 12 hours, 1 day). Must be equal to or shorter than the rotation frequency period.
  3. Add team members to the rotation. Each user is added to a separate recurrence group, and the rotation pattern cycles through these groups. You can group multiple users in the same recurrence group to have them on-call simultaneously. When an alert is routed to the current on-call user, all users in that recurrence group are notified.

  4. Click Create to save the rotation

To achieve the desired scheduling outcome, you can combine multiple rotations and layers. Rotations within the same layer share the on-call time, whereas on-call time from higher layers takes precedence and overrides shifts in lower layers.

For common rotation configurations, refer to the rotation setup examples.

Edit rotations

When editing a rotation in an existing schedule, choose between Update and Save as new. These options determine how changes are applied and whether rotation history is preserved.

To edit a rotation:

  1. From the on-call schedule, select the existing rotation you want to edit.
  2. A rotation configuration window opens. Make the necessary changes to participants, shift length, or start time.
  3. Select Update or Save as new to apply your changes.
    • Update: Applies your changes directly to the existing rotation. Use this if you want to update the entire rotation: past, present, and future.
    • Save as new: Ends the current rotation and starts a new one at the specified time (or now, if unchanged). This keeps past data intact while applying changes moving forward.

Use Save as new to:

  • Change shift details without overwriting history
  • Version a rotation over time
  • Duplicate a rotation as a starting point

If your organization has enabled Disable schedule updates in the past, only Save as new is available when editing rotations.

Review and validate

Before finalizing your schedule:

  1. Review the calendar view to ensure coverage looks correct
  2. Check for any gaps in coverage or scheduling conflicts
  3. Verify rotation patterns work as expected
  4. Test how the schedule appears in different time zones

Export a schedule to your calendar app

You can subscribe to any on-call schedule using a secret iCal URL. This lets you view your on-call shifts alongside your other events in Google Calendar, Apple Calendar, Outlook, or any other calendar app that supports iCal subscriptions.

Exporting a schedule requires the Schedules Editor role or higher. Refer to Roles and permissions for details.

IRM provides two types of export URLs:

  • Schedule iCal URL: Shows all shifts for a specific schedule, including all users. Use this to display full team coverage in a shared calendar.
  • Personal iCal URL: Shows only your own shifts across all schedules you participate in. Use this to add your on-call time to your personal calendar.

The iCal URL is secret. Anyone with it can view the schedule, so treat it like a password. If it’s compromised, regenerate it from the same location to invalidate the old one.

Get the schedule iCal URL

  1. Navigate to Alerts and IRMIRMSchedules.
  2. Open the schedule you want to export.
  3. Click the more options menu () next to the schedule name.
  4. Select Export schedule.
  5. Copy the generated iCal URL.
  6. Add the URL to your calendar app as a new subscribed calendar.

Get your personal iCal URL

  1. Navigate to your Grafana user profile.
  2. Select the IRM tab.
  3. Locate the On-call schedule export section.
  4. Copy the iCal URL.
  5. Add the URL to your calendar app as a new subscribed calendar.

Warning

The exported iCal file is for calendar subscription only. Don’t use it as a primary schedule URL or override calendar URL when importing schedules into IRM. The export format includes the schedule name as a prefix in each event title (for example, Database Primary: alice@example.com), which IRM can’t parse as a username during import. To set up an override calendar, create a dedicated iCal source with plain usernames as event titles. Refer to Import schedules for the correct format.

Next steps

Schedules work together with escalation chains and notification rules to route alerts and notify the right team members at the right time. Now that your on-call schedule is set up, take these steps to ensure alerts are automatically routed and escalated: