Skip to main content

Slack Custom Agent

Slack Custom Agent lets you create a dedicated Slack agent for your account with its own unique name and identity. Each Slack Custom Agent integration maps to one Slack app (bot identity), so you can create distinct identities for Sales, HR, Onboarding, or any other flow.

Navigate to https://api.slack.com/apps/ and create the Slack app from a manifest in the Slack console. This is the recommended and supported setup path for Slack Custom Agent.

  1. Open the Slack Apps console and click Create New App.
  2. Choose From an app manifest.
  3. Select the workspace where you want to install the app.
  4. Paste the JSON below and create the app.
{
"display_information": {
"name": "BotDojo Custom Agent (replace with your app name)",
"background_color": "#131934"
},
"features": {
"app_home": {
"home_tab_enabled": false,
"messages_tab_enabled": true,
"messages_tab_read_only_enabled": false
},
"bot_user": {
"display_name": "BotDojo Agent (replace with your bot name)",
"always_online": false
}
},
"oauth_config": {
"redirect_urls": [
"https://app.botdojo.com/integrations/slack-agent/oauth_redirect"
],
"scopes": {
"bot": [
"app_mentions:read",
"chat:write",
"channels:history",
"groups:history",
"im:history",
"im:write"
],
"user": [
"users:read",
"users:read.email"
]
}
},
"settings": {
"event_subscriptions": {
"request_url": "https://api.botdojo.com/integrations/slack-agent/webhooks/",
"bot_events": [
"app_mention",
"message.im",
"message.channels",
"message.groups"
]
},
"org_deploy_enabled": false,
"socket_mode_enabled": false,
"token_rotation_enabled": false
}
}

After creating the app from the manifest, open Basic Information and copy these values (you will enter them in BotDojo):

  • Client ID
  • Client Secret
  • Signing Secret

Connect the Slack app in BotDojo

  1. In BotDojo, go to Account → Integrations.
  2. Select Slack Custom Agent.
  3. Enter Agent Name, Client ID, Client Secret, and Signing Secret.
  4. Click Connect and complete the Slack OAuth flow (this installs the app into the workspace).

Attach the Slack Custom Agent to a flow

  1. Open the flow in the Flow Builder.
  2. On the Start Node, click Add Trigger → Integration Trigger.
  3. Choose Slack Custom Agent and select the integration you just created.
  4. Pick Slack Custom Agent Message as the trigger type.
  5. Configure options:
    • Message Source: DMs, Mentions, or Both.
    • Trigger on all messages in a bot thread: if enabled, the bot will respond to thread replies after the initial mention.
    • Auto-reply from End Node output: if enabled, the flow’s End Node output is posted back to Slack automatically.
  6. Click Apply Changes.

Behavior notes

  • DM sessions: all DM messages with the bot share a single session (tied to the DM channel).
  • Channel mentions: a mention starts a session tied to that thread.
  • If Trigger on all messages in a bot thread is off, and a user mentions the bot inside an existing thread, the trigger includes thread_context (a concatenated view of user messages since the last bot message) so the flow can still respond with context.

Streaming responses

When Enable streaming responses is on (the default), replies use Slack's streaming API for a progressive, AI-native experience:

  • Streamed text: the answer appears token-by-token instead of all at once.
  • Task progress cards: each tool the flow executes is shown as a Slack task card with live status updates (pendingin progresscomplete). Tasks are grouped in a plan view.
  • Prompt buttons: if the flow's final answer includes <promptbutton> tags, they are rendered as clickable Slack buttons below the reply. Clicking a button sends the configured prompt as a new message in the same thread, triggering another flow run.

DM threading change

When streaming is enabled, DM responses become threaded replies to the user's message (required by the Slack streaming API). The legacy non-streaming path continues to post flat DM messages.

Trigger options

OptionDefaultDescription
Enable streaming responsesOnUse Slack's streaming API with task progress cards. Turn off to fall back to the legacy placeholder-and-update method.
Show typing indicatorOnShow a placeholder while the flow runs (applies to both streaming and legacy modes).

Fallback behavior

If the streaming API call fails (e.g., the Slack app lacks permissions or the API is unavailable), the agent automatically falls back to the legacy chat.postMessage + chat.update method.

Prompt buttons (interactive)

To enable prompt buttons on streamed responses, add an Interactivity section to your Slack app manifest:

{
"features": {
"interactivity": {
"is_enabled": true,
"request_url": "https://api.botdojo.com/integrations/slack-agent/webhooks/interactivity"
}
}
}

No additional OAuth scopes are required for basic button interactivity. The existing chat:write scope is sufficient for all streaming and button features.