About Slack
The Slack integration connects a single Slack workspace to a Serval workspace. It powers Slack help desk surfaces—including channel tickets, DMs, @mentions, App Home, the AI assistant, the Create a Ticket shortcut, and slash commands—delivers approval requests by DM, and syncs the Slack workspace’s users and user groups into Serval. A separate Slack Admin integration (Enterprise Grid org-admin, user tokens) is documented on its own page and is not covered here. Authentication: Slack-app OAuth v2 install with bot scopes - either Serval’s managed Slack app (one click, recommended) or your own white-label Slack app created from a Serval-generated manifest. Data sync: Scheduled background syncs ingest workspace users, and - once resource sync is on - user groups and their membership, on Serval’s standard sync schedule; a manual sync from the UI forces a full re-sync. Workflow calls to Slack run on demand through Serval’s proxy, and rate-limited responses are retried automatically with exponential backoff.What the Slack integration enables
Get your credentials
There are two ways to connect, and only one of them needs any setup on Slack’s side.- Serval's Slack app (recommended)
- Your own Slack app (white-label)
Connect in Serval
- Serval's Slack app (recommended)
- Your own Slack app (white-label)
Choose the recommended option
Authorize in Slack
Configure Slack as your help desk
After connecting, you land on the Slack app configuration page in Serval. To use Serval in a channel, first add it to the channel in Slack, then set that channel’s mode in Serval.Add Serval to a Slack channel
Set the channel mode in Serval
Connect additional channels
Live agent chat in Portuguese
For tickets with live agent chat enabled and the start button shown, the Portuguese button reads 🎧 Abrir um chat when an agent is available. Active chats show 🎧 Encerrar chat, even when the start button is hidden in the ServiceNow connection settings.Control tickets in Slack Home
Go to Settings > Notifications > Slack and use Show tickets in Slack Home to control whether open tickets in this Serval workspace appear in people’s Assigned to you and Requests you filed sections. Turning it off does not affect tickets in other Serval workspaces, approvals, quick actions, or Slack notification delivery. This setting also applies when another Serval workspace owns the Slack connection. If Slack Home is already open, revisit it to refresh the view.Channel configuration modes
See Channel Types for the shared reference covering ticket creation, agent responses, triage modes, and Slack/Teams availability. Set the mode for each connected channel on this integration’s Help Desk page.Hide workflow details from requesters
In Settings → Channels → Slack, turn on Hide workflow details to hide workflow names, workflow steps, and the View Workflow Run Request button in your workspace’s Slack ticket threads. Workflow progress uses a generic status instead. Approval waits still show a generic waiting status, and completed workflows use generic names in the ticket summary. Required forms remain available, including forms opened in a modal. The setting is off by default. It applies to new progress streams and subsequent workflow card updates. It does not erase historical messages or rewrite progress streams that were already running when you changed it. Approver notifications, access request cards, and workflow details in the Serval web app are unchanged. This setting applies to Slack; it does not change Microsoft Teams messages, or text explicitly sent by a workflow.Configure Workspace Inbox channels
A Workspace Inbox is a private channel where support agents triage tickets for your workspace within Slack. See Workspace inbox modes to choose which tickets appear. Tickets from DMs, help desk channels, and the web all appear as threads in one place, so agents can respond and collaborate without switching to the Serval web interface.Create a private Slack channel
it-inbox or finance-support-inbox) and invite only the support agents and managers who will handle tickets - not end users.Add Serval to the channel
Set the mode to Workspace Inbox
Resource sync
Serval supports resource sync for Slack user groups (Slack subteams - the@-mentionable groups in your workspace) and their membership. This is a separate capability from the help desk and from workflows: it does not sync channels or DMs, only user groups.
Open the Slack app settings
Enable resource sync
@handle so the help desk agent and workflows can reference it - for example, when a reply needs to mention a Slack user group, Serval renders it as a proper group mention in Slack.
Verifying the connection
After connecting, Serval runs five health checks:- Test Slack Connection - verifies the integration is connected and the OAuth token is valid. Success: “Successfully authenticated with Slack workspace [workspace name]”. Failure: “Unable to authenticate with Slack. Please verify the app is still installed and its OAuth token has not been revoked.”
- List Slack Users - checks Serval can read users from the workspace. Success: “Successfully listed Slack users (sample size: [number])”. Failure: “Unable to list Slack users. Please verify the app has the users:read scope and has not been removed from the workspace.”
- List Slack Channels - checks Serval can read public and private channels. Success: “Successfully listed Slack channels (sample size: [number])”. Failure: “Unable to list Slack channels. Please verify the app has the channels:read and groups:read scopes and has not been removed from the workspace.”
- List Slack Scopes - reports the OAuth scopes actually granted to the token. Success: “Successfully read Slack token scopes ([number] granted)”. Failure: “Unable to read Slack token scopes. Please verify the app is still installed and its OAuth token has not been revoked.”
- Send Approval Requests via Slack - checks the token has the
im:writescope needed to open DMs for approval requests. Success: “Slack app has the im:write scope required to send approval requests.” Failure: “Slack approval requests cannot be sent because the app is missing the im:write scope.” If the check itself can’t reach Slack, you’ll instead see: “Unable to verify Slack approval request permissions. Please verify the app is still installed and its OAuth token has not been revoked.”
Gotchas and troubleshooting
User sync fails with account_inactive
User sync fails with account_inactive
account_inactive when the account or workspace associated with the connection is inactive. Serval stops the failed sync without retrying the same credentials or removing existing users. Restore a valid Slack connection, then run a manual sync or wait for the next scheduled sync.Slack blocked the install with a scope error
Slack blocked the install with a scope error
Install blocked in workspaces that restrict Slack Connect
Install blocked in workspaces that restrict Slack Connect
conversations.connect scopes for shared channels. If your workspace restricts shared-channel invitations, deselect those scopes in the Bot Scopes picker before installing. Note that a non-default selection replaces the canonical scope list wholesale (extra scopes you add are layered on top).Slack says the app needs approval from an admin
Slack says the app needs approval from an admin
Can't add a second Slack integration for the same workspace
Can't add a second Slack integration for the same workspace
Managed option missing, or "Slack OAuth is not configured in this environment"
Managed option missing, or "Slack OAuth is not configured in this environment"
Enterprise Grid: install is workspace-scoped, and admin actions don't work
Enterprise Grid: install is workspace-scoped, and admin actions don't work
A reused or hand-edited manifest produces a broken app
A reused or hand-edited manifest produces a broken app
Which bot scopes does Serval request by default?
Which bot scopes does Serval request by default?
Need help? Contact support@serval.com for assistance with your Slack integration.
Configure existing helpdesk channels through the API
You can activate an existing Slack channel or change its helpdesk mode from an external API client or a Serval workflow. The channel must already appear in Add another channel in your Slack integration. Inviting the bot alone does not guarantee that Serval has discovered the channel.- Call
GET /v2/teams/{team_id}/connected-channels. You can filter byserviceInstanceIdto select the Slack integration instance. Disabled channels are included; direct messages and deleted connections are excluded. - Find the entry whose
serviceChannelIdmatches your Slack channel ID. - Call
PUT /v2/teams/{team_id}/connected-channels/{id}/mode, using the entry’s Servalid, with this body:
data. Repeating the same mode succeeds without another change. Use CONNECTED_SERVICE_MODE_DISABLED to disable the channel.
External clients use Serval API authentication. Scoped Serval API keys need channels:read for listing and channels:write for updates, plus access to the requested workspace. These are Serval scopes, not Slack OAuth scopes. A write-only key can update a connection whose ID you already know.
Serval workflows use their existing workspace-bound credentials. With serval imported from the Serval SDK, the API calls look like this:
CONNECTED_SERVICE_MODE_. The mode must be explicit. DM, SILENT_ASSIST, UNSPECIFIED, and unknown values cannot be set. Existing redirect messages are preserved. The API does not create connections, invite the bot, or configure direct messages, phone senders, or email intake.
