Slack
Overview
The Slack integration lets an ElevenLabs agent send and receive messages in Slack. Once connected, the agent replies in a thread when mentioned in a channel and maintains separate conversation context per thread.
Setup
The integration offers two ways to connect:
- OAuth — install the shared ElevenLabs Slack app into your workspace. A single Slack workspace maps to a single ElevenLabs connection. Fastest setup, no Slack app management required.
- Bring your own app — connect using a Slack app you create and own. Use this when you need the bot to appear under your brand or when your workspace policies require apps to be installed by an admin.
Option A — OAuth
The user installing the app must have permission to add apps to the target Slack workspace.
Open the integrations page
In the ElevenLabs dashboard, go to Agents > Integrations and select Slack.
Option B — Bring your own Slack app
Use this if you want the bot to show up under your own app name and icon, or if your workspace requires apps to be reviewed and installed by your admin.
Create a Slack app
Go to Slack API: Your Apps and click Create New App > From scratch. Name the app and pick the Slack workspace to install it into.
Add bot scopes
Open OAuth & Permissions and add the following Bot Token Scopes:
app_mentions:read, channels:history, channels:join, channels:manage, chat:write, groups:history, groups:write, reactions:write.
Then click Install to Workspace and approve. Copy the Bot User OAuth Token (starts with xoxb-).
Create the connection in ElevenLabs
In the ElevenLabs dashboard, go to Integrations, click the Add integration button and choose Slack. Pick the Bring your own app credential. Paste the bot token and signing secret, then save. ElevenLabs verifies the token against Slack and records your workspace id.
After the connection is created, the connection page shows two webhook URLs derived from your Slack app’s identity. The same Slack app, reconnected from the same ElevenLabs workspace, always produces the same URLs — so you can delete and recreate the connection without re-updating your Slack app’s configuration. Keep that page open for the next steps.
Configure Event Subscriptions
In your Slack app, open Event Subscriptions, enable events, and paste the Events URL from the ElevenLabs connection page into Request URL. Slack will verify the URL using the signing secret you provided.
Subscribe to the following bot events: app_mention, message.channels, message.groups.
A Slack workspace can only be connected once via the shared ElevenLabs OAuth app. Reinstalling
from a different ElevenLabs workspace returns a duplicate Slack workspace error — remove the
existing connection first. Bring-your-own-app connections are independent and do not conflict.
OAuth scopes
The ElevenLabs Slack app requests the following scopes:
Agent tools
When you add Slack tools to an agent, the following built-in tools are available:
Removing the connection
Removing the connection from the Integrations page uninstalls the ElevenLabs Slack app from the Slack workspace. After removal, the bot is no longer present in any channel.
For bring-your-own-app connections, ElevenLabs cannot uninstall an app it does not own — removing the connection only deletes the local mapping. To fully remove the bot from your Slack workspace, uninstall the app from your Slack admin settings.
Configure the trigger
The integration exposes a single trigger, SlackMessage. It fires when the bot sees a new user message in a configured channel.
Add a SlackMessage trigger
On your agent’s configuration page, add a new trigger and select SlackMessage.
Slack does not allow apps to auto-join private channels. For a private channel, run /invite @Eleven in that channel after saving the trigger so the bot can see messages.
Only one trigger is allowed per (Slack workspace, channel) pair. Edit the existing trigger
instead of creating a duplicate.
Talking to the bot in Slack
Once the trigger is active and the bot is in the channel, send a message that mentions the bot to start a conversation.
While the bot is generating a response, it adds a :eyes: reaction to the user’s triggering message and removes it once the reply is posted.
The bot ignores its own messages, messages authored by other bot users, edited messages (message_changed), and deleted messages (message_deleted). It handles message and app_mention events and works in both public and private channels.
Conversation model
The conversation ID is deterministic per (agent_id, channel_id, thread_ts):
- A new Slack thread maps to a new ElevenLabs conversation.
- Continuing the same thread continues the same conversation, including transcript history and dynamic variables.
When constructing chat history, the bot reads the Slack thread directly. Messages from other Slack users are treated as user turns and the bot’s own messages as agent turns. Mentions of the bot user (<@BOT_USER_ID>) are rewritten to @<agent_name> before the agent processes them.
Dynamic variables
When an agent runs from Slack, the following dynamic variables are available in prompts and tools:
See dynamic variables for how to reference these in prompts and tool calls.