ilert Documentation
WebsiteAPI ReferenceLoginStart for Free
  • Getting Started
    • Core concepts
    • FAQ
      • Renaming of Incidents to Alerts
    • Import from PagerDuty
    • Import from StatusPage.io
  • Alerting
    • Dashboard
    • Alert sources
    • Notification settings
      • Mute notifications
    • Support hours
    • Maintenance windows
    • Heartbeat monitoring
      • Prometheus Heartbeat Example
      • CLI Heartbeat Examples
    • Deployment events
    • 🏛️Understanding event flows
    • ilert sender IDs, domains and IPs
      • SMS and voice alerts in China
  • On-call management & Escalations
    • Escalation policies
    • On-call schedules
      • My on-call shifts
      • Recurring schedules
      • Static schedules
    • Coverage requests
  • ChatOps
    • Overview
    • Integration for Slack
      • Receive and respond to alerts in Slack
      • Create a dedicated Slack channel for an existing alert
      • Create alerts in Slack
      • Look up who is on-call
    • Microsoft Teams Integration
      • Microsoft Teams Chat Integration
        • Microsoft Teams Integration via Incoming Webhook
        • Microsoft Teams Integration via Workflows
      • Microsoft Teams Meeting Integration
      • Create a channel for an existing alert in Microsoft Teams
      • Create alerts in Microsoft Teams
      • Look up who is on-call in Microsoft Teams
  • Incident comms & status pages
    • Getting started
    • Services
    • Incidents
    • Status pages
      • Public vs private status pages
      • Audience-specific status page
    • Metrics
      • Import metrics from Datadog
      • Import metrics from Prometheus
  • 🪄ilert AI
    • Introduction
    • Using ilert AI for efficient incident communication
    • Using ilert AI for post-mortem creation
    • Using ilert AI for schedule generation
    • Using ilert AI for alert grouping
    • Global Search enhanced by ilert AI
      • Bulk resolving similar alerts
  • Call Routing
    • Getting started with call routing
    • Routing calls using call flows
    • Call routing (legacy)
      • Routing calls based on support hours
      • Voicemail only mode
      • Managing call routing alerts
      • Adding webhooks and outbound chat messages
      • Uploading custom audio responses
  • User Administration
    • User roles and permissions
    • Team-based organisation
    • Single sign on
      • Setting up SSO with GSuite
      • Setting up SSO with Microsoft Azure Active Directory
      • Setting up SSO with Okta
      • Setting up SSO with Auth0
      • Auto provisioning users & teams
    • 🔐Two-factor authentication / MFA
  • Reports
    • Overview
    • Alerts
  • Mobile App
    • Getting started with ilert mobile app
    • Mobile app notification settings
    • Critical push notifications and DND overrides
      • iOS critical alerts configuration
      • Android Push Notification DND Configuration
    • On-call widget
  • INTEGRATIONS
    • Types of integrations
    • Inbound integrations
      • 4me Integration
      • Ansible Automation Platform AWX Integration
      • Amazon CloudWatch Integration
      • Amazon SNS Integration
        • Amazon SNS Inbound Integration
        • Amazon SNS Outbound via AWS Lambda
      • Azure Alerts Integration
        • Azure Activity Logs
        • Azure Metric
        • Azure Logs
        • Azure Service Health
        • Azure Sentinel
        • Budget Alert
      • Apica Integration
      • AppDynamics Integration
      • AppSignal Integration
      • AWS Budgets Integration
      • AWS Cloudtrail Integration
      • AWS DevOps Guru Integration
      • AWS GuardDuty Integration
      • AWS Personal Health Dashboard Integration
      • AWS Security Hub Integration
      • Autotask Inbound Integration
      • Auvik Integration
      • Catchpoint Integration
      • Checkly Integration
      • Checkmk Integration
        • Checkmk Integration (v 1.x)
        • Checkmk Integration (v 2.0+ )
      • Cisco Meraki Integration
      • Cisco ThousandEyes Integration
      • Cisco Webex
      • Cloudflare Integration
      • ClusterControl Integration
      • Connectwise Manage Integration
      • Cortex Integration
      • Cortex XSOAR (formerly Demisto) Integration
      • CrowdStrike Integration
      • Dash0 Integration
      • Datadog Integration
      • Dynatrace Integration
      • Elastic Watcher Integration
      • Email Inbound Integration
        • Email Key Extraction and Resolve Examples
        • Automatically resolve Alerts with Emails
      • FreshService Integration
      • Gatus Integration
      • GitHub Integration
        • GitHub Advanced Security Integration
        • GitHub Inbound Check Run (Actions) Integration
        • GitHub Inbound Issue Integration
        • GitHub advanced settings
      • GitLab Integration
      • Google Cloud Monitoring (formerly Stackdriver) Integration
      • Google Security Command Center
      • Grafana Integration Overview
        • Grafana Integration
        • Grafana Integration (v 9.x)
      • Graylog Integration
      • HaloITSM Integration
      • HaloPSA Integration
      • HashiCorp Consul
      • Healthchecks.io Integration
      • HetrixTools Integration
      • Honeybadger Integration
      • Honeycomb Integration
      • Hyperping Integration
      • CrowdStrike Falcon LogScale Integration
      • IBM Cloud Functions Integration
      • Icinga Integration
      • InfluxDB Integration
      • Instana Integration
      • IT-Conductor Integration
      • IXON Cloud Integration
      • Jira Inbound Integration
      • JumpCloud Integration
      • Kafka Integration
      • Kapacitor Integration
      • Kentix AlarmManager
      • Keep Integration
      • Kibana Integration
      • Kubernetes Integration
      • LibreNMS Integration
      • Lightstep Integration
      • Loki integration
      • Mezmo Integration
      • Microsoft SCOM
      • Mimir Integration
      • MongoDB Atlas Integration
      • MXToolBox Integration
      • MQTT Integration
      • Nagios Integration
      • N-central Integration
      • Netdata Integration
      • New Relic Integration
        • New Relic Integration (deprecated)
        • New Relic Workflow Integration
      • Oh Dear Integration
      • PandoraFMS Integration
      • Panther Integration
      • Particle Integration
      • Pingdom Integration
      • PostHog Integration
      • Postman Monitors Integration
      • Prometheus Integration
      • PRTG Network Monitor Integration
      • Prisma Cloud Integration
      • Push Notifications
      • RapidSpike Integration
      • Raygun Integration
      • Rollbar Integration
      • Salesforce Integration
      • Samsara Integration
      • Search Guard Integration
      • Sematext Integration
      • Sensu Integration
      • Sentry Integration
      • Server Density Integration
      • ServerGuard24 Integration
      • ServiceNow Inbound Integration
      • SignalFx Integration
      • Site24x7 Integration
      • SMS Integration
      • SolarWinds Integration
      • Splunk Integration
      • StatusCake Integration
      • StatusHub Integration
      • StatusPage Integration
      • Sumo Logic Integration
      • Sysdig Integration
      • TOPdesk Inbound Integration
      • TeamCity integration
      • Terraform Cloud / Terraform Enterprise
      • Tulip Integration
      • Twilio Alarms Integration
      • Twilio Errors Integration
      • Ubidots Integration
      • Uptime Kuma Integration
      • UptimeRobot Integration
      • VictoriaMetrics Integration
      • Zabbix Integration
        • Zabbix 4.4+ Integration
        • Zabbix 2.2 – 4.3 Integration
      • Zammad Inbound Integration
      • Zapier Inbound Integration
      • Zendesk Inbound Integration
    • Outbound integrations
      • Autotask Outbound Integration
      • DingTalk Integration
      • Discord Integration
      • Email Outbound Integration
      • Jira Outbound Integration
      • GitHub Outbound Issue Integration
      • Mattermost Integration
      • ServiceNow Outbound Integration
      • Telegram Integration
      • TOPdesk Outbound Integration
      • Webhook Integration
      • Zammad Outbound Integration
      • Zapier Outbound Integration
      • Zendesk Outbound Integration
      • Zoom Integration
        • Zoom Chat Integration
        • Zoom Meeting Integration
    • Deployment integrations
      • API deployment pipeline
      • Argo CD deployment pipeline
      • Github deployment pipeline
      • GitLab deployment pipeline
  • API
    • API Reference
    • API Version History
      • API user preference migration 2023
      • Discontinuation of Uptime Monitoring
    • Rate Limiting
    • Client Libraries
      • ilert Agent - ilagent
      • Go Client
      • Rust Client
      • Javascript / Node.js Client
    • Terraform
      • Importing ilert UI resources into Terraform state
    • 👩‍💻ICL - ilert condition language
    • ➿ITL - ilert template language
    • API endpoints / samples
      • Creating alerts through events
      • Importing public status page subscribers
    • 🔥Developing ilert Apps
      • Get started with ilert Apps
      • Understanding OAuth2
      • Developing a Backend App with OAuth2
      • Developing a web or native App with OAuth2 and PKCE
      • Token lifetimes, error codes, app verification, etc.
  • Contact us
  • ilert Release Notes
Powered by GitBook
LogoLogo

Product

  • Alerting & Notification
  • On-call Management & Escalations
  • Call Routing
  • Status Pages

Resources

  • Blog
  • Case Studies
  • Security
  • API Reference

Legal

  • Privacy policy
  • Imprint

Increase Your Uptime

  • Start for Free
  • Get a Demo

(c) 2011 - 2025 ilert GmbH

On this page
  • Create a recurring schedule
  • Step 1: Add users
  • Step 2: Set on-call rotation
  • Step 3: Set on-call coverage (optional)
  • Creating complex schedules with schedule layers
  • Schedule Examples
  • Create a recurring schedule with the help of AI
  • Editing existing recurring schedules

Was this helpful?

Edit on GitHub
  1. On-call management & Escalations
  2. On-call schedules

Recurring schedules

PreviousMy on-call shiftsNextStatic schedules

Last updated 21 days ago

Was this helpful?

Recurring schedules are a flexible way to create complex recurring schedules with minimal effort.

Create a recurring schedule

To create a recurring schedule, navigate to On-call schedules, click on Create new on-call schedule, and choose Create recurring schedule as the schedule type.

Step 1: Add users

Add the users from the dropdown menu. Users will rotate in the order in which they are listed. You can change the order via drag and drop and remove a user by clicking the x icon.

Step 2: Set on-call rotation

The on-call rotation determines when a shift should rotate from one user to the next user. Choose between daily and weekly rotations. For example, if you want your users to rotate every week, enter 1 week, if you want them to rotate bi-weekly, enter 2 weeks, and so on.

In the Starts on field, choose the start time of your schedule. Note that the start time will also determine the time when a user's on-call duty is handed over to the next user in the rotation.

Step 3: Set on-call coverage (optional)

By default, the on-call coverage is 24 hours a day, 7 days a week, i.e., users are on-call all the time. If you want to restrict times on-call, e.g., to outside working hours only, you can do so in this step.

Restricting your on-call coverage will result in gaps in your schedule where no one is on call. If an alert occurs during a time with no coverage in your schedule, then the alert will be escalated immediately to the next escalation level without waiting for the escalation timeout. If no one is on-call on the entire escalation policy, no one will be notified.

Creating complex schedules with schedule layers

A schedule layer is the configuration element that defines an on-call schedule or a segment thereof. A schedule layer consists of the following parameters:

  1. Users: an ordered list of users that will rotate in the on-call schedule. You can add a single user multiple times. E.g., if a user should take twice as many shifts as others, you can add them twice.

  2. Rotation: The amount of time (in days or weeks) after which on-call duty is rotated from one to the next.

  3. Starts on: the start date and time of the layer.

  4. Ends on (optional): An optional end date and time of the layer. A layer with no end date will schedule shifts indefinitely. Once an end date is set, no more shifts will be scheduled past the end date.

  5. Restrictions (optional): Optional times of day (e.g., between 9am – 6pm) or times of week (e.g., Fri 6pm – Mon 9am) to restrict times on-call.

  6. Name (optional): an optional name to help you better organize layers ****

You can combine layers to create more complex schedules by having multiple active layers at the same time.

Combining layers with overlapping shifts

Layers at the bottom take precedence over layers at the top. The example below illustrates the effect of this.

Let's look at a few examples to illustrate the power of schedule layers.

Schedule Examples

Follow-the-sun-schedule

A follow-the-sun schedule lets you have 24/7 coverage without putting the burden on one site and distributes on-call across multiple timezones.

Our final schedule configuration will look as follows:

Here are the steps to create this schedule:

  1. Pick a timezone for the schedule. The timezone applies to all layers and cannot be edited after creation. In the above example, we select "America/Los_Angeles"

  2. Create a layer for the US team:

    • Select the desired users, rotation, and start time. Note that the start time also denotes the handoff time between shifts. You can also pick a date in the past.

    • Restrict on-call to specific times of the day. In the above example, the US team is on-call every day from 9:00 AM - 9:00 PM

    • Optionally, enter a name for this layer by clicking on the pen icon in the header.

  3. Click on the Add schedule layer link to create another schedule layer for the EU team:

    • Select the desired users, rotation, and start time. Because shifts for the EU team start at 9:00 PM, we select 9:00 PM. Note that all times are local to the scheduled timezone "America/Los_Angeles", i.e. 9:00 PM in "America/Los_Angeles" is 6:00 AM in "Europe/Berlin" timezone.

    • Restrict on-call to specific times of the day. In the above example, the EU team is on-call every day from 9:00 PM - 9:00 AM.

    • Optionally enter a name for this layer.

Once you have created all the necessary layers, check the timeline at the bottom and verify that the final schedule is correct.

Schedule with different users on weekdays and weekends

In this example, we have one team that is on-call during weekdays and a separate team for the weekends. In our example, weekday shifts are between Monday 9:00 AM and Friday 5:00 PM, and weekend shifts start on Friday 5:00 PM until Monday 9:00 AM.

The final schedule configuration will look as follows:

The steps to create the schedule:

  1. Pick a timezone for the schedule. The timezone applies to all layers and cannot be edited after creation. In the above example, we select "Europe/Berlin"

  2. Create a layer for the users that are on-call on weekdays

    • Select the desired users, rotation, and start time. Note that the start time also denotes the handoff time between shifts. We select Monday 9:00 AM as the start time / shift handover-

    • Restrict on-call to specific times of the week and add "Mon 9:00 - Fri 17:00"

    • Optionally, enter a name for this layer by clicking on the pen icon in the header.

  3. Click on the Add schedule layer link to create another schedule layer for the weekend shifts:

    • Select the desired users, rotation, and start time. Because shifts o the weekend start on Fridays 5:00 PM, we select Fri 5:00 PM for the start time.

    • Restrict on-call to specific times of the week and add "Fri 17:00 - Mon 09:00."

    • Optionally enter a name for this layer.

Once you have created all the necessary layers, check the timeline at the bottom and verify that the final schedule is correct.

Create a recurring schedule with the help of AI

You can also use a conversational interface and set up a recurring schedule. To do so, after choosing "Create recurring schedules," find the button "Create schedule with ilert AI" at the top right corner. Share your scheduling requirements, including your team members' names, rotation frequency, and times. When ready, click "Generate."

Editing existing recurring schedules

Are you looking for overrides?

Whenever you need to make structural changes to the way you organize on-call, you will need to edit your schedule in ilert. Examples include when a new team member joins the on-call rotation, an existing team member leaves the rotation, you want to change the rotation (e.g. from weekly to bi-weekly), etc.

To edit an existing schedule ...

  1. Click On-call scheduling -> On-call schedules in the navigation bar.

  2. Select the desired schedule by clicking on the pen icon. Make sure it's a recurring schedule.

You can now make the changes to the layer directly (e.g. add another team member) and select the date for the changes to take effect:

Alternatively, instead of editing a layer directly, you can also end a layer and start a new layer. You might find this method clearer and easier to transition from one schedule configuration to another. In the example below, we will add a new member to an existing rotation.

  1. To end a layer, click on the stop icon in the top right of the layer and select an end date and time.

  2. To create a new layer, click on Add schedule layer and make the desired changes to your new schedule layer.

If you want to make a one-time change to a schedule, create an override instead. See for more info.

Using ilert AI for schedule generation
here
Anatomy of a schedule layer
In layer 1, John is on-call the entire week. In layer 2, Peter is on-call on weekends. Because layer 2 is lower than layer 1, the shifts from layer 2 take precedence and are included in the final schedule, which results in John not being on-call on the weekend.