Connect an agent to Slack

Mention the agent in a thread and it answers there

Mention the agent in a Slack channel, or send it a direct message, and it answers in the thread - using the same prompt, knowledge bases and tools it uses everywhere else.

The Slack channel is in beta and enabled per workspace. Until it is enabled the channel does not appear in your dashboard at all. Ask your account contact to turn it on.

You bring the Slack app

You create the Slack app in your own workspace and give us two secrets from it. There is no “Add to Speechify” button and no Speechify listing in the Slack Marketplace, and that is deliberate: your workspace grant never leaves your control, you can revoke it from your own Slack admin without talking to us, and we hold only what is needed to reach your workspace.

Setup happens in the dashboard and takes about ten minutes.

1

Connect the channel

In the dashboard, go to Channels, find Slack, and choose Connect a Slack workspace. Give it a name you will recognise - the customer-facing Slack workspace it serves, usually.

Saving it opens the channel’s page, which is where the rest of setup happens. It shows a Finish setup in Slack panel with the two things you cannot assemble by hand: the app manifest, and this channel’s own inbound URL.

2

Create the Slack app from the manifest

At api.slack.com/apps, choose Create New App, then From a manifest, and pick your workspace.

Copy the manifest from the channel page rather than writing one: it already carries this channel’s request URL, so events are wired the moment you install the app. It looks like this, with the URL filled in:

1display_information:
2 name: Speechify Agent
3features:
4 bot_user:
5 display_name: Speechify Agent
6 always_online: true
7oauth_config:
8 scopes:
9 bot: [app_mentions:read, chat:write, im:history]
10settings:
11 event_subscriptions:
12 request_url: https://api.speechify.ai/v1/agent-channels/YOUR_CHANNEL_ID/inbound
13 bot_events: [app_mention, message.im]
14 org_deploy_enabled: false
15 socket_mode_enabled: false

Three scopes is the whole list. The agent posts and edits its own messages and reads nothing else, so it never asks for your user directory.

Then Install to Workspace. Leave the page open: the next step needs two values from it.

3

Store the app’s two secrets

In the dashboard, go to Credentials and add two, then paste their ids back into the channel page.

From the Slack appCredential typeWhat it is for
OAuth & Permissions → Bot User OAuth Token (xoxb-...)Bearer tokenPosting the agent’s replies
Basic Information → Signing SecretShared secretVerifying that an inbound event really came from Slack

Both are stored encrypted and never shown again. The channel holds only their ids, which is why rotating a token later is one edit in one place.

Fill in your Slack workspace ID on the same page, from the app’s Basic Information. It is required: it binds this channel to one Slack workspace, so an event from any other workspace is ignored.

4

Attach the agent, and check it verified

On the agent you want answering, open its Reach tab and attach this Slack channel.

Back in the Slack app under Event Subscriptions, Slack shows a green Verified against the request URL. That is the whole handshake. If you built the app by hand rather than from the manifest, paste the URL from the channel page there now.

Try it

Invite the bot to a channel and mention it:

@Speechify Agent what does our refund policy say?

The reply lands in a thread under your message. Every reply in that thread continues the same conversation, so the agent keeps its context; a new top-level mention starts a fresh one.

A direct message works too, and needs no mention - in a DM, the DM is the address.

What the agent answers, and what it ignores

The agent answers a mention in a channel, and any direct message. It deliberately ignores everything else it can see: edits, its own messages, other bots, and ordinary channel chatter it was not addressed in. Adding the bot to a busy channel is safe.

Per-person memory applies in direct messages only. A channel thread is a room rather than one person, so the agent does not attach one participant’s identity - and therefore one participant’s memories - to a conversation several people are taking part in.

Troubleshooting

Almost always the signing secret. Check the Shared secret credential holds the app’s Signing Secret from Basic Information, not the bot token, and that the channel page points at it.

Check it is in the channel, that the agent is attached to this channel under its Reach tab, and that the agent has the text channel enabled. A mention with no question after it is ignored on purpose.

Check the Slack workspace ID on the channel page matches the workspace the app is installed in. An event from any other workspace is dropped without a reply, which is what stops one Slack app installed in several workspaces from crossing them.

Report it. Slack retries an event when our acknowledgement is slow, and duplicate answers should be impossible: every event carries an id we record before doing any work.