Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.abundly.ai/llms.txt

Use this file to discover all available pages before exploring further.

Your agent can communicate with you and your team in Slack. People mention it in a channel or DM it, and the agent replies in the same thread — using its full context, capabilities, and history — just like it does in the portal chat. It can also search, read, post messages, add files, and react with emoji. Each Slack-enabled agent has its own identity in Slack, with its own Slack app, bot user, and token.

How to enable

Go to Settings → Capabilities and enable Slack. Then pick a Slack mode, paste in your bot token and Slack app ID, and point your Slack app’s Event Subscriptions URL at the webhook Abundly shows you. See the step-by-step guide below.

Slack modes

The Slack capability has two modes, selectable on the capability card. You can switch modes at any time under Settings → Capabilities → Slack.

Chat mode (default)

The natural choice for most agents. Slack threads and DMs behave as persistent agent chats — the same abstraction as the portal chat. People start a conversation by @mentioning the agent in a channel or sending it a DM, and then keep replying in the same thread without having to @mention every time. Chat mode already supports everything most agents need on Slack, including:
  • Posting proactively to any channel the bot has been invited to
  • Sending DMs
  • Adding reactions
  • Running all Slack tools (search, user lookup, etc.)
You do not need Trigger mode just to post to a channel, react, or run Slack tools — Chat mode handles all of that.

Trigger mode

Each Slack event your app subscribes to is forwarded to the agent as a raw trigger payload for it to interpret with your instructions. There is no automatic reply; the agent only responds or takes action if your instructions call for it. Trigger mode is intended for ambient monitoring or custom automations on specific event types (for example: “whenever someone reacts with 🚨 in #alerts, file an incident”). It is not the right mode for normal interactive Slack use.
Trigger mode can produce a high volume of events. If multiple Trigger-mode agents share a channel they can end up reacting to each other’s messages and spiral into an infinite reply loop, which consumes credits quickly.Before using Trigger mode:
  • Narrow the bot_events in your Slack app to only the specific event types you care about, rather than using the full recommended manifest.
  • Avoid putting multiple Trigger-mode agents in the same channel unless you’ve designed them not to react to each other.
  • Consider whether Chat mode already covers your use case — it almost always does.

Example use cases

  • “Post a daily standup summary to #engineering every morning”
  • “Whenever a new potential customer is mentioned on the #sales channel, research how the customer fits our ideal profile, and add relevant info to the slack thread”
  • “Notify #alerts when you are unable to solve a support ticket”
  • “When a support request needs follow-up, add an :eyes: reaction so the team sees it’s being handled”
  • “When a teammate shares a design mockup in a Slack thread, summarize the feedback and save the file as an agent document for follow-up”

How to connect to your Slack workspace

1

Create a Slack app from the manifest

Abundly generates an app manifest tailored to your agent. It includes the webhook URL, OAuth scopes, and the event subscriptions Slack needs for threads, DMs, and group DMs.
  1. In Abundly, go to Settings → Capabilities, enable Slack, and copy the App Manifest.
  2. Visit api.slack.com/apps and click Create New App → From a manifest.
  3. Select your workspace, paste the manifest, then click Next and Create.
The manifest looks like this (your agent’s name and webhook URL are filled in automatically):
Manifest template
{
  "display_information": {
    "name": "YOUR_AGENT_NAME",
    "description": "YOUR_AGENT_DESCRIPTION",
    "background_color": "#24a18d"
  },
  "features": {
    "app_home": {
      "messages_tab_enabled": true,
      "messages_tab_read_only_enabled": false
    },
    "bot_user": {
      "display_name": "YOUR_AGENT_NAME",
      "always_online": true
    }
  },
  "oauth_config": {
    "scopes": {
      "bot": [
        "channels:read",
        "chat:write",
        "groups:read",
        "im:read",
        "users:read",
        "channels:history",
        "groups:history",
        "im:history",
        "channels:join",
        "im:write",
        "mpim:history",
        "reactions:write",
        "reactions:read",
        "files:read",
        "files:write"
      ]
    }
  },
  "settings": {
    "event_subscriptions": {
      "request_url": "YOUR_WEBHOOK_URL",
      "bot_events": [
        "message.channels",
        "message.groups",
        "message.im",
        "message.mpim"
      ]
    },
    "org_deploy_enabled": false,
    "socket_mode_enabled": false,
    "token_rotation_enabled": false
  }
}
2

Install the app and copy your credentials

After creating the app:
  1. Copy the App ID from the Basic Information page.
  2. Go to Install App in the left sidebar and click Install to Workspace, then authorize the app.
  3. Copy the Bot User OAuth Token from the OAuth & Permissions page.
3

Configure in Abundly

Back in Settings → Capabilities → Slack, paste the bot token and app ID and save. Click Test connection to confirm Abundly can reach your workspace.
4

Verify the Event Subscriptions URL in Slack

If Slack didn’t verify the URL automatically when you created the app from the manifest:
  1. Go back to your app at api.slack.com/apps.
  2. Open Event Subscriptions, enable events, and paste the webhook URL shown in Abundly.
  3. Slack verifies the URL — it should show Verified ✓.
  4. Click Save Changes.
5

Invite to channels

In each Slack channel where you want the agent to work, type /invite @YourAgentName.

How conversations work in Chat mode

With the default manifest and Chat mode, the agent listens broadly but replies selectively:
  • @mentions in a channel start a new chat — the agent replies in the thread with full context.
  • DMs and group DMs start (or continue) a chat — the agent replies naturally.
  • Follow-up thread replies in a thread the agent already joined continue the same chat, so you don’t need to @mention on every message.
  • All other messages are ignored silently, so normal channel chatter doesn’t spam the agent.
These conversations show up in the sidebar alongside portal chats, and can be filtered using the chat filter pill (e.g. Hide remote chats). The agent has the same instructions, memory, and capabilities as it does in the portal — so handoffs between Slack and the portal are seamless.
Slack-originated chats are marked as “remote” and are read-only in the portal — reply from Slack to keep the thread in the agent’s working context.

Customizing scopes and events

The manifest includes defaults that work for most use cases. You can customize them in your Slack app settings:
SettingDescription
ScopesWhat the agent can do in Slack. See the full list of scopes.
Bot eventsWhich events Slack sends to the agent. See the full list of events.
If you don’t want the agent to see all channel messages, remove message.channels and message.groups and add app_mention instead — the agent will then only receive @mentions and DMs.

Accessing other Slack API methods

Beyond posting messages, reading channels, and reacting to messages, your agent can call any Slack Web API method — for example pinning messages, adding bookmarks, or listing user groups. Just ask in plain language:
  • “Pin the latest status update in #launch”
  • “Add a bookmark to #onboarding linking to our new-hire checklist”
  • “List all user groups in the workspace and tell me who’s in @design-team”
If a method requires an OAuth scope your app doesn’t have yet, the agent will tell you exactly which scope to add. Open your Slack app settings, add the scope under OAuth & Permissions → Bot Token Scopes, reinstall the app to the workspace, and update the new bot token in Abundly.

Working with file attachments

Your agent can both receive files from Slack and send files back into Slack messages and DMs. Incoming files. When people share files in Slack, your agent can download those attachments into agent documents and use them in multi-step workflows — for example, reading and summarizing an attached PDF, saving it to the document library, or forwarding it to another capability like Notion. Outgoing files. The agent can attach files when it posts to a channel or sends a DM. Supported sources include agent documents, images and other files produced by other capabilities, external URLs, and raw SVG content (auto-converted to PNG). Multiple files can be attached to a single message. Example prompts:
  • “Generate a pie chart of last month’s sales by region and post it to #sales with a short summary”
  • “When the weekly report PDF is ready, DM it to @Jane”
  • “Take the diagram you just drew and share it in the thread”
The default manifest already includes files:read and files:write, which are needed for file workflows.

Troubleshooting

  1. Check the mode — In Settings → Capabilities → Slack, confirm you’re in Chat mode if you expect the agent to reply automatically. Trigger mode does not auto-reply unless your instructions say so.
  2. Check event subscriptions — In your Slack app settings, go to Event Subscriptions and ensure:
    • The Request URL matches the webhook URL shown in Abundly.
    • The “Enable Events” toggle is ON.
    • The bot events from the manifest are present (message.im for DMs, plus message.channels / message.groups for public / private channel messages — or app_mention with app_mentions:read if you’ve narrowed to mention-only).
  3. Invite the agent — Type /invite @YourAgentName in the channel, or DM the bot directly.
  4. Test the connection — Use the Test connection button in Abundly to confirm the bot token is valid.
By default, the agent listens to all messages in channels it’s in, but only replies to @mentions, DMs, and follow-ups inside threads it’s already part of. That’s intentional — it keeps the agent from jumping into every conversation. To change this behavior, adjust your agent’s instructions or customize the bot events in your Slack app.
By default the agent receives all messages in channels, groups and DMs it’s a member of, so it can keep a conversation going in a thread without requiring an @mention every time. If you’d rather have it respond only when directly @mentioned:
  1. In your Slack app’s Event Subscriptions, replace message.channels and message.groups in the bot events with app_mention.
  2. Add app_mentions:read to scopes.bot on OAuth & Permissions.
  3. Reinstall the app from the Install App page, then update the new bot token in Abundly.
You can also remove the agent from noisy channels rather than changing scopes.
Ensure your Slack app has these minimum scopes:
  • channels:read, groups:read, im:read — To see public channels, private channels, and DMs
  • channels:history, groups:history, im:history, mpim:history — To read message content in each conversation type
  • chat:write — To send messages
  • im:write — To open DM conversations
  • users:read — To resolve user IDs and display names
If you’ve added new scopes, reinstall the app from the Install App page in the left sidebar, then update the new bot token in Abundly.