Communication
Slack setup guide
Read channels and threads, search messages, and post, reply, react and share files in Slack.
Agents read conversations and write messages for your company. Anything a customer or the public sees, such as a sent email or a posted message, is tier 3, so it asks first unless you decide otherwise.
To put Slack to work after connecting it, see Approvals in Slack and Teams.
Ways to connect
Company admins connect apps, on the Integrations page in Everdeck: open Slack, choose one of the ways below, follow its steps and fill in its fields. Everdeck checks what you enter before it saves anything, and asks you to confirm it’s you (your second factor) before you type any secret. How connecting works.
Slack can be connected 2 ways. Where there’s a key or token to paste, that’s usually the quickest.
Bot token from your Slack app
Token.
- Open https://api.slack.com/apps?new_app=1, choose "From a manifest", pick your workspace, switch to YAML and paste the manifest shown below. Click Create.
- Click "Install to Workspace" and allow access.
- Under OAuth & Permissions, copy the Bot User OAuth Token (starts with xoxb-). To let agents search public channels, also copy the User OAuth Token (starts with xoxp-).
- Under Basic Information, copy the Signing Secret if Slack messages should start agent work.
- In Slack, invite the bot to each channel it should read or post in: /invite @everdeck-agent
- To have Slack start agent work, subscribe one trigger on the Intake page (Slack sends all of an app's events to one address): app_mentioned or message_posted. In your Slack app, open Event Subscriptions, turn Enable Events on and paste the address Intake shows for it as the Request URL. Under "Subscribe to bot events" add app_mention for app_mentioned, or message.channels, message.groups and message.im for message_posted. Save Changes. If Slack says the Request URL didn't answer its challenge, check that the connection has your Slack app's Signing Secret (step 4).
- Slack keeps sending to the Request URL it was given. Whenever the address Intake shows changes (after you rotate it, or subscribe the trigger again: it gets a new address), paste the new address as the Request URL under Event Subscriptions and Save Changes. Before you turn the trigger off or disconnect this connection, turn Enable Events off there: events sent to an address that refuses them are lost, and Slack turns your app's events off once enough fail.
| Field | What to enter |
|---|---|
| Bot User OAuth Token | A secret: Everdeck saves it encrypted and never shows it again. Where to find it. |
| User OAuth Token (lets agents search messages) (optional) | A secret: Everdeck saves it encrypted and never shows it again. |
| Signing Secret (needed for Slack events and approvals in Slack) (optional) | A secret: Everdeck saves it encrypted and never shows it again. |
Disconnecting deletes the credentials Everdeck saved, but Everdeck can't revoke them: the key, token or password itself keeps working at Slack until you delete or rotate it there.
Your Slack app (OAuth install)
Your OAuth app.
This way signs in with an OAuth app you create for Slack, as its steps describe: Everdeck never uses an app of its own. Register this redirect URI with your app:
https://everdeck.io/api/oauth/callback
Then save the app’s client ID and secret in Everdeck, on the connect page or under OAuth apps, and sign in.
- Open https://api.slack.com/apps?new_app=1, choose "From a manifest", pick your workspace, switch to YAML and paste the manifest shown below. Its redirect URL is https://everdeck.io/api/oauth/callback.
- Under Basic Information, copy the Client ID and Client Secret into the form. Copy the Signing Secret too if Slack messages should start agent work.
- Click Connect and approve the install in Slack.
- In Slack, invite the bot to each channel it should read or post in: /invite @everdeck-agent
- To have Slack start agent work, subscribe one trigger on the Intake page (Slack sends all of an app's events to one address): app_mentioned or message_posted. In your Slack app, open Event Subscriptions, turn Enable Events on and paste the address Intake shows for it as the Request URL. Under "Subscribe to bot events" add app_mention for app_mentioned, or message.channels, message.groups and message.im for message_posted. Save Changes. If Slack says the Request URL didn't answer its challenge, check that the connection has your Slack app's Signing Secret (step 2).
- Slack keeps sending to the Request URL it was given. Whenever the address Intake shows changes (after you rotate it, or subscribe the trigger again: it gets a new address), paste the new address as the Request URL under Event Subscriptions and Save Changes. Before you turn the trigger off or disconnect this connection, turn Enable Events off there: events sent to an address that refuses them are lost, and Slack turns your app's events off once enough fail.
| Field | What to enter |
|---|---|
| Signing Secret (needed for Slack events and approvals in Slack) (optional) | A secret: Everdeck saves it encrypted and never shows it again. |
The scopes Everdeck asks for:
app_mentions:readchannels:historychannels:readchat:writefiles:writegroups:historygroups:readim:historympim:historyreactions:writeusers:readusers:read.email
When you disconnect, Everdeck asks Slack to revoke the sign-in, then deletes the tokens it saved.
App manifest
The steps above ask you to paste this manifest when you create your Slack app. The connect page in Everdeck shows the same manifest with a Copy manifest button.
display_information:
name: Everdeck Agent
description: AI employees that work in your channels.
features:
app_home:
home_tab_enabled: false
messages_tab_enabled: true
messages_tab_read_only_enabled: false
bot_user:
display_name: everdeck-agent
always_online: true
oauth_config:
redirect_urls:
- https://everdeck.io/api/oauth/callback
scopes:
bot:
- app_mentions:read
- channels:history
- channels:read
- chat:write
- files:write
- groups:history
- groups:read
- im:history
- mpim:history
- reactions:write
- users:read
- users:read.email
user:
- search:read.public
settings:
org_deploy_enabled: false
socket_mode_enabled: false
token_rotation_enabled: false
What agents can do
An agent uses an action only when its charter grants it, on the agent’s Tools tab, where you choose whether each one runs by itself (Auto), asks first or never runs. Each action has a risk tier: tier 3 actions, which customers or the public see, ask first unless you choose otherwise, and tier 4 actions (money, deleting things, access) always need a person. How tools and tiers work.
Actions marked Reads outside content return things people outside your company may have written. Agents treat what they read as information, never as instructions, and their riskier actions later in the same session need approval.
-
List channelsTier 0 · ReadReads outside content
slack_list_channelsList public and private channels the app can see, with id, name, topic and whether the bot is a member.
-
Read channel messagesTier 0 · ReadReads outside content
slack_get_channel_historyRead recent top-level messages in a channel or DM the bot is in, newest first. oldest and latest are Slack timestamps (seconds since epoch, for example 1759900000.000000).
-
Read a threadTier 0 · ReadReads outside content
slack_get_thread_repliesRead a thread's parent message and its replies, oldest first.
-
Search messagesTier 0 · ReadReads outside content
slack_search_messagesSearch messages in public channels (Slack Real-time Search). Accepts Slack search filters with ids in angle brackets, for example "invoice in:<#C0123ABC> from:<@U0123ABC> after:2026-09-01". Needs the User OAuth Token.
-
Look up a personTier 0 · ReadReads outside content
slack_get_userGet a member's name, title, email and time zone from their user id (U...).
-
Find a person by emailTier 0 · ReadReads outside content
slack_find_user_by_emailFind a workspace member by email address to mention or message them.
-
Post a messageTier 3 · External
slack_post_messagePost a message to a channel (id) or to a person (their user id opens a DM with the app). Uses Slack mrkdwn: *bold*, _italic_, <@U123> mentions, <https://example.com|links>.
-
Reply in a threadTier 3 · External
slack_reply_in_threadReply in a message's thread. Set also_send_to_channel to show the reply in the channel too.
-
Edit a messageTier 3 · External
slack_update_messageReplace the text of a message the bot posted earlier.
-
React with an emojiTier 2 · ReversibleReads outside content
slack_add_reactionAdd an emoji reaction to a message, for example eyes to show the request was seen.
-
Share a fileTier 3 · ExternalReads outside content
slack_upload_fileUpload a file from the company's files to a channel or thread, with an optional comment.
What can start work
These events from Slack can become tasks for your agents through Intake. How Intake works.
Someone mentioned the bot in a channel (Events API event app_mention).
Connect Slack first. Then, on the Intake page, open Webhooks and sources, find the connection under Connections without an address yet and select Get its URL. Give that address to Slack as the setup steps above describe: Everdeck shows it only once. Then, on the Rules tab, select New rule to say which requests become tasks and who gets them.
A message was posted in a channel, private channel or DM the bot is in (Events API events message.channels, message.groups, message.im).
Connect Slack first. Then, on the Intake page, open Webhooks and sources, find the connection under Connections without an address yet and select Get its URL. Give that address to Slack as the setup steps above describe: Everdeck shows it only once. Then, on the Rules tab, select New rule to say which requests become tasks and who gets them.
Testing, problems and disconnecting
Everdeck checks the connection when you save it. On the connection’s page in Integrations, Test checks it again at any time.
If Slack later refuses the connection, for example because a key was deleted or a sign-in expired, the connection shows Needs attention on the Integrations page and the people who manage connections are told. Agents can’t use it until a company admin fixes it with Edit or Reconnect.
To stop agents using Slack, open the connection and select Disconnect. Agents stop using it at once and its saved credentials are deleted. What else happens depends on how it was connected: each way above says.
Still stuck?
Email [email protected] and say what you were trying to do. Or browse every guide.