Slack
Slack app integration via Socket Mode or HTTP Events API with channels, DMs, threads, reactions, pins, slash commands, and native streaming.
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_fetchInstallation
Built-in (bundled with OpenClaw)