Skip to content

Slack integration

The Slack integration brings four things into your workspace:

  • Per-user DMs for leave events, with Approve and Decline buttons on requests waiting for you to review.
  • A daily who’s-off digest posted to a channel you choose.
  • The /deckchair slash command for who’s-off lookups.
  • Optional status sync that sets your Slack status to “On leave” and turns on Do Not Disturb while approved leave is in progress.

An admin installs the bot once for the whole workspace.

  1. Open Settings → Integrations in Deckchair.
  2. Click Add to Slack.
  3. Approve the requested scopes in Slack.
  4. You’ll land back on Settings → Integrations with the workspace name and install date displayed.

That’s it for the workspace install — every team member can now connect their own account.

Each member binds their own Slack identity once.

  1. Open Preferences.
  2. In the Slack card, click Connect Slack. (Use Connect with status sync if you also want auto-status + DND.)
  3. Approve in Slack and you’ll land back on Preferences with Connected showing.

Until you connect, Deckchair will keep emailing you instead — connecting Slack doesn’t replace email automatically; it adds DMs as a third channel alongside email and push.

EventYou receive
Someone submits a leave request you approveDM with Approve / Decline buttons
Your request is approvedDM with the decision and any reviewer note
Your request is rejectedDM with the decision and any reviewer note
Someone cancels their approved leaveDM if you were the approver
An approver cancels or amends your leaveDM about the change
You have requests waiting too longReminder DM

Each digest is one Slack channel × one filter. You can run several — e.g. one per department, or a company-wide one plus a per-team one.

In Settings → Integrations, after Slack is installed:

  1. Click Add digest.
  2. Pick a channel. Invite the Deckchair bot to the channel first — Slack won’t let bots post to channels they aren’t a member of.
  3. Set the send time. It’s interpreted in your organisation’s timezone (Settings → Organisation), so all your digests use the same one — change it there if you need to.
  4. Optionally restrict by department.
  5. Choose whether to mention public holidays falling on the digest day.
  6. Save.

If nobody is on leave that day and there’s no public holiday to mention, the post is suppressed — no “no one is away” filler.

Type /deckchair followed by a date phrase. Examples that work:

  • /deckchair (today)
  • /deckchair tomorrow
  • /deckchair next week
  • /deckchair 13th to 17th feb
  • /deckchair 9th march
  • /deckchair help

Replies are ephemeral — only you see them, even when you typed the command in a public channel. Booking and balance lookups aren’t supported in this version.

When enabled in Preferences (and you connected with status-sync permissions), each approval schedules two events:

  • Leave start (your timezone): Slack status set to :palm_tree: On leave, DND turned on through end of leave.
  • Leave end: Status cleared, DND off.

Cancellations and amendments cancel or replace the scheduled events automatically.

  • Per user: Preferences → Slack → Disconnect Slack. Stops your DMs, keeps the workspace install intact.
  • Whole workspace: Settings → Integrations → Slack → Disconnect. Revokes the bot token, cascades through all linked users, removes scheduled status jobs. Run this if you’re rotating to a different Slack workspace, or you’re done with the integration.
  • DMs only ever go to the person the event is about (requester, approver). The bot never posts about leave to channels except the digest you configure.
  • The digest respects your filters but not (yet) leave-type privacy — every approved leave overlapping the day is included. If your team needs hidden leave types out of the digest, open an issue — it’s the obvious next step.
  • Approve/Decline button clicks are authorised through your Slack-Deckchair link: Slack tells us which Slack user clicked, we resolve to the matching Deckchair member, and apply the same role/department checks as the web app. A click from someone who isn’t allowed to review the request gets an ephemeral “you can’t act on this” reply with no state change.