Connections
Slack
Camper installs a Slack app via OAuth and seals the bot token for your workspace. Supports standalone workspaces and Enterprise Grid org installs.
Prerequisites
- Camper owner or admin
- Ability to approve a Slack app install (workspace admin, or Channel Management+ on Grid)
- Directory already receiving people (recommended before linking)
Workspace vs Enterprise Grid
| Workspace | Enterprise Grid | |
|---|---|---|
| When | One Slack workspace (most orgs) | Enterprise Grid with multiple workspaces |
| Scope choice in Camper | One workspace | Enterprise Grid org |
| Role needed | Workspace admin can approve the app | Installer needs Channel Management (or higher) at the org |
| Channel APIs | Workspace conversations the bot can see | Org-wide admin conversations |
Pick One workspace unless you are on Grid and need org-wide channel management. The wrong type fails the health check with an install-type mismatch — reinstall and choose the other.
Messaging scopes (access-change DMs)
New installs request messaging scopes so Camper can DM people when their access changes (Notifications). Membership health does not require those scopes — older installs stay healthy for channels and user groups. To enable access DMs under Settings → General → Notifications, reinstall Slack so messaging scopes are granted.
Connect
- Open Connections → Slack → Set up.
- On Pick a scope, choose One workspace or Enterprise Grid org.
- Continue to Slack and approve the scopes.
- Camper seals the bot token, runs a health check, and opens Done with the workspace or Grid name.
Reinstall
Use Manage → Reinstall on Slack when:
- Scopes change (including messaging scopes for access DMs)
- The bot token was revoked
- Provision tasks fail with auth errors (tile shows error + reinstall hint)
Reinstall reuses the same connection row. Linked channels and user groups stay attached.
Disconnect
Disconnect clears the sealed token and marks the connection revoked. It does not delete Camper resource links. Uninstall the app in Slack admin if you also want it gone from Slack.
Private channels (required: invite the Camper bot)
The Camper bot must be a member of every private Slack channel you want Camper to manage. This is a Slack API rule, not a Camper preference. Without the bot in the channel:
| Capability | Without bot | With bot invited |
|---|---|---|
| Show up in Attach existing / resource search | Usually hidden (workspace install only lists private channels the bot is in) | Listed (often marked private) |
| Read membership (dry-run, drift) | Fails | Works |
| Add or remove people | Fails with a clear “invite the Camper bot” error | Works |
How to invite
- Open the private channel in Slack.
- Integrations → Add apps → Camper, or run
/invite @Camperin the channel. - In Camper, search again in Link resources (or re-open the panel). Wait a few seconds after the invite if the channel still does not appear.
| Install | What Slack returns for private channels | Extra requirements |
|---|---|---|
| One workspace | Only private channels the Camper bot is already in | Invite the bot into each private channel you manage |
| Enterprise Grid | Org channel search can include private when permitted | Installer needs Channel Management with Private channels on the org. Membership writes still need the bot in the channel on workspace installs; Grid admin APIs can invite without the bot joining first, but listing and observe still depend on visibility |
If a private channel still does not show after inviting the bot:
- Search by the exact channel name.
- Or paste the channel id (
C…/G…) in the attach form. - Confirm you invited Camper (this workspace’s install), not a different app.
- Refresh the picker again.
Public channels work differently: the bot can list many public channels without joining; Camper joins a public channel automatically on the first membership write. Private channels cannot be joined automatically — someone who is already in the channel must invite the bot.
Treat “bot in the private channel” as part of operator setup for every private channel link, the same way you would add any other integration.
Default channels for user groups
A Slack channel can be a default channel for a Slack user group. Camper adds current and future members of that group to the channel. People who later leave the group stay in the channel (add-only).
You can set this from Camper or from Slack.
From Camper
- Open the Slack channel or user group resource.
- Use Default for user groups (on a channel) or Default channels (on a user group).
- Pick the other resource on the same Slack connection and Link.
Unlink from the same panel. Existing members stay; new members of the group are no longer added.
The other resource must already exist in Camper (create or attach it first). In Slack you can skip that — the slash command attaches both if needed.
From Slack (/link-channel)
The Camper bot must be in the channel (invite it if the channel is private). Then:
/link-channel @engineering
Camper replies in the channel:
This channel has been linked to @engineering. Current and future members of @engineering will be automatically added to this channel.
Linked by @you
Unlink with:
/unlink-channel @engineering
If the channel is only linked to one group, /unlink-channel with no argument is enough.
Only Camper owners and admins can run these commands (matched by Slack email). Membership still reconciles in the background — the reply means the link is saved, not that every invite has finished.
Slash command setup (Camper Cloud)
The Slack app needs two slash commands pointing at the API:
| Command | Request URL |
|---|---|
/link-channel | https://api.getcamper.io/api/slack/commands (prod) or https://api.dev.getcamper.io/api/slack/commands (dev) |
/unlink-channel | same |
Usage hint: @usergroup. The API verifies requests with SLACK_SIGNING_SECRET (Slack app Signing Secret). Without that secret, the command URL returns 503; linking from the Camper UI still works.
Token lifecycle
| Situation | What happens |
|---|---|
| First install | Bot token sealed; works for membership |
| Token revoked / auth fails mid-reconcile | Connection → error; reinstall |
| Optional token rotation on the Slack app | Camper refreshes when a refresh token was issued |
Failed OAuth
Failed installs do not sit as “pending forever.” Status is error with an operator-facing reason. Fix connection reopens the install step.