Skip to main content

Slack

The Slack integration monitors your workspace's members and guest accounts, bot users, installed applications, user groups, IDP-synced groups, and channel access — including externally shared channels. It can also execute remediation actions (deactivate users, remove channel/user-group access, reset sessions) when the corresponding admin token is configured — see Remediation actions.

Before starting

You will need:

  • Admin access to your Slack workspace (to create and install a Slack app).
  • For the optional app-inventory and remediation tier: a workspace admin (a Workspace Owner, if you want user deactivation) willing to grant a user token.
  • For the optional Enterprise Grid tier: org owner access to install an org-level app.

1. Create a Slack app

  1. Go to api.slack.com/apps and click Create New AppFrom scratch.
  2. Name it (e.g. SlashID Sync) and select your workspace.

2. Grant bot token scopes

Under OAuth & Permissions → Scopes → Bot Token Scopes, add:

ScopeUsed for
users:readMembers, guests, and bot users
users:read.emailEmail addresses (identity matching)
usergroups:readUser groups and their members
team:readWorkspace metadata
channels:readPublic channels and membership
groups:readPrivate channels the bot is invited to

3. Install the app and copy the bot token

  1. Under OAuth & Permissions, click Install to Workspace and authorize.
  2. Copy the Bot User OAuth Token (xoxb-...).
note

The bot only sees private channels it has been invited to. Invite it to private channels you want covered, or use the Enterprise Grid tier for full visibility.

4. (Optional) Admin user token for app inventory and remediations

The admin user token unlocks two capabilities on non-Grid plans:

  • App inventory: without Enterprise Grid, Slack has no API that lists all installed apps. SlashID reconstructs the installed-app inventory from the workspace's integration activity log, which requires the legacy admin scope.
  • Remediation actions: deactivating users and removing channel or user-group access are admin operations that the bot token cannot perform.

To create it:

  1. Open your Slack app at api.slack.com/apps (the same app from step 1 works — you don't need a second one).

  2. Under OAuth & Permissions → Scopes → User Token Scopes (not Bot Token Scopes), add:

    ScopeUsed for
    adminIntegration activity log (app inventory) and SCIM deactivation
    channels:writeRemoving users from public channels
    groups:writeRemoving users from private channels
    usergroups:readReading user-group membership before an update
    usergroups:writeRemoving users from user groups
  3. Have a workspace admin install (or reinstall) the app and authorize it while signed in as themselves. The token inherits the installing user's privileges, so:

    • a Workspace Admin or Owner is required for the admin scope to work;
    • a Workspace Owner on a Business+ plan is required for SCIM user deactivation.
  4. Under OAuth & Permissions, copy the User OAuth Token (xoxp-...) — it is shown alongside the bot token from step 3.

danger

This is a personal, high-privilege credential: it acts as that admin and stops working if they are deactivated or lose admin rights. Prefer the Enterprise Grid tier when available. Without either optional token, SlashID still discovers apps through their bot users — most modern apps — just not apps installed with user tokens only, and remediation actions will fail with an error asking for an admin token.

5. (Optional) Enterprise Grid org admin token

On Enterprise Grid, install the app on the organization (not a single workspace) — under User Token Scopes, add:

ScopeUsed for
admin.teams:readEnumerating all workspaces in the org
admin.users:readOrg-wide users and per-workspace membership
admin.apps:readThe authoritative installed/restricted app inventory
admin.conversations:readThe org-wide channel inventory, including private channels the bot never joined
adminSCIM reads: the IDP group inventory and identity-provider external IDs
admin.users:writeRemediations: removing users from a workspace and resetting sessions
channels:writeRemediations: removing users from public channels
groups:writeRemediations: removing users from private channels
usergroups:readRemediations: reading user-group membership before an update
usergroups:writeRemediations: removing users from user groups
danger

admin.conversations:read and the legacy admin scope are easy to miss, and omitting them fails quietly: the token authenticates, passes every other health check, and the org-wide channel inventory and IDP groups simply come back empty.

This unlocks:

  • The authoritative installed/restricted app inventory with granted scopes
  • All workspaces in the org and per-workspace membership
  • All channels org-wide (including private channels)
  • IDP groups via the SCIM API
  • All remediation actions, including the two Grid-only ones (workspace removal and session reset)

6. Create your Slack↔SlashID Integration

Go to the SlashID Console integrations page and create a Slack connection:

SlashID Console fieldDescriptionExample
Name of the connectionArbitrary name for this connectionSlack Production
Authoritative statusWhether Slack identities are the primary source of truth when reconciling identities across providersPrimary or Secondary
Workspace URLYour Slack workspace URLhttps://yourcompany.slack.com
Bot tokenThe bot token from step 3xoxb-...
Admin user token(Optional) The admin user token from step 4xoxp-...
Org admin token(Optional) The Enterprise Grid org-level token from step 5xoxp-...
note

The Bot token field is the only one that takes a xoxb-... token — Admin user token and Org admin token both take a xoxp-... token instead. Pasting the xoxp-... User OAuth Token into the Bot token field is a common mix-up; see Troubleshooting if the health check rejects the bot token.

What SlashID syncs

After the connection is created, SlashID periodically syncs:

  • Always (bot token): members and guests, bot users, user groups, workspace metadata, channels with membership, and apps discovered via their bot users.
  • With the admin user token: the full reconstructed app install inventory.
  • With the org admin token: all workspaces, org-wide users, the authoritative app inventory with scopes, all channels, and IDP groups.

The health check surfaces this as an advisory, not a failure: if neither optional token is configured, it flags that the app inventory is limited to bot-user-derived apps and that remediation actions are unavailable; on Enterprise Grid, it separately flags a missing org admin token.

Remediation actions and required scopes

Remediations never use the bot token. Each action uses the org admin token when configured, falling back to the admin user token — except the two Grid-only actions, which require the org admin token. An action requested without a suitable token fails with an error naming the missing token; it is never silently skipped.

ActionSlack APITokenRequired scope
Suspend / disable userSCIM PATCH /Users (active: false)Org admin token or admin user tokenadmin (token from a Workspace Owner; Business+ or Grid plan)
Remove user from channelconversations.kickOrg admin token or admin user tokenchannels:write (public), groups:write (private)
Remove user from user groupusergroups.users.list + usergroups.users.updateOrg admin token or admin user tokenusergroups:read, usergroups:write
Delete user (remove from workspace)admin.users.removeOrg admin token only (Grid)admin.users:write
Reset user sessionsadmin.users.session.resetOrg admin token only (Grid)admin.users:write
note

SCIM user deactivation requires a Business+ or Enterprise Grid plan — on Free and Pro plans Slack does not expose the SCIM API, so the suspend/disable action is unavailable. Removing a user from a user group fails if they are its last member, because Slack rejects empty user groups.

Troubleshooting

Error / symptomCauseFix
invalid_authToken revoked, wrong token, or app uninstalledReinstall the app and update the token in the SlashID Console
missing_scopeA required scope was not grantedThe error names the missing scope — add it under Bot Token Scopes and reinstall the app
not_allowed_token_typeThe token is valid but of the wrong class for this API method — granting scopes will not fix it. Most often the app-level token (xapp-..., from Basic Information) was pasted into the bot token field; a user token (xoxp-...) produces the same errorUse the Bot User OAuth Token (xoxb-...) from OAuth & Permissions as the bot token
Health check "Verify credentials" fails: bot token is wrong classA xoxp-... User OAuth Token was entered in the Bot token fieldUse the Bot User OAuth Token (xoxb-...); xoxp-... belongs in Admin user or Org admin token
Empty or partial app listNo optional token configuredExpected: only bot-user-derived apps appear. Add an optional token for fuller coverage
SCIM 403Org token lacks SCIM provisioning access, or the plan is not Enterprise GridVerify Grid plan and that the org-level app install includes provisioning access
Private channels missingBot not invited and no org admin tokenInvite the bot to the channels, or configure the Enterprise Grid tier
Remediation fails: "requires an admin user token"Neither optional token is configuredCreate the admin user token (step 4) or org admin token (step 5) and add it to the connection
Remediation fails: "requires the Enterprise Grid org admin token"Workspace removal / session reset attempted without an org tokenThese two actions are Grid-only — configure the org admin token (step 5)
Suspend/disable fails with SCIM 401/403Token lacks the admin scope, installer is not a Workspace Owner, or plan is below Business+Reinstall the app as a Workspace Owner with the admin user scope on a Business+ or Grid plan