Slack

Slack app integration via Socket Mode or HTTP Events API with channels, DMs, threads, reactions, pins, slash commands, and native streaming.

Slack is OpenClaw's enterprise-grade channel integration, designed for teams that want their AI agent embedded directly in their workspace. OpenClaw connects as a standard Slack app using either Socket Mode (no public URL needed) or HTTP Events API, with full support for DMs, channels, threads, reactions, slash commands, pins, and native streaming via Slack's Agents & AI Apps API. The setup involves creating a Slack app in api.slack.com, enabling Socket Mode, generating an App Token (xapp-...) and Bot Token (xoxb-...), and subscribing to the right events. It's more steps than Telegram but Slack's app creation UI walks you through each one. Socket Mode is the recommended default because it works behind NAT/firewalls without a public URL — just like Telegram's long polling. What sets Slack apart is its native workspace integration. Your agent lives alongside your team's conversations, can be mentioned in any channel, responds in threads to keep discussions organized, and supports slash commands for quick operations. Per-channel tool policies let you restrict what the agent can do in different contexts — full access in #engineering but read-only in #general. The user token (xoxp-...) support enables read operations like searching message history. Slack's streaming support uses the Agents & AI Apps API, delivering token-by-token responses in real time. Multi-account support means you can connect to multiple Slack workspaces from a single OpenClaw instance. For teams already living in Slack, this integration turns their existing workspace into an AI-powered command center without asking anyone to install a new app.

Tags: workspace, enterprise, popular, slash-commands

Category: Workspace

Use Cases

  • Team AI assistant accessible in every Slack channel
  • Per-repository coding assistant with dedicated channels
  • On-call incident response bot that monitors alert channels
  • Meeting notes and action item extraction from Slack discussions
  • Knowledge base Q&A bot with organization-specific context
  • Automated daily standup collection and summarization

Tips

  • Use Socket Mode (default) — no public URL, no webhook configuration, just works
  • Start with DMs and one channel, then expand once everything is solid
  • Set requireMention: true for channels to prevent the bot from responding to every message
  • Use threads for conversations — keeps the main channel clean and gives each thread its own context
  • Add chat:write.customize scope if you want outbound messages to use the agent's name and icon
  • Configure per-channel tool policies to restrict what the agent can do in different contexts
  • Use the user token (xoxp-...) for enhanced read operations like message search
  • Pin important agent responses for easy reference

Known Issues & Gotchas

  • You need BOTH an App Token (xapp-...) AND a Bot Token (xoxb-...) for Socket Mode — they're different tokens from different sections
  • Event subscriptions must be configured BEFORE the bot will receive any messages — missing events is the #1 setup issue
  • App Home → Messages Tab must be enabled or DMs won't work at all
  • Slack reserves /status as a slash command — use /agentstatus instead
  • Native commands are NOT auto-enabled for Slack — you must set commands.native: true explicitly
  • Channel allowlist entries should use stable channel IDs, not names (names can change)
  • The bot token env vars (SLACK_BOT_TOKEN, SLACK_APP_TOKEN) only apply to the default account
  • If channels.slack is completely missing from config, runtime falls back to groupPolicy='allowlist' with a warning

Alternatives

  • Discord
  • Mattermost
  • Google Chat
  • Microsoft Teams

Community Feedback

I was successfully using OpenClaw in Slack, and it was amazing — had it create a channel for every repository in my GitHub account.

— Reddit r/openclaw

Self-hosting OpenClaw for Slack gives you complete control over the infrastructure, the agent configuration, and the data. It's the right choice for teams that care about privacy.

— Reddit r/openclaw

Every integration is a separate failure mode. Get one single workflow working perfectly — like a morning briefing cron — then add the next.

— Reddit r/openclaw

Slack setup is more involved than Telegram but Socket Mode means no ngrok or public URL nonsense. Once it's configured, it just works.

— Reddit r/SaaS

Frequently Asked Questions

Do I need a paid Slack plan for the OpenClaw integration?

No. Socket Mode works on Slack's free plan. However, the free plan limits message history to 90 days and has some API rate limit differences. All core OpenClaw features work on the free tier.

What's the difference between Socket Mode and HTTP Events API?

Socket Mode uses a WebSocket connection (outbound from your server, no public URL needed). HTTP Events API requires a publicly accessible URL that Slack sends events to. Socket Mode is recommended for most setups because it's simpler and works behind NAT/firewalls.

Why isn't my bot responding to messages in channels?

Three common causes: 1) Event subscriptions aren't configured (add message.channels, message.groups events), 2) The bot isn't added to the channel, 3) requireMention is true and you're not @mentioning the bot. Check event subscriptions first.

Can I use slash commands with OpenClaw on Slack?

Yes, but native commands must be explicitly enabled with commands.native: true (they're not auto-enabled for Slack). Register matching slash commands in your Slack app settings. Use /agentstatus instead of /status (Slack reserves /status).

Does Slack support streaming responses?

Yes. OpenClaw uses Slack's Agents & AI Apps API for native streaming, delivering token-by-token responses in real time. Edit-based streaming is also supported as a fallback.

Can I connect to multiple Slack workspaces?

Yes. Use the multi-account feature under channels.slack.accounts to configure separate workspaces with their own tokens and policies. Each account connects independently.

What Slack token scopes do I need?

At minimum: chat:write, channels:history, groups:history, im:history, mpim:history, reactions:read, reactions:write, users:read. Add chat:write.customize if you want custom bot name/icon, and channels:read for channel discovery.

Configuration Examples

Socket Mode (recommended)

channels:
  slack:
    enabled: true
    mode: socket
    appToken: "xapp-1-A0123456789-1234567890123-abc..."
    botToken: "xoxb-1234567890-1234567890123-abc..."

HTTP Events API mode

channels:
  slack:
    enabled: true
    mode: http
    botToken: "xoxb-1234567890-1234567890123-abc..."
    signingSecret: "your-signing-secret"
    webhookPath: "/slack/events"

Per-channel configuration

channels:
  slack:
    enabled: true
    mode: socket
    appToken: "xapp-..."
    botToken: "xoxb-..."
    dmPolicy: allowlist
    allowFrom:
      - "U0123456789"
    channels:
      C0123456789:
        requireMention: true
        systemPrompt: "You are a coding assistant for the engineering team."
      C9876543210:
        requireMention: false
        tools:
          - web_search
          - web_fetch

Installation

Built-in (bundled with OpenClaw)