Skip to main content

On-Call Schedules

On-call schedules define who is reachable at any given moment. Each schedule contains one or more layers — a list of technicians that rotate at a fixed interval.

Schedule Overview

A schedule is the foundation of your on-call coverage. It answers the question: "Who is on call right now?"

Every schedule has:

  • A timezone — all rotation calculations happen in this timezone
  • One or more layers — concurrent rotations (e.g., primary + backup)
  • An optional team assignment
  • An optional end date for temporary schedules

Schedule Layers

Each layer is an independent rotation within a schedule. Layers run simultaneously — if you have two layers, two technicians are on call at the same time from different user groups.

Layer FieldDescription
NameA label for this rotation (e.g., Primary, Backup, Weekend)
Rotation TypeDaily, Weekly, or Custom
Rotation LengthFor Custom type: hours per shift (e.g., 12 for 12-hour shifts)
Start TimeTime of day the rotation hands off (in schedule timezone)
UsersThe ordered list of technicians in this rotation
RestrictionOptional: limit this layer to specific hours or days

Rotation Types

Daily rotation — Each technician is on call for 24 hours before handing off to the next person in the list. Best for teams with 5+ members or high-volume environments.

Weekly rotation — Each technician covers a full week (168 hours). The most common pattern for MSPs with small teams. Provides continuity and reduces context switching.

Custom rotation — Specify any shift length in hours. Use this for 12-hour shifts, 48-hour rotations, or any other schedule that doesn't fit daily/weekly.

How Rotation Is Calculated

The current on-call user is calculated by:

  1. Taking the elapsed time since the schedule's start date
  2. Dividing by the rotation length in hours
  3. Taking the remainder modulo the number of users in the layer
  4. Selecting that index from the user list

For example, a weekly rotation with three users (Alice, Bob, Carol) that started on March 1:

  • March 1–7: Alice
  • March 8–14: Bob
  • March 15–21: Carol
  • March 22–28: Alice (repeats)

Layer Restrictions

Restrictions limit when a layer is active:

Time-of-day restriction — Layer is only active between specific hours. Use this to create a business-hours layer (e.g., 8am–6pm) alongside a 24/7 layer.

Day-of-week restriction — Layer is only active on specific days. Use this to create a weekday layer and a separate weekend layer with different rotations.

When a layer is outside its restriction window, it is inactive and does not contribute to on-call coverage for that period.

⚠️If a restriction causes a coverage gap (no layer is active during a window), the daily Coverage Gap Alert timer will detect it and email administrators.

Creating a Schedule

  1. Click Schedules in the left sidebar.
  2. Click New Schedule.
  3. Enter the schedule name and select the timezone.
  4. Optionally assign a team.
  5. Set the start date. Rotation calculations start from this date.
  6. Click Add Layer and configure at least one layer.
  7. Click Save.

Managing Schedules

Editing a Schedule

  1. Click the schedule name in the Schedules list.
  2. Click Edit in the schedule detail view.
  3. Modify any fields — including adding or removing layers.
  4. Click Save.
ℹ️Editing a schedule takes effect immediately. The current on-call technician may change when the rotation recalculates from the new parameters.

Viewing Current On-Call

  • The Schedules list shows the current on-call user for each schedule in a summary card.
  • The On-Call Now page shows every active schedule with current user, email, phone, and shift end time.

Schedule Templates

If you manage multiple clients with similar rotation patterns, save time with schedule templates:

  1. Open an existing schedule.
  2. Click Save as Template.
  3. Give the template a name.

To apply a template to a new schedule:

  1. Click New Schedule.
  2. Click Use Template and select your saved template.
  3. Adjust dates and user assignments as needed.
  4. Click Save.

Schedule Gaps Detection

The Coverage Gap Alert timer runs daily at 8am UTC and checks every active schedule for the next 7 days. If any schedule has a window with no active layer, administrators receive an email alert listing:

  • Schedule name
  • Gap start and end time
  • Suggested fix (add users to a layer or extend rotation coverage)
💡Common causes of gaps: layer restrictions that don't overlap, a layer with an empty user list, or a schedule end date that has passed.

Follow-the-Sun Scheduling

For distributed teams across time zones, create a follow-the-sun schedule:

  1. Create a single schedule.
  2. Add three layers — one per region (e.g., US, EU, APAC).
  3. Set a time-of-day restriction on each layer matching that region's business hours:
    • US layer: 09:00–18:00 America/New_York
    • EU layer: 09:00–18:00 Europe/London
    • APAC layer: 09:00–18:00 Asia/Tokyo
  4. Populate each layer with technicians in that region.
  5. The schedule's timezone should be UTC so restrictions translate consistently.

Each technician covers their regional hours; the schedule automatically hands off at each boundary.

Exporting Schedules

Schedule data is available via the On-Call API (GET /api/schedules) and through the Bridge API for external calendar integration. See Integrations for details on connecting to Google Calendar or Outlook.