---
title: "Import schedules | Grafana Cloud documentation"
description: "Import on-call schedules from calendar applications into Grafana IRM"
---

# Import schedules

You can import on-call schedules into Grafana IRM using iCal format to for flexible schedule management and streamline your setup process.

Imported schedules are read-only but remain fully functional, allowing you to manage schedules in your calendar application.

## Before you begin

To import an iCal schedule, ensure you have the necessary permissions in Grafana IRM and your calendar application.

### Required permissions

1. In Grafana IRM:
   
   - **Schedule Editor** role (or higher) to create and manage schedules
   - **Oncaller** role for team members to be added to rotations
2. In your calendar application:
   
   - Full edit access to the primary calendar
   - Permission to create and share calendars
   - Ability to modify calendar sharing settings

### Calendar requirements

For Grafana IRM to access your calendar and on-call events, ensure the calendar:

- Supports iCal format
- Is set to **Make available to public**
- Has **See all event details** enabled

## Set up your calendar

Create a dedicated calendar to manage your on-call coverage using calendar events.

### Create the primary calendar

1. Create a new calendar in your calendar application
2. Configure sharing settings:
   
   - Set visibility to **Make available to public**
   - Enable **See all event details**
3. Get the secret iCal URL:
   
   - For Google Calendar:
     
     1. Go to **Settings**
     2. Select **Settings for my calendars**
     3. Choose **Integrate calendar**
     4. Copy the Secret address in iCal format

### Create on-call events

Create events to represent on-call shifts. Each event maps to one on-call shift.

Event guidelines:

- Use the user’s Grafana username as the event title
- Set accurate start and end times
- Use recurrence settings for repeating shifts

#### Event format examples

Basic shift:

calendar ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```calendar
Title:     JohnDoe
Start:     9:00 AM
End:       5:00 PM
```

Recurring shift:

calendar ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```calendar
Title:      JaneSmith
Start:      9:00 AM
End:        5:00 PM
Recurrence: Every Monday
```

Multiple assignees:

calendar ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```calendar
Title:     JohnDoe, JaneSmith
Start:     9:00 AM
End:       5:00 PM
```

Priority level shift:

calendar ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```calendar
Title:     [L1] JohnDoe
Start:     9:00 AM
End:       5:00 PM
```

Tip: Use recurrence and event duplication to reduce manual event creation.

## Import to Grafana IRM

1. In Grafana IRM, navigate to **Schedules**
2. Click **+ New schedule**
3. Select **Import schedule from iCal URL**
4. Click **+ Create**
5. Configure the following:
   
   - Paste your secret iCal URL in the **Primary schedule iCal URL** field
   - Add override calendar URL (optional)
   - Enter schedule name
   - Review settings
6. Click **Create Schedule**

## Configure an override calendar (optional)

An override calendar allows for temporary schedule changes without altering the primary calendar. Override events take precedence over conflicting primary events.

### Set up override calendar

1. Create a new calendar in your calendar service
2. Configure sharing settings:
   
   - Set to **Make available to public**
   - Enable **See all event details**
3. Get the secret iCal URL
4. In Grafana IRM:
   
   - Navigate to **Schedules**
   - Select your primary calendar
   - Click **Edit**
   - Add the override calendar’s iCal URL
   - Click **Update**

### Override examples

Temporary replacement:

calendar ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```calendar
Title: JohnDoe
Date: Monday, May 1
Time: 9:00 AM - 5:00 PM
Override calendar:
Title: JaneSmith
Date: Monday, May 1
Time: 9:00 AM - 5:00 PM
```

Split shift override:

calendar ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```calendar
Primary calendar:
Title: JohnDoe
Date: Monday, May 1
Time: 9:00 AM - 5:00 PM
Override calendar:
Title: JaneSmith
Date: Monday, May 1
Time: 9:00 AM - 1:00 PM
Title: BobGrafana
Date: Monday, May 1
Time: 1:00 PM - 5:00 PM
```

## Manage overlapping shifts

To control priority in overlapping shifts, use level markers in event titles.

- Format: \[L0] to \[L9] (higher numbers take priority).
- Example:
  
  - \[L1] BobGrafana ← Primary (receives notifications)
  - \[L0] AliceGrafana ← Secondary (notifications suppressed)

If no level markers are specified, all overlapping users will receive notifications

## Troubleshooting

> Warning
> 
> **Known limitation with Google Calendar**
> 
> Google Calendar synchronization can take up to 24 hours to complete. If real-time calendar accuracy is critical, consider using web-based on-call schedules instead.

Common issues and solutions:

1. Users not appearing in schedule:
   
   - Verify event titles match Grafana usernames
   - Check calendar sharing settings
   - Ensure event details are publicly visible
2. Schedule not updating:
   
   - Allow up to 24 hours for Google Calendar sync
   - Verify iCal URL is correct and accessible
   - Check calendar permissions
3. Override not working:
   
   - Verify override calendar sharing settings
   - Check override calendar iCal URL
   - Ensure event times match exactly for overrides
