Notifications — Slack & email
rooms tells the right people when something needs them — a policy to acknowledge, a document to review or approve, a contract to sign. Email works out of the box with zero setup. Connect Slack once, company-wide, and those same notices arrive as direct messages instead, with email as the automatic fallback. This is the setup page the compliance and deal-room workflows point to.
When notifications fire
Every notice targets the specific people involved — never a broadcast to everyone.
| Event | Who's notified | Triggered by |
|---|---|---|
| Review requested | The document's assigned reviewers | Submitting a controlled document for review |
| Approval requested | The document's assigned approvers | Submitting for approval |
| Approved / rejected / published | The version's author | Full approval reached, a rejection, or publishing |
| Distribution | Everyone in the audience (with the link, attestation statement, and deadline) + an optional channel summary | Distributing a published document |
| Acknowledgement reminder | Anyone still outstanding | Sending a reminder |
| Signature requested / executed | Each signing party; internal signers by DM, counterparties always by email | Deal-room send-for-signature and full execution |
Email — nothing to set up
Email is both the default and the fallback, delivered to each person's work address. It always works with no configuration. People outside your workspace — a signing counterparty, an external group member — always get email regardless of your Slack setup, because they aren't in your Slack workspace. If you never touch the settings below, everything above still reaches people, by email.
Connect Slack (admins, one time)
With Slack connected, review and approval requests, distribution notices, and deal-room signature requests arrive as direct messages to the right people, and a distribution can also post one summary to a channel. It's a single, company-wide setting — one Slack workspace per company, configured once, used by both compliance and deal rooms.
Step 1 · Create a Slack app
In the Slack workspace you want notices to come from, go to api.slack.com/apps → Create New App → From scratch. Give it a name your people will recognize (e.g. "Acme rooms") and pick the workspace.
Step 2 · Add the bot token scopes
Under OAuth & Permissions → Scopes → Bot Token Scopes, add these. Each maps to something rooms needs to do:
| Scope | Why it's needed | Required? |
|---|---|---|
users:read | Look up workspace users | Required |
users:read.email | Match a person's work email to their Slack account (how DMs find the right person) | Required |
chat:write | Send messages (DMs and channel posts) | Required |
im:write | Open a direct-message conversation with a person | Required |
chat:write.public | Post to a public channel the bot hasn't been invited to | Optional — only for channel posts |
/invite @your-app). For a public channel, either invite the bot or add chat:write.public. DMs need no channel setup at all.Step 3 · Install & copy the bot token
Click Install to Workspace and approve. Copy the Bot User OAuth Token — it starts with xoxb-. (Use the bot token, not the xoxp- user token.)
Step 4 · Paste it into rooms
In the web app, open People & access → Notifications. Paste the xoxb- token and, optionally, a default channel (like #compliance) for distribution summaries. Save. That's it — DMs start flowing on the next notification. The Compliance dashboard shows a status chip and links here.
How a person gets matched to their DM
When rooms needs to DM someone, it takes their work email (the identity they signed in with), looks up the matching Slack user by email, opens a direct-message conversation, and posts the message there. Two things follow from that:
- The same email must be on both sides — the person's rooms identity and their Slack account. If the emails differ, the lookup misses and they get the email version instead.
- If someone isn't in your Slack workspace at all (most external people), there's nothing to match, so they get email. Nothing is ever dropped — a failed or impossible DM silently falls back to email.
Which channel gets used, and delivery modes
People are always DM'd individually. On top of that, a distribution can post one summary to a channel — your saved default, or a specific channel you name for that campaign:
Under the hood each notice has a delivery mode: both (prefer Slack, fall back to email — the default), email only, slack only, or none (suppress). You rarely set this by hand; the sensible default is "Slack if we can reach you, email otherwise." Where a company hasn't set its own token, a single workspace-wide fallback token can be configured by an operator, but the normal path is the per-company setup above.
Troubleshooting
| Symptom | Likely cause & fix |
|---|---|
| DMs aren't arriving; everyone gets email | No token saved, or the token was revoked in Slack. Re-check People & access → Notifications and paste a fresh xoxb- token. |
| One person gets email while others get DMs | Their rooms work email doesn't match their Slack account email, or they're not in the workspace. Both are expected fallbacks — nothing is lost. |
| Channel summary doesn't post, but DMs work | The bot isn't in the channel. Invite it (/invite @your-app), or add chat:write.public for public channels. |
| Missing a scope error after install | Add the missing scope under OAuth & Permissions, then reinstall the app (scope changes require reinstalling) and paste the new token. |
| External counterparty didn't get a DM | By design — people outside your workspace always receive email, never a DM. |
