Shift swaps
Find someone to cover a shift when your plans change.
When you can no longer do a shift, On-Call Optimizer finds someone to take it.
You pick the shift. On-Call Optimizer asks the other members, one group at a time, and updates the schedule when someone accepts.
- You don’t arrange the swap or edit the schedule yourself.
- The members most likely to say yes are asked first. On-Call Optimizer uses what it already knows about each member, including their blocks, preferences and the balance of the schedule.
- A member can take the shift without giving one of theirs back. Anyone who has done more than their share is assigned fewer shifts later.
Requesting a shift swap
Here a member asks for cover for one of their shifts, then follows the request:
Steps in this screencast
- On your Home calendar, open one of your upcoming shifts.
- Click the swap icon to open Swap shift. In this demo we use the Swap full shift option and check who will be asked.
- Add a reason to help teammates understand the request, then click Request swap.
- Click View in the notification to see the current state of the request. Each teammate becomes a candidate who is asked in order.
- Open the Home calendar, or a schedule’s Calendar tab (see viewing shifts).
- Hover over or click the shift to open its shift popup.
- Click the swap icon beside the assignee. The Swap shift dialog opens.
- Under Choose how much of the shift to swap, keep Swap full shift, or pick the first 30 minutes, the first hour, or a custom period. See partial shifts.
- Check Swap candidates to notify. This lists the schedule members who will be asked. To also ask someone else from your organization, choose them in Add additional candidate….
- Optionally, enter a Reason for swap to help others decide whether they can help.
- Click Request swap.

The dialog closes and you stay on the calendar. A notification confirms the request, for example “Swap request created with 3 candidates. We’ll let you know when someone accepts.” Click View in the notification to open the request.

The shift now shows a swap indicator on the calendar, and its popup has a Swap requested box listing who is being asked, with a View link to the request.

Things to know:
- Any member of a schedule can request a swap for any shift on it, not just their own.
- The deadline for responses is 7 days after the request. If the shift ends before then, the deadline is the start of the shift. You can change it afterwards in the request’s Respond by field (see editing a request).
- If there is no one to ask, the notification says “Swap requested, but there’s no one to ask.”
Following your swap requests

What the panel lists depends on where you open it:
- On the Home calendar: requests Waiting for your response, then your own open requests under For your assigned shifts, then a collapsed Past requests list.
- On a schedule’s Calendar tab: every request under Open requests on that schedule, then its Past requests. Schedule admins can use this to review the swap history of a schedule.
Each row shows the shift, the request’s status and who it is waiting for.

Click a request to see its details:
- Its status badge (see the state reference) and how long is left before the deadline.
- The Reason given for the swap.
- The numbered list of Swap candidates, in the order they are asked, with each candidate’s progress, for example “Waiting for response” or “Not asked yet”.
- When it was requested.
Click the back arrow beside the title to return to the list.

Editing or cancelling a request
The member who made the request, the member assigned to the shift and the schedule’s admins can change or cancel it while it is still open.
- To change it, click Edit request. In Edit swap request you can change the Times to swap, the Respond by deadline and the Reason (optional), then click Save changes. For a partial request, Swap the full shift instead switches it back to the whole shift. When the shift is too close, the deadline can’t be changed any more.
- To cancel it, click Cancel request, then confirm. No one else is asked to take the shift.
Links in notifications
Swap emails and Slack messages (for example Respond now or View swap details) open On-Call Optimizer on the Home calendar with the swap request shown in the side panel. If you still need to respond, the panel opens straight to your response form.
Responding to a swap request
Here a swap candidate offers one of their own shifts in return:
Steps in this screencast
- When you’re asked to cover a shift, open Swap requests from your calendar’s toolbar.
- Under Waiting for your response, open the request.
- Choose Swap with one of your shifts, pick the shift to give in return, and click Send response.
- The swap is assigned and the updated calendar reflects the change in shifts and their history.
When you are asked to take a shift, you receive a notification by email or Slack. To respond:
- Open the request: follow the link in the notification, or open Swap requests on the Home calendar and choose a request under Waiting for your response. You can also click your own row in a request’s Swap candidates list.
- In Respond to swap request, choose one of the options:
- Take the shift: the shift is reassigned to you without giving up one of yours. If this leaves the schedule out of balance, On-Call Optimizer assigns you fewer shifts in later assignments.
- Swap with one of your shifts: choose one of your future shifts for the requester to take in return. The list only offers shifts the requester can do: shifts where they are blocked are greyed out with “is unavailable”, and shifts they prefer are marked “prefers this shift”. Use Earlier shifts and Later shifts to see more. This option isn’t available when you have no future shifts that match. For partial requests, see response options for a partial swap request.
- Ask me again as a last resort (defer): you might take the shift, but would rather someone else did. You are asked again if the request reaches its last chance. This option isn’t available once the request is in its last chance, or when you are the last candidate still to answer.
- Decline: you can’t take the shift.
- Optionally, add Notes for the requester.
- Click Send response.

A notification confirms your response, for example “You’re now on call for …” when you take the shift. The first member to take or swap the shift moves the request to accepted. After that, the form shows “This swap request doesn’t need a response any more.”
If the shift has already started, the form warns you: “This shift has started. If you take it, you’re on call straight away.”
On-Call Optimizer chooses Ask me again as a last resort for you automatically when your availability has a block during the requested shift. You aren’t notified about the request unless it reaches its last chance because everyone else declined or deferred. Your response stays “Deferred” after the swap completes.
Automatic swap requests
On-Call Optimizer can request a swap for you automatically when one of your availability blocks overlaps a shift you are assigned. This can happen when:
- You add a block to one of your calendars that clashes with a shift you are already assigned.
- A new assignment gives you a shift that clashes with an existing block.
When automatic swap requests are turned on, On-Call Optimizer then creates a swap request:
- If the block overlaps more than half of the shift, it requests a swap of the full shift.
- If the block overlaps up to half of the shift, it requests a partial swap of just the blocked period.
The request is then handled like any other swap request. You are notified that the request has been made for you.
When automatic swap requests are turned off, you instead receive an Assignment conflict notification listing the shifts that clash.
Back-to-back and overlapping blocks
On-Call Optimizer merges availability entries that overlap or follow on from one another into a single block before checking them against assigned shifts. One swap request is made per shift for the merged block, and the whole merged block is used to decide between a full shift swap and a partial swap.
A swap is never requested for time that an existing swap request for the shift already covers. Only the remaining time is requested.
Turning automatic swap requests on or off
Automatic swap requests are off for each member by default. To change this:
- Click your avatar at the top right of the application and choose Calendars.
- In the Swap requests section, turn Automatically create swap requests for shifts overlapping availability blocks on or off.
The change is saved straight away. See connecting calendars for more about the Calendars page.

Nested shifts
When you swap a shift that uses nesting, On-Call Optimizer uses the configuration of the referenced schedule to decide which shift to swap by default:
- If the referenced schedule has no destinations and is referenced by only one schedule, the source shift is changed and the reference is left as it is.
- If the referenced schedule has destinations, or is referenced by more than one schedule, the reference is replaced and the source shift is left as it is.
When the default is the source shift, the Swap shift dialog opens for the source shift, and lists the shift you clicked as a dependent shift. Whatever the default, you can always change which shift is swapped in the dialog.
To swap a dependent shift
When other shifts depend on the shift you are swapping, the bottom of the Swap shift dialog shows how many will also change.
- Click N dependent shifts will also change to expand the list, if it isn’t already open.
- Click Swap this shift only under the dependent shift you want to change instead. If you can’t view the schedule a dependent shift belongs to, it shows that schedule’s name without the link.
Swapping a dependent shift replaces the reference between that shift and the source shift.

To swap the source shift
When the shift you are swapping references another schedule, the details box warns “This shift references another schedule.” and asks “Are you sure you want to overwrite the reference?”, because the reference itself will be replaced if you continue.
- Click Swap schedule name shift instead to swap the source shift instead.
Swapping a source shift may also change other dependent shifts.

Partial shifts
You can swap part of a longer shift:
- When requesting a swap, choose Swap first 30 minutes, Swap first hour or Swap custom period in the Swap shift dialog. A custom period shows Start time and End time fields. The times must be within the shift.
- When editing a request, change the Times to swap, or click Swap the full shift instead.
Partial swap requests are processed in the same way as full ones. The only difference is which of their shifts responders can offer in return, described below.
Response options for a partial swap request
When responding to a partial swap request, the Swap with one of your shifts option lists the parts of your shifts that are equivalent to the requested part. Only some of your shifts may count as equivalent, using the rules below.
If none of your shifts are equivalent, the swap option is unavailable, but you can still Take the shift.
Identifying equivalent shifts
One of your shifts is equivalent for a partial swap if it starts at the same shift configuration day and time and has the same length as the shift that the partial swap was taken from.
If the partial swap is shorter than 24 hours, all weekdays count as the same day when matching the start day.
Examples
- A shift from Wednesday 9am to Thursday 9am matches a partial swap request for 9am-5pm Monday, taken from a shift covering 9am Monday to 9am Tuesday.
- A shift from Wednesday 9am to Thursday 9am does not match a partial swap request for 9am-5pm Monday, taken from a shift covering 9am Monday to 9am the following Monday (one week).
Swapping the current shift
You can also swap the shift that is happening now. This happens in two ways:
- The member on call requests a swap after the shift has started. The dialog then offers to swap the remaining shift, or the next 30 minutes or hour.
- A swap request has not been accepted by the time the shift starts.
When the current shift is being swapped, the request goes straight to its last chance and every candidate is asked to respond now. When a member accepts, the swap starts from the next minute, to allow time to update any configured destinations.
Request processing details
When you request a swap, On-Call Optimizer builds an ordered list of candidates. It ranks them using the same factors as the assignment algorithm, including availability, schedule balance and the time between each member’s shifts.
Each candidate has a set time to respond. This defaults to 8 working hours, but is shortened when needed so that every candidate can be asked before the deadline. It is never shortened below 4 working hours. Instead, more candidates are asked at the same time.
If a candidate hasn’t responded when their time is up, the next candidates are asked. Candidates who missed their time can still respond until the request is finished.
As soon as someone takes or swaps the shift, the request is accepted and no one else is asked. If everyone defers, or the deadline is close and some candidates haven’t responded, the request enters its last chance and candidates are asked again.
Swap request state reference
Each swap request moves through the states below. The table shows the badge each state has in the Swap requests panel.
| State | Badge | Meaning |
|---|---|---|
| Pending | Open (indigo) | Candidates are being asked in turn. |
| Last chance | Open (orange), Only one candidate or Current shift (red) | Everyone not yet declined is asked again at once. |
| Accepted | Accepted. Swap in progress… | Someone took or swapped the shift. The schedule is being updated. |
| Completed | Completed | The schedule has been updated. |
| Infeasible | All candidates declined | Everyone declined. |
| Expired | Expired before acceptance | The shift ended before anyone accepted it. |
| Cancelled | Cancelled | The request was cancelled. |
Requests waiting for your response, and your response form, also show your own badge: Response due, Response overdue, Response deferred, or, in the last chance, 2nd response due if you deferred. If you open the response form from a request’s Swap candidates list before you have been asked, it shows Not asked yet. You can still respond.
Pending
The request has been made and On-Call Optimizer is asking candidates in turn. Any candidate can respond, including those who haven’t been notified yet but have seen the request in the app.
Accepted
A candidate has taken or swapped the shift and On-Call Optimizer is updating the schedule. Once accepted, a request can’t be changed. Other candidates can’t respond, and the swap can only be undone by a new swap request made after this one is completed.
Completed
The shift (and the shift given in return, if any) has been reassigned on the schedule. The swap is final. Any further changes need another swap request or a custom assignment. On the schedule’s Timeline tab, a completed swap appears as a “Swapped shifts” entry, or “Taken shift” when someone took the shift without giving one back. The shifts’ popups say, for example, “Taken shift confirmed on date”.
Last chance
A request enters its last chance when any of these is true:
- Every candidate has responded, nobody accepted, and at least one candidate deferred.
- The deadline is 4 working hours away or less (in the schedule’s time zone), and some candidates haven’t responded or have deferred.
- The shift being swapped has already started.
Everyone who hasn’t declined is then notified again, told that nobody has taken the shift yet, and asked to respond. The badge is Only one candidate when just one candidate is left to answer, and Current shift once the shift has started.
Overdue
A candidate whose time to respond has passed shows Response overdue. In the last chance, so does every candidate asked in the first round who still hasn’t responded. On-Call Optimizer keeps reminding them, and those who deferred, until someone accepts or the request ends.
Infeasible / expired
The request ended without a swap:
- All candidates declined (infeasible): every candidate declined the shift.
- Expired before acceptance: the shift ended before anyone accepted it.
Cancelled
The member who made the request, the member assigned to the shift or a schedule admin cancelled it. No one else is asked. When someone else cancels it, the cancellation message says who.