Slack
Connecting Slack lets your teams talk to an agent from a channel or a direct message, and lets agents post into Slack on their own — for example to publish a triage summary or reply in an incident thread.
Read Channels and bots first if you have not already: whitelists, mention behavior, and anonymous access work the same on every platform.
Before you start
- You need permission to create and install an app in your Slack workspace. In many workspaces this requires a Slack administrator to approve the installation.
- You need administrator rights in XTM One.
- The platform must be reachable from the internet over HTTPS, because Slack posts events to it.
Step 1: Create the Slack app
- Go to api.slack.com/apps and select
Create New App>From scratch. Give it a name and pick your workspace. - Open
OAuth & Permissionsand add every scope from the table below underBot Token Scopes. - Open
Agents & Assistantsand turn on theApp Agenttoggle. This is what allows the typing indicator while an agent is thinking. - Install the app to the workspace, then copy the
Bot User OAuth Token— it starts withxoxb-. - Open
Basic Informationand copy theSigning Secret.
Required scopes
| Scope | Why it is needed |
|---|---|
app_mentions:read |
Receive messages that @mention the bot |
assistant:write |
Show the typing indicator while the agent works |
channels:history |
Read messages in public channels the bot has joined |
channels:join |
Join public channels |
channels:read |
Read basic information about public channels |
chat:write |
Send messages as the bot |
groups:history |
Read messages in private channels the bot has joined |
groups:read |
Read basic information about those private channels |
im:history |
Read direct message history |
im:read |
Read basic direct message information |
im:write |
Start a direct message with someone |
users:read |
Read workspace profiles |
users:read.email |
Match Slack users to XTM One accounts by email |
Adding scopes after installation requires reinstalling the app.
Step 2: Connect the bot in XTM One
- Go to
Settings>Channels & Botsand clickConfigureon the Slack card. - Paste the bot token into
Bot Token / Access Token. - Paste the signing secret into
Slack signing secret for request verification. - Click
Save Channel. The card now showsConnectedand displays the webhook URL to use in the next step.
Save the signing secret before configuring events
Slack signs its verification request, and XTM One refuses unsigned traffic. If the signing secret is not stored yet, Slack's URL check fails with a 401. Always complete this step before step 3.
Step 3: Subscribe to events
- Back in the Slack app, open
Event Subscriptionsand enable events. - Set the
Request URLto the webhook URL shown on the Slack card — it ends with/api/channels/slack/events. Slack verifies it immediately. - Under
Subscribe to bot events, add the events you need:
| Event | What it delivers |
|---|---|
message.im |
Direct messages with the bot — always add this one |
app_mention |
Messages that @mention the bot in a channel |
message.channels |
Every message in the public channels the bot has joined |
The usual setup is message.im plus app_mention: the bot answers direct messages and mentions. For a dedicated support channel where the bot should answer everything, use message.im plus message.channels instead.
Never subscribe to both channel events
Subscribing to message.channels and app_mention together makes Slack fire two events for the same mention, and the bot answers twice.
Step 4: Invite the bot to channels
Type /invite @YourBotName in each channel where the bot should be active. The bot only sees channels it belongs to.
Step 5: Enable Slack on an agent
Open the agent, go to Configuration > Channels & Bots, and enable Slack:
- Turn on
Receiveso the agent answers incoming Slack messages, and optionally restrict it to specific channels. - Turn on
Publishif the agent should post to Slack on its own, and pick the channels it may post to. - Adjust
Allow anonymous,Allow private, andOnly mentionfor this agent, within what the bot allows.
Channel whitelists on the bot use Slack channel IDs. The picker lists the channels the bot can see, so you rarely need to type an ID by hand.
What the agent can do in Slack
When Publish is on, the agent gets Slack tools it can use during a conversation or an assignment: send a message, reply in a thread, read recent messages or a thread, list channels and users, look up a user, add or remove a reaction, pin or unpin a message, set a channel topic, and delete one of its own messages.
Replies are converted to Slack formatting automatically, so bold text and links render natively rather than as raw Markdown. Long answers are split into several messages instead of failing.
Best practices
- Use
Only when mentionedin busy team channels. The bot still follows a thread it has already joined for about 24 hours, so people do not have to mention it in every reply. - Prefer a dedicated agent for public channels, with a narrow set of tools and knowledge bases.
- Set the receive whitelist before inviting the bot to many channels, so a wide invitation does not become wide exposure.
- Tell users about
/resetto start a clean conversation and/stopto mute the bot in a thread that has moved on.
Troubleshooting
Slack rejects the request URL. The signing secret is missing or wrong in XTM One. Save it on the Slack card, then retry the URL verification.
The bot ignores channel messages. Check that it was invited to the channel, that the right event is subscribed, that the channel is in the receive whitelist, and that an agent has Slack Receive enabled.
Every mention gets two answers. Both message.channels and app_mention are subscribed. Remove one.
No typing indicator. The App Agent toggle is off or assistant:write is missing. Everything else keeps working.
The bot answers but cannot identify the user. The users:read and users:read.email scopes are required to match a Slack user to an account. Without them, senders are unknown and are only served if anonymous access is allowed.
A reply lands in the channel instead of the thread. Slack refuses thread replies on some message types; the platform falls back to posting in the channel rather than losing the answer.
Next step
Connect another platform, such as Microsoft Teams, or review how agents use channels in Agents.