Documentation menu

Concepts

The terms used for an On-Call Optimizer schedule.

Schedule

Schedules are the core of On-Call Optimizer. The main information in a schedule is its list of shifts, which says which member(s) are on call at each point in time.

To create new shifts, each schedule also has configuration details. On-Call Optimizer uses them to regularly extend the list of shifts into the future, so the schedule always has the desired horizon of assigned shifts.

Each set of shifts added to a schedule is called an assignment, whether On-Call Optimizer runs it on a schedule or someone creates it. Together, a schedule’s assignments describe its past and future shifts.

Advanced configurations of On-Call Optimizer use relationships between schedules to achieve more complex scheduling outcomes than are possible within a single schedule.

Schedules can export their shifts to external systems, such as on-call products like PagerDuty or Opsgenie.

Configuration templates

A schedule’s configuration is kept in one or more configuration templates. One template is active at a time, and scheduled assignments use it.

Schedule balance

Keeping the shifts balanced between the members of a schedule is one of the main goals of On-Call Optimizer. A schedule is balanced when each member has a fair share of the shifts.

See the schedule balance page for how balance and fairness are calculated and reported.

Shift

An on-call shift is a continuous period with a start and end time, and one or more assignees. Start and end times are measured to the minute (no seconds) and always include a time zone.

A single shift can be at most one week long.

Each shift can have up to 2 assignees, called the primary and the secondary.

Shift configuration

Each configuration template contains a list of shift configurations, which describe how future shifts are assigned. A shift configuration is made up of the time a shift starts and who the assignee(s) should be.

On-Call Optimizer uses the shift configuration to create the actual shifts, with exact start and end times, when it extends the schedule.

Basic vs nested schedules

On-Call Optimizer can build almost any rotation from basic and nested schedules:

  • A basic schedule has shift configurations that don’t reference any other schedule as an assignee. Each shift is assigned either to a fixed member, or to a placeholder such as Best member (BEST_MEMBER in the configuration library). A placeholder means the constraint optimizing algorithm chooses the best assignee.
  • For more complicated rotations, a shift’s assignee can be another schedule. A schedule that refers to another schedule in this way is called a nested schedule.

On-Call Optimizer supports up to 3 levels of nesting.

Use nesting when a rotation has two or more groups of people, or two or more configurations, to manage. Common examples are rotating between two halves of a team on different sides of the world, or having only part of a team cover after hours.

The configuration library shows how these combinations cover many use-cases.

Assignment

An assignment is a set of shifts for a schedule. The shifts in an assignment never overlap. They usually cover one continuous block of time, but some configurations (e.g. business hours only) leave gaps with no shift.

On-Call Optimizer runs a scheduled assignment whenever the schedule needs more shifts assigned. Each assignment then goes through up to three stages: scheduled (it hasn’t run yet), draft (it has run, or someone created it, and is waiting to be confirmed) and confirmed (its shifts are part of the schedule). See scheduled, draft and confirmed assignments.

Planned shifts

Planned shifts are future shifts that aren’t confirmed yet: the shifts the next scheduled assignment will fill or, once it has run, the shifts of its draft. You can see them on the schedule’s calendar (the Planned shifts layer) and in the Scheduled assignment popup of the calendar’s sparkles marker. See seeing what’s next.

Assignment quality

On-Call Optimizer evaluates each assignment by how close it comes to meeting every goal and constraint. When a perfect assignment can’t be made, it reports penalties that explain what affected the quality of the assignment.

See assignment quality for how quality is evaluated and reported.

Exporting to on-call products

A schedule can export its assigned shifts to a schedule in an on-call product such as PagerDuty or Opsgenie, called a destination. On-Call Optimizer keeps each destination up to date. You can tell that a schedule exports to a destination by:

  • The product’s chip beside the schedule in the Schedules list.
  • The footer of the on-call card at the top of the schedule page, which shows the product and whether its exports are up to date.

Only shifts are exchanged, not settings. A schedule created by copying one from an on-call product takes its name, time zone, shifts and members from it once, when it is created. After that they are managed only in On-Call Optimizer and aren’t kept in sync with the product. See external synchronization.

See the schedule’s destinations for details, or follow the integrate an existing schedule guide for a walk-through of copying a schedule from an on-call product.

Horizon

The horizon of a schedule is counted in days. It describes how far ahead the schedule’s shifts are, or should be, assigned.

  • As a setting, the desired horizon (Horizon on a template’s Settings tab) says how far in advance shifts should be assigned. This is the minimum number of days of notice members get before a shift.
  • As a measure of a schedule, the current horizon is the number of days between a point in time (usually today) and the end of the last assigned shift.

The schedule lifecycle describes how On-Call Optimizer assigns new shifts when the current horizon is about to fall below the desired horizon.

Horizon is a property of a schedule, not of any member. It is counted in calendar days in the schedule’s time zone. A current horizon of zero means the schedule’s assigned shifts end today (or have already ended). A current horizon of 1 day means the last assigned shift ends tomorrow, and so on.

See horizon and window sizing for advice on choosing a horizon.

Schedule window

The schedule window (Window on a template’s Settings tab) is how many days of future shifts are assigned at once during the lifecycle of the schedule. It is also the default length of a new custom assignment.

By default, a custom assignment continues on from the last shift in the schedule. In the New assignment dialog you can change From to start it on a different date and For to change how many days it covers.

See horizon and window sizing for advice on choosing a window.

History window

The history window is how far back past shifts are included when calculating the balance of the schedule.

On-Call Optimizer uses a 6-month history window, counting back from the start of the first shift in the new assignment.

Availability information

The availability information for a schedule combines:

Last updated October 22, 2026