Slack

Connect a Slack workspace to ElevenLabs Agents to chat with an agent in channels and threads

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.

1

Open the integrations page

In the ElevenLabs dashboard, go to Agents > Integrations and select Slack.

2

Click Connect

Pick the OAuth credential and click Connect. You are redirected to Slack to choose which workspace to install the ElevenLabs app into and to approve the requested scopes.

3

Complete the redirect

After approval, Slack redirects you back to ElevenLabs and the connection is created. The Slack workspace ID is recorded automatically and used when configuring triggers.

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.

1

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.

2

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-).

3

Copy the signing secret

Open Basic Information > App Credentials and copy the Signing Secret.

4

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.

5

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.

6

Configure Interactivity

Open Interactivity & Shortcuts, enable interactivity, and paste the Interactivity URL from the ElevenLabs connection page into Request URL.

7

Reinstall if prompted

If Slack prompts you to reinstall the app after changing scopes or events, do so to apply the changes.

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:

ScopePurpose
app_mentions:readReceive messages where the bot is @-mentioned.
channels:historyRead messages in public channels the bot is in.
channels:joinAllow the bot to auto-join public channels when a trigger is created.
channels:managePerform channel management actions.
chat:writePost messages in channels and threads.
groups:historyRead messages in private channels the bot is in.
groups:writeOperate in private channels.
reactions:writeAdd and remove reactions, used for the thinking indicator on messages and agent tools.

Agent tools

When you add Slack tools to an agent, the following built-in tools are available:

ToolDescription
slack_add_reactionAdds an emoji reaction. By default, channel and message ts are filled from integration__slack_channel_id and integration__slack_trigger_message_ts; the model only chooses the emoji shortcode (no colons), for example thumbsup. Outside Slack-triggered conversations those variables are absent unless you set them—adjust the tool schema if the model must pass channel and ts explicitly.
slack_remove_reactionRemoves an emoji reaction (same defaults as add). Per Slack, the calling bot may only remove reactions it originally added; see reactions.remove.

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.

1

Add a SlackMessage trigger

On your agent’s configuration page, add a new trigger and select SlackMessage.

2

Pick the agent and channel

Configure the trigger fields:

  • Agent: the agent that handles the conversation.
  • Channel ID: the Slack channel ID, for example C0123456789. The UI provides a deep link to open the channel in Slack.
3

Save the trigger

Save the trigger. ElevenLabs automatically invites the bot to public channels. Removing the trigger later causes the bot to leave that channel.

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.

1

Start a thread with a mention

Mention the bot in a channel to start a new thread, for example @Eleven what's the status of order 1234?. The bot replies in a thread under that message.

2

Continue the thread

Mention the bot again on every message you want it to respond to, including follow-ups inside the same thread. Messages without a mention are ignored.

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:

VariableDescription
integration__slack_channel_idSlack channel ID.
integration__slack_thread_tsSlack thread timestamp.
integration__slack_user_idSlack user ID of the member whose message triggered this turn.
integration__slack_team_idSlack workspace (team) ID.
integration__slack_connection_idElevenLabs integration connection ID.
integration__slack_trigger_message_tsSlack ts of the message that triggered this agent turn (unique message ID in the channel).

See dynamic variables for how to reference these in prompts and tool calls.