Alerts and on-call

On-call

An on-call schedule decides which team member is on call at each moment. A schedule has rotation layers that hand off between members, overrides for swaps and holidays, and cover requests when someone cannot do a shift. A Notify on-call step in an escalation path pages whoever is on call when the step runs. On-call schedules are part of the Team and Business plans.

Create a schedule

  1. In the dashboard, select Alerting → On-call.
  2. Select New schedule.
  3. Enter a Name, for example Platform on-call. The Description is optional.
  4. Select the Time zone. Handoffs and set hours use this time zone.
  5. Select Create schedule.

A new schedule has nobody on call. Add a rotation next.

Add a rotation

A rotation is a layer of the schedule. It hands off between its participants in order, at a fixed interval.

  1. Open the schedule.
  2. Select Add rotation.
  3. Enter a Name, for example Primary.
  4. Under Participants, add team members in the order of their turns.
  5. Under Hand off every, enter a number and select Hours, Days or Weeks.
  6. Enter the date of the First handoff and the Handoff time.
  7. Select Add rotation.

The first participant's turn starts at the first handoff. After each interval, the next participant takes over. After the last participant, the first one starts again.

SettingAPI fieldValues
Participantsparticipants1 to 50 team members, in order
Hand off everyshift_length, shift_unit1 to 720 hours, 1 to 90 days, or 1 to 12 weeks
First handoffstart_dateA date, YYYY-MM-DD, in the schedule's time zone
Handoff timehandoff_timeA time, HH:MM, in the schedule's time zone
Only cover set hoursrestrictionsOptional days and a time window, see below

days and weeks follow the calendar in the schedule's time zone. The handoff stays at the same clock time when daylight saving time starts or ends. hours are exact hours, so a 12-hour shift is always 12 hours long.

Cover set hours only

Select Only cover set hours to limit a rotation to some days and times, for example weekdays from 09:00 to 17:00. Outside these hours, the layers below take over, or nobody is on call. If Until is earlier than From, the window runs overnight.

Layers

A schedule can have more than one rotation. The dashboard shows them under Rotation layers. Where layers overlap, the top layer wins. Use this to combine a business-hours rotation on top of a round-the-clock rotation.

You can change the order of the layers. Spectate skips a participant who is no longer a member of the team.

Add an override

An override puts one member on call for a period, over all layers. Use it for swaps, sick days and holidays.

  1. Open the schedule.
  2. Select Override.
  3. Under Who covers, select the team member.
  4. Enter From and Until in the schedule's time zone.
  5. Optional: enter a Note, for example Swapping with Bob for the release.
  6. Select Add override.

An override is at most 90 days long. Where overrides overlap, the newest override wins. The Overrides panel shows upcoming and active overrides.

Ask for cover

A cover request asks the other members of a schedule to take a shift of yours. The first member to accept gets an override for the whole window. Nothing changes on the schedule until someone accepts.

  1. Select Alerting → On-call.
  2. Under Your on-call, select Request cover next to the shift.
  3. Change From and Until if you need cover for part of the shift only.
  4. Optional: enter a Note, for example the reason.
  5. Select Ask for cover.

In Slack, use /spectate cover. See cover requests in Slack.

Spectate asks every other member of the schedule's rotations. If the team connected Slack and Spectate finds the member in Slack, the member gets a direct message with Accept and Can't cover. Other members get an email. They answer under Your on-call, or on the schedule page under Waiting for cover.

These rules apply:

  • You must be on call for all of the window. A window that already started covers the rest of it.
  • A window is at most 90 days long. You can have one open request for the same time.
  • Any member of the team can accept, also a member that Spectate did not ask. You cannot accept your own request.
  • If someone accepts, Spectate tells you. If everyone says they cannot, Spectate tells you too, and the request stays open. A member who said no can still accept.
  • Send reminder asks again the members who did not answer, at most every 30 minutes.
  • If nobody accepts before the window ends, the request expires. You stay on call.
  • You can cancel your own request. Owners, managers and admins can cancel any request.

The public API and the MCP server do not have cover requests yet.

See who is on call

The schedule page shows On call now, the Next handoff and a Timeline of 1 week or 2 weeks. The timeline has a row for each layer, a row for overrides, and the Final schedule row. The Final schedule is who Spectate pages.

The On-call page lists all schedules with the person on call now. Your on-call shows your own shifts for the next 14 days.

With the public API, GET /v1/on-call-schedules/{schedule}/now returns who is on call, and GET /v1/on-call-schedules/{schedule}/timeline returns the shifts for a period.

Page the person on call

  1. Open an escalation path.
  2. Add a Notify on-call step.
  3. Under Schedule, select the on-call schedule.
  4. Select Save flow.

Spectate finds the person on call when the step runs, not when the alert fires. If nobody is on call, Spectate skips the step and runs the next step at once. The alert's Escalation panel shows who Spectate paged, or why it skipped the step.

The schedule page shows the escalation paths that use the schedule under Used by.

How Spectate pages a member

Spectate always sends an email to the member on call. If the team connected Slack, Spectate also sends the alert as a direct message in Slack, with Acknowledge and Resolve. Slack pages do not use credits. To turn them off, clear Also page me in Slack under On-call contact.

Spectate also sends an SMS or calls the member if these are true:

Each member sets this in Account → Profile → On-call contact, or under Your on-call on the On-call page:

Page me byWhat happensCredits
TextSpectate sends the alert by SMS. Acknowledge it in Spectate to stop the escalation.1
Voice callSpectate calls and reads the alert. Press 1 to acknowledge it as you and stop the escalation.2

When the alert resolves, Spectate sends the paged member an email only, and updates the Slack message. See Telegram and phone for the voice call.

Shifts in Slack

If the team connected Slack, Spectate sends each member a reminder before a shift, and a message when the shift starts and ends. The reminder has a Request cover button. Each member chooses with Shift messages in Slack under On-call contact:

ChoiceMessages
OffNone
When a shift starts and endsAt the start and at the end
Also 15 minutes beforeA reminder 15 minutes before, then at the start and at the end
Also 1 hour before (default)A reminder 1 hour before, then at the start and at the end
Also 1 day beforeA reminder 1 day before, then at the start and at the end

On the schedule page, the Slack panel has two more options:

  • Handover channel announces each handover in a Slack channel.
  • Keep an on-call user group creates a Slack user group, for example @platform-oncall. Spectate keeps it set to whoever is on call, or to everyone on the schedule.

See on-call in Slack.

Who can do what

ActionOwner, manager, adminMember
See schedulesYesYes
Create and change schedules and rotationsYesNo
Delete schedulesYesNo
Add an overrideFor any memberFor themselves only
Remove an overrideAny overrideOverrides for themselves, or that they added
Ask for cover of their own shiftYesYes
Accept a cover requestYes, not their ownYes, not their own
Cancel a cover requestAny requestTheir own requests
Change the schedule's Slack settingsYesNo

Plans

On-call schedules and Notify on-call steps are part of the Team and Business plans, and of the trial. The Starter plan does not include them. See plans and billing and pricing.