Prerequisites
- A Slack App created at api.slack.com/apps with the correct scopes, or use Timely.ai’s guided installation that creates the app automatically
- Workspace administrator role in Slack (or approval from an admin to install the app)
- HTTPS configured on your domain to receive Slack events
- An Agent created and active in Timely.ai
Timely.ai’s Slack integration uses OAuth 2.0 with CSRF protection via HMAC-SHA256 on the
state parameter. No credentials are stored in plain text.Step-by-step connection
Start the OAuth flow
Click Connect with Slack. You will be redirected to the Slack authorization page. Select the Workspace where you want to install the Agent.

Authorize the scopes
Timely.ai requests the following bot scopes:Click Allow to complete authorization. Slack redirects back to Timely.ai.
- Read
- Write
- Administration
app_mentions:read, channels:history, channels:read, groups:history, groups:read, im:history, im:read, mpim:history, mpim:read, users:read, users:read.email, reactions:readConfigure monitored channels
After installation, go to Channels → [your Slack integration] → Configure channels. For each Slack channel the Agent should monitor:
- Select the channel from the list (searched via the Slack API in real time)
- Choose the response mode:
mention_only— responds only when @mentionedall_messages— responds to all messagesdm_only— responds only in direct DMs with the bot
- Enable the channel toggle

Add the bot to channels
In Slack, add the bot to the channels you configured. Inside the channel, type:Without this step, the bot will not receive messages even with the correct scopes.
Supported features
Media types
| Type | Receive | Send |
|---|---|---|
| Text (with Slack Markdown) | Yes | Yes |
| Image | Yes | Yes |
| File (PDF, DOCX, etc.) | Yes | Yes |
| Block Kit (rich messages) | — | Yes |
| Reactions (emoji) | Yes | Yes |
Response modes
| Mode | Behavior |
|---|---|
mention_only | Bot responds only when directly @mentioned |
all_messages | Bot processes all messages in the channel |
dm_only | Bot responds only in Direct Messages |
Slash commands
With thecommands scope, the bot automatically registers the /timely slash command. Users can use:
Thread replies
By default, the Agent responds in thread to keep the channel organized. To reply in the main channel, adjust the configuration in Channels → [Slack integration] → Reply preferences.Incoming webhook
Slack events (messages, @mentions, reactions) arrive via:Signature verification
All Slack requests include theX-Slack-Signature header. Timely.ai verifies the signature using the SLACK_SIGNING_SECRET before processing any event.
Limits and best practices
- 1 installation per Workspace — each Slack Workspace supports one active installation. For multiple Agents, use the
mention_onlyresponse mode and @mention the correct Agent. - Slack rate limit — Slack API tier 3 allows 50+ requests/minute. In high-traffic channels, the bot may be temporarily throttled.
- Token renewal — Slack OAuth tokens do not expire, but are invalidated if the app is uninstalled or scopes are changed. Reconnect the Channel if the bot stops responding.
- Private channels — the bot must be explicitly invited to private channels. The invitation is not automatic even after OAuth installation.
- Use
all_messageswith caution — in very active channels, this mode can generate a high volume of LLM calls. Monitor usage in Analytics → Usage by channel. - Encrypted tokens — Timely.ai stores the bot token encrypted. Never expose the token in logs or frontend environment variables.
Troubleshooting
Bot installed but does not appear in channels
Bot installed but does not appear in channels
After OAuth installation, the bot must be manually invited to each channel. Use
/invite @bot-name inside the desired channel. In private channels, only channel administrators can send the invite.Bot does not respond to @mentions
Bot does not respond to @mentions
Verify that the channel is enabled in Channels → [Slack integration] → Configure channels and that the response mode is
mention_only. Also confirm the bot is in the channel (a system message “Bot joined the channel” should appear in the history).Invalid signature error on events
Invalid signature error on events
The
SLACK_SIGNING_SECRET configured in Timely.ai does not match the Signing Secret of your Slack App. Go to api.slack.com/apps → your app → Basic information → App credentials and copy the correct Signing Secret.Slash command /timely does not appear in Slack
Slash command /timely does not appear in Slack
Slack commands become available a few minutes after installation. If after 10 minutes the command does not appear, reinstall the app in the Workspace: disconnect the Channel in Timely.ai and reconnect via OAuth.
Bot replies in the channel instead of in thread
Bot replies in the channel instead of in thread
Go to Channels → [Slack integration] → Reply preferences and enable Reply in thread. This setting affects only new messages — existing conversations maintain their previous behavior.
Integration was working and stopped responding
Integration was working and stopped responding
Check whether the Slack app was uninstalled from the Workspace or if scopes were changed by an admin. Go to Channels → [Slack integration] and check the status. If it is inactive, reconnect via OAuth to generate a new token.