Dutyroll

Holiday on-call schedule: share public holidays fairly

Public holidays are where an on-call rota creates the most resentment: the same person ends up covering Christmas two years running, or the team learns in December who has the 25th. A holiday schedule needs the rules written down before the calendar fills up.

Six rules for holiday cover

  1. Treat each holiday as its own shift. Keep a short list for the year (for example New Year, Easter, 25 December) and assign each one separately from the normal weekly order.
  2. Rotate the worst ones. Whoever covered the biggest holiday last year does not cover it this year. Write the history in the same sheet as the rota.
  3. Ask for swaps early. People trade holidays happily when they have weeks of notice; they refuse at two days' notice.
  4. Respect local holidays. A team in several countries has different dates. Assign each person the holidays they work, not the ones that fall on someone else's day off.
  5. Publish the full year in January, so plans for the holidays are made around the rota and not the other way round.
  6. Agree compensation separately. Extra pay or days off for holiday cover depend on your country and contract; check with HR, this page gives no advice on it.

A small example

HolidayThis yearNext year
New YearDanaLee
EasterLeeSam
25 DecemberSamPriya

Each holiday moves one place down the order every year, so everyone gets the best and the worst one in turn.

Build the normal rota first

Our free rotation schedule generator fills the year from your names, as a table, Slack text, calendar file (.ics) or Excel-ready CSV. Make the weekly order there, then overwrite the holiday weeks by hand using the list above.

Make the on-call rota

Use Skip when someone is away

In Dutyroll the weekly rotation posts who is on call and who is next, with Skip and Swap with next buttons. When the person due on a holiday week asks to be excused, one click on Skip moves the turn to the next person and everyone sees it in the channel:

On call this week: @sam. Next: @priya.
[Skip] [Swap with next]

Dutyroll does not know your public holiday calendar: it follows the order and your clicks, so the holiday list stays yours to keep.

Add to Slack Free for one rotation. Pro is $9/month per workspace.

Next, Slack asks you to sign in to your workspace, then shows Dutyroll's 4 permissions before you press Allow: add the /dutyroll command, post messages, post in public channels without an invite, and see the member list (names, time zones). Dutyroll never reads messages. Not in the Slack Marketplace yet: Slack lists apps only after 10 workspaces use them. Free plan: 1 rotation, no card.

Set it up in two minutes

  1. Add Dutyroll to Slack (the workspace admin may need to approve it).
  2. In the channel where the hand-over should appear, type /dutyroll new.
  3. Fill in the form: the duty's name, the people in order, the channel, weekly (pick the day), every weekday, every 2 weeks or monthly (pick the day of the month or the last Friday, say), and the time. The time is in your Slack time zone.
  4. Dutyroll posts an announcement now, and the hand-over at the time you chose: who is on duty and who is next, with Skip and Swap with next buttons.

What Dutyroll does not do

Related: weekend on-call schedule · on-call rotation in Slack · 12-month on-call schedule template

More guides