Before You Start
OpenClaw's Slack integration isn't hard. But it's not "click a button" easy, either. You're going to be creating a Slack app, generating tokens, setting up Socket Mode, configuring OAuth scopes, and wiring it all together. Budget about 45 minutes if you've done this kind of thing before, and maybe two hours if you haven't.
This guide covers the full process as of March 2026, including changes from the Socket Mode v2 update that shipped in January. If you're following an older tutorial, some of the scope names and token flows have changed. Fair warning.
Step 1: Create the Slack App
Go to api.slack.com/apps and click "Create New App." Pick "From scratch" (not from a manifest, though we'll get to that). Give it a name; something like "OpenClaw Bot" works fine. Choose the workspace you want to install it to.
One thing people miss: you need admin permissions on the workspace to install apps. If you're on an Enterprise Grid plan, your org admin might need to approve the app first, and that process can take days depending on your company's policies.
Step 2: Enable Socket Mode
Socket Mode is what lets OpenClaw receive events from Slack without exposing a public HTTP endpoint. For most teams, this is the right choice. It's simpler, it works behind firewalls, and it doesn't require a static IP or domain.
In your app's settings, go to Socket Mode in the left sidebar and toggle it on. Slack will prompt you to generate an App-Level Token. Name it something descriptive (like "openclaw-socket") and give it the connections:write scope. Save the token; you'll need it shortly.
# Your app-level token looks like this:
xapp-1-A0XXXXXXXXX-1234567890123-abc123def456...
Step 3: Bot Token and OAuth Scopes
Navigate to OAuth & Permissions. Under "Bot Token Scopes," add the following. This is the minimum set OpenClaw needs to function:
app_mentions:read
channels:history
channels:read
chat:write
files:read
files:write
groups:history
groups:read
im:history
im:read
im:write
mpim:history
mpim:read
reactions:read
reactions:write
users:read
That's 16 scopes. Some guides list fewer, but you'll hit permission errors in production if you skip files:write or reactions:write. Trust me on this one; I've debugged it three times.
Now install the app to your workspace. Click "Install to Workspace" at the top of the OAuth page. After you authorize, you'll get a Bot User OAuth Token starting with xoxb-. Copy that.
Step 4: Event Subscriptions
Go to Event Subscriptions and toggle it on. Since you're using Socket Mode, you don't need a Request URL; Slack handles the connection through the socket.
Subscribe to these bot events:
app_mention
message.channels
message.groups
message.im
message.mpim
reaction_added
The reaction_added event is optional but useful. OpenClaw can be configured to trigger skills when someone reacts with a specific emoji. It's one of those features that sounds gimmicky until you set up a workflow where reacting with :ship: automatically deploys a PR.
Step 5: Configure OpenClaw
Now for the OpenClaw side. Assuming you've already cloned the repo and have it running locally or on a server, you need three environment variables:
export SLACK_BOT_TOKEN="xoxb-your-bot-token-here"
export SLACK_APP_TOKEN="xapp-your-app-token-here"
export OPENCLAW_SLACK_MODE="socket"
The third variable is new as of OpenClaw 0.48. Older versions auto-detected the mode, but that caused issues when both tokens were present and people wanted HTTP mode. Now you have to be explicit.
If you're using a .env file (and you probably should be), drop those in there. Then start OpenClaw:
openclaw start --slack
You should see output like:
[OpenClaw] Connecting to Slack via Socket Mode...
[OpenClaw] Socket connected. Listening for events.
[OpenClaw] Bot user: @openclaw-bot (U0XXXXXXXXX)
If you see a not_authed error instead, your bot token is wrong. If you see invalid_auth, your app-level token is wrong. These look similar but they're different tokens for different purposes.
Step 6: Invite the Bot to Channels
OpenClaw won't see messages in channels it hasn't been invited to. In each channel where you want the bot active, type:
/invite @openclaw-bot
Or you can do it from the channel settings. Either way works. The bot needs to be explicitly added; it can't eavesdrop on channels it's not in (which is a good thing from a security standpoint).
Step 7: Test It
In a channel where the bot is present, type:
@openclaw-bot hello
If everything is wired correctly, you'll get a response within a few seconds. If you don't, check the OpenClaw logs first. 90% of the time it's a scope issue or the bot hasn't been invited to the channel.
Using the App Manifest (Faster Method)
If you don't want to click through all of that manually, OpenClaw ships with a Slack app manifest you can import. It's at config/slack-manifest.yml in the repo. Go to "Create New App" and choose "From an app manifest" instead. Paste the YAML, review the permissions, and install. This takes about five minutes instead of forty-five.
The manifest approach is especially useful if you're setting up OpenClaw across multiple workspaces, which some larger organizations need to do. Just make sure to review the scopes in the manifest before importing; the default config requests everything OpenClaw could possibly need, which might be more than your security team wants.
Common Gotchas
The bot responds to itself. If your bot is triggering on its own messages, you've subscribed to too many event types or your message handler isn't filtering out bot messages. Add a check for message.bot_id in your event handler. For more troubleshooting tips, see our troubleshooting guide.
Rate limits. Slack's rate limits for bot tokens are roughly 1 request per second for most API methods, with bursts up to about 50. If OpenClaw is chatty (lots of channel reads, reactions, file uploads), you might hit these. OpenClaw handles rate limiting internally, but if you've modified the config you might have disabled the backoff.
Token rotation. Slack doesn't rotate bot tokens automatically (yet), but many security teams require periodic rotation as policy. If you rotate your token, remember to update both OpenClaw's config and restart the process.
Or Just Use SlackClaw
Here's the honest pitch: everything above works. Thousands of teams run OpenClaw on Slack exactly this way. But it's also a lot of steps, a lot of tokens to manage, and an ongoing maintenance commitment.
SlackClaw is OpenClaw running on managed infrastructure. Same agent, same capabilities, zero setup. You connect your workspace through OAuth, and you're done in about 90 seconds. No tokens to manage, no server to maintain, no Socket Mode to debug when it drops at 3am.
If you want control and don't mind the ops work, self-hosting OpenClaw on Slack is a solid choice. If you want the same agent without the overhead, check out SlackClaw's pricing. Either way, you end up with OpenClaw in Slack. The difference is who's running it. For a detailed comparison, read our self-hosted comparison guide.