March 2026

Changes and updates released in March 2026

Automatic conflict detection for shift swaps

On-Call Optimizer now automatically detects and declines swap candidates assigned to another role in the schedule at the time of the swap. This prevents a team member from unwittingly double-booking themselves across multiple roles by accepting a swap request overlapping with an existing shift assignment.

Per-member block warnings in the balance table

The balance table now displays a warning icon next to any member whose upcoming availability information blocks more than 80% of the shifts in scope. Clicking the icon opens a detail view listing each block and its time range, making it easy for schedule owners to understand why shift distribution may be uneven for that member.

Broader availability keyword recognition

On-Call Optimizer now recognises “ooo”, “vacation”, and “leave” as availability block tags in calendar events, in addition to the existing “no-oncall” tags providing more flexible methods to indicate unavailability for on-call shifts.

Availability conflict notifications

To prevent availability blocks which conflict with existing shift assignments from going unnoticed, team members who have not enabled auto-swap functionality will now be notified (via email and/or Slack depending on their existing preferences) of the conflict at the time the conflicting block is imported to On-Call Optimizer.

On-Call Optimizer’s behaviour for team members who have auto-swap enabled (the recommended configuration) remains unchanged - new availability blocks conflicting with a previous assignment will continue to result in a swap request being automatically initiated at the time the availability block is imported into On-Call Optimizer.

Clearer assignment import records

When importing shifts from connected on-call products, On-Call Optimizer now stores only those shifts that led to a change in the confirmed assignments of the schedule in the imported assignment recorded in the history of the schedule. Previously the entire set of available shifts from the external product was stored in the import record, making it hard to see what the actual changes resulting from the import on the schedule were.

Bugfixes and minor changes

  • Prevented multiple organizations from connecting to the same Slack workspace. Previously, if two organizations connected to the same Slack team, only the first connection would receive incoming messages. On-Call Optimizer now detects this situation and shows a clear error message when a second organization attempts to connect.
  • Fixed schedule status messages showing the configured horizon days rather than the actual number of days until assigned shifts end.
  • Improved reliability of schedule deletion.
  • Improved error handling for Microsoft Outlook calendar connections.
  • Fixed an error that could occur when viewing the swap page due to a race condition in notification processing.
  • Improved swap candidate selection to only offer shifts of the same type and similar duration as the original shift.
  • Improved the schedule dependency view to include schedules that previously referenced a schedule and prevent its deletion due to shift references still present in the history.
  • Clarified export vs refresh action availability for schedule destinations.
  • Usability improvements to dialog loading and transition states.
  • Fixed a bug causing the Configuration tab to lose its active highlight if input validation failed.
  • Swap reminder notifications are now suppressed when the recipient is out of office, reducing unnecessary notification noise.
  • Swap response emails now set the reply-to address to the swap requester, making it easy to reply and coordinate directly.
  • ICS calendar feed event summaries no longer include the role prefix for schedules with only a single role, keeping summaries cleaner.
  • The Assignments tab now shows a status badge when there are pending assignments requiring attention, making it easier to spot schedules that need action.
  • Fixed calendar event positioning errors on daylight saving time transition days.
  • Fixed an error during calendar import when ICS events contained non-mailto organizer or attendee URIs.
  • Prevented schedules with larger availability windows from depending on schedules with smaller windows to avoid assignment failures due to not yet assigned shifts.
  • Added rate limiting to the ICS calendar feed endpoint to prevent excessive polling.

Last updated March 24, 2026