Dutyroll

Dutyroll docs: commands, setup and FAQ

Everything Dutyroll can do today, in one page: the /dutyroll commands, the setup form, how the schedule, Skip and Swap with next work, the Slack permissions it asks for, the plans, and fixes for the usual problems. Where something does not exist yet, this page says so.

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

Contents: Commands · Set up a rotation · Schedule · Skip, Swap, Post now, Edit, Pause, Mark away · Home tab · Not there yet · Permissions · Free and Pro · FAQ

Commands

CommandWhat it doesWho sees the answer
/dutyroll newOpens the New rotation form. Run it in the channel where the hand-over should appear and that channel is filled in for you.Only you (the form); the announcement goes to the chosen channel
/dutyroll whoLists the rotations you set up or are in, plus those that post in the channel where you type it: channel, who is on duty now and who is next.Only you
/dutyroll away @dana 12 Nov 14 NovMarks a person away for those days (both count; one date = one day; me works; dates like 12 Nov, Nov 12 or 2026-11-12, in your Slack time zone). A hand-over on those days goes to the next person who is not away. /dutyroll away list shows the saved away dates; remove one in the Home tab.Only you
/dutyroll helpShows the command list. Any other text after /dutyroll (or none) shows the same help.Only you
/dutyroll handle @oncall [rotation]Coming, not switched on yet. Keeps a Slack user group (such as @oncall) holding whoever is on duty, updated at every hand-over, Skip and Swap; /dutyroll handle off [rotation] stops it. It needs two more Slack permissions (user groups read/write), and Slack lets user groups be edited only on paid Slack plans.Only you

To edit, pause or resume a rotation, use its buttons in the Home tab; see the buttons.

Set up a rotation

  1. Add Dutyroll to Slack and press Allow. Your workspace admin may have to approve apps first.
  2. In the channel where the hand-over should appear, type /dutyroll new (or press New rotation in Dutyroll's Home tab).
  3. Fill in the form and press Create:
FieldWhat to enter
NameThe duty, up to 60 characters: On-call, Standup host, Code review.
People, in orderPick the people in the order they take turns (1 to 100 people). The first person you pick is on duty first.
Post in channelPublic or private channel for the posts. Private channel: run /invite @Dutyroll there first.
Hand overEvery week, Every weekday (Mon-Fri), Every 2 weeks or Every month; see the cadence table.
Weekly or every 2 weeks: onThe day of the hand-over (default Monday). Every 2 weeks starts on the first such day after you press Create, then every 14 days. For monthly, it is the day used by "The last <day>". Ignored for every weekday.
Monthly: onDay 1 to 31 of the month (29-31 fall on the last day of shorter months), or The last <day>: the last Friday, say, using the day picked above. Ignored for the other cadences.
AtThe time of the hand-over (default 09:00), in the time zone shown under the field: your own Slack time zone.
Extra line (optional)One line of your own, up to 300 characters, shown under who is on duty in every post: Runbook: https://wiki.example.com/oncall or Check the pager before standup. Links work: paste a URL, or write <https://example.com|Runbook> for a named link. @here, @channel and @everyone are removed, so the post never pings the whole channel. Leave it empty for no line; clear it in Edit to remove it.

When you press Create, Dutyroll posts an announcement in the channel: the rotation is set up, who is first and from when. Nobody is "on duty" until the first scheduled hand-over, which names the first person in the list.

How the schedule works

Hand overWhen it postsThe post saysExample
Every weekOnce a week, on the chosen dayThis week: @danaOn-call, Mondays 09:00
Every weekdayMonday to Friday, none at weekendsToday: @danaStandup host, 09:50
Every 2 weeksOn the chosen day every 14 days, counted from the first hand-over (the first such day after you press Create)These 2 weeks: @danaSprint release captain, every other Monday
Every monthOn a day of the month (1-31; the 29th-31st move to the last day of shorter months, so "31" means the month's last day) or on the last given weekday of the month (the last Friday, say)This month: @danaDependency updates on the 1st; retro host on the last Friday

Skip, Swap and away dates change who is on duty, never the dates: an every-2-weeks rotation stays on its 14-day rhythm. Editing only the time keeps that rhythm; picking a new day starts a new one from the first such day after you save.

Skip, Swap with next, Post now, Edit, Pause, Mark away

ButtonWhereWhat happens
SkipOn every hand-over postThe next person is on duty now. The skipped person stays in the list and comes up again in normal order. The post updates in place and says who skipped.
Swap with nextOn every hand-over postThe current and the next person trade places in the order: the next person takes this turn, the current person takes the following one. The post updates in place.
Post nowHome tabPosts who is on duty right now in the rotation's channel. It repeats the current person and never moves the rotation on.
EditHome tabOpens the rotation's form filled in: name, people in order, channel, how often (weekly, every weekday, every 2 weeks or monthly), day and time (in the rotation's own time zone). Press Save. Whoever is on duty stays on duty if they are still in the list; if you removed them, the rotation starts again with the first person, whose turn begins at the next hand-over. Dutyroll posts one line in the channel saying who changed what.
Pause / ResumeHome tabPause stops the hand-over posts and keeps the person on duty where they are; the Home tab and /dutyroll who mark it paused. Resume carries on from the next scheduled time; missed hand-overs are not posted afterwards. Each press posts one line in the channel.
DeleteHome tabDeletes the rotation after a confirm. This cannot be undone.
Mark awayHome tab (Away dates)Pick the person (you or anyone in your rotations), the first and the last day away, and press Save. It applies to every rotation they are in: a hand-over on those days skips them and says so in the post. Free and Pro alike.
RemoveHome tab, next to each away dateDeletes that away date at once (someone came back early). Past away dates disappear by themselves.

Anyone who can see the post can press Skip or Swap; anyone in the workspace can open the Home tab.

The Home tab

Open Dutyroll in Slack's sidebar (Apps) and choose Home. It shows a New rotation button, your plan (Free or Pro, with Upgrade to Pro or Manage billing), and each rotation you set up or are in, with its channel, who is on duty and next, its schedule and the next post time (or paused), with Post now, Edit, Pause (or Resume) and Delete. Below them, Away dates lists the upcoming away dates of the people in your rotations, each with Remove, and a Mark away button. With no rotations yet, it shows the 3 setup steps. Rotations you have no part in do not show, so a rotation in a private channel never reveals its name or people to anyone outside it. After a couple of scheduled posts it asks once, "How is Dutyroll working for you?"; you can answer there or press No thanks, and it does not ask again.

Not there yet (honestly)

Missing something you need? Email ops@tuper.app: requests decide what gets built next.

Slack permissions and why

PermissionWhy Dutyroll needs it
commandsAdds the /dutyroll command.
chat:writePosts the announcement and hand-overs, updates a post after Skip or Swap, and sends the one welcome message to the person who installed it.
chat:write.publicPosts in public channels without being invited first. Private channels still need /invite @Dutyroll.
users:readReads your Slack time zone when you open the New rotation form, so the hand-over runs at your local time (and for away dates, so "12 Nov" means your 12 Nov); for /dutyroll away @name, finds which person in your rotations you meant.
usergroups:read, usergroups:writeComing, only for the @oncall user group feature; not asked for today.

Dutyroll never reads messages, files or channel history. What it stores is in the privacy policy; uninstalling deletes your rotations and the Slack token.

Free and Pro

FreePro
Price$0$9/month per workspace, never per user
Rotations1Unlimited
People per rotationUp to 100Up to 100
Commands, schedule, Skip, Swap, away dates, Home tabAllAll

14-day Pro trial, no card. The first time a workspace installs Dutyroll it gets Pro for 14 days; the Home tab shows Pro trial: N days left and an Upgrade button. When the trial ends the workspace is on Free: the oldest rotation keeps running, the others are paused (kept, not deleted), each paused rotation's channel gets one message saying so, and the Home tab says why. Subscribing during the trial ends it and Pro simply continues. One trial per workspace: uninstalling and reinstalling does not start another.

On Free, creating a second rotation shows an Upgrade to Pro form instead. Upgrade from the Home tab; payment is by Polar (polar.sh), our merchant of record, which sends the receipt. Cancel any time with Manage billing. If Pro ends, the oldest rotation keeps running and the others are paused (kept, not deleted, marked paused in the Home tab) until you subscribe again. Full comparison with other apps: rotation apps compared.

FAQ

Dutyroll says it can't post in my channel

The channel is private, or Dutyroll was removed from it. Run /invite @Dutyroll in that channel, then press Post now in the Home tab to check. Dutyroll sends you a direct message when a post from the form or Post now fails, with this same fix.

The hand-over did not post at the time I expected

Can a rotation change every two weeks or once a month?

Yes. In the form (or Edit), set Hand over to Every 2 weeks and pick the day, or to Every month and pick a day of the month or "The last <day>" (for example the last Friday). The post then says "These 2 weeks" or "This month". Every 2 weeks counts 14 days from the first hand-over, so Skip and Swap never shift it. Free and Pro alike. For a shift length other than a day, a week, 2 weeks or a month, there is no option yet; tell us at ops@tuper.app.

Can I add a runbook link to the post?

Yes. Fill in Extra line in the form (or press Edit in the Home tab): up to 300 characters, for example Runbook: https://wiki.example.com/oncall or <https://wiki.example.com/oncall|Runbook> · check the pager first. It appears under who is on duty in every hand-over, in Post now and after Skip or Swap, and the Home tab shows it on the rotation. @here, @channel and @everyone are taken out, so the line never pings the whole channel. Empty the field and Save to remove it. Free and Pro alike.

Who can create, change or delete rotations?

Anyone in the workspace who can use the app: they can create a rotation, press Post now, Edit, Pause, Resume or Delete in the Home tab, and press Skip or Swap on a post. There are no admin-only settings yet. If that is a problem for your team, tell us at ops@tuper.app.

How do I add or remove a person?

Press Edit on the rotation in the Home tab, add or remove people (or change their order) and press Save. The person on duty stays on duty unless you removed them; then the rotation starts again with the first person.

How do I mark someone away or on holiday?

Press Mark away in the Home tab, pick the person and the first and last day, and press Save; or type /dutyroll away @dana 12 Nov 14 Nov. On those days the hand-over skips them, names the next person who is not away and says why ("@dana is away until 14 Nov, so it is @sam"). They stay in the rotation, and the rotation carries on in its normal order from the person who stood in. Away dates end by themselves; press Remove to end one early. It is free on both plans.

How do I pause a rotation for a holiday or a quiet week?

Press Pause on the rotation in the Home tab. Nothing is posted and nobody moves on until someone presses Resume; then the next hand-over comes at its normal time. To skip just one person, press Skip on the post instead.

Does someone get notified?

The hand-over post mentions the person on duty and the next one, so Slack notifies them as for any mention.

What happens when I uninstall?

Slack tells Dutyroll and we delete the installation, the token, every rotation and the post log for that workspace at once.

Who answers support?

Email support@tuper.app or ops@tuper.app. Tuper is run by an AI agent with a human owner; the agent answers and the owner sees what matters.

Free tool: Rotation schedule generator: type the names, pick weekly, weekdays, every 2 weeks or monthly, and get the schedule as a table, Slack text, a calendar file (.ics) or CSV.

More guides