Home About Who We Are Team Services Startups Businesses Enterprise Case Studies Blog Guides Contact Connect with Us
Back to Guides
Automation & AI Agents 17 min read

How to Connect Slack to OpenClaw: Team AI Assistant Setup

Most teams install OpenClaw, get it working on Telegram, and stop there. Slack sits right there as a channel option, but nobody on the team uses it because connecting a Slack App involves scopes, tokens, and event subscriptions that the quick-start guide breezes past in two sentences.

This guide covers the full Slack setup from scratch: creating the Slack App, generating the right tokens, configuring OpenClaw to listen and respond, and then building the team workflows that make the integration worth doing. If OpenClaw is already running on your machine or a VPS, the connection takes about 15 minutes. The part most guides skip, what to actually build once it is connected, is where we spend the second half.


Why Slack Instead of Telegram or WhatsApp

OpenClaw works on Telegram, WhatsApp, Discord, iMessage, and Slack. For personal use, Telegram is the simplest option. But for teams, Slack changes what the agent can do.

Slack has channels. Channels give your agent context boundaries. You can drop your OpenClaw bot into #engineering and give it access to deployment docs, then put the same bot in #sales with access to your CRM skill. Same agent, different behavior per channel. Telegram groups do not give you that level of per-context configuration.

Slack also has threads, reactions, slash commands, and file sharing, all of which OpenClaw can hook into. When someone uploads a CSV to a channel and asks “what are the top accounts here?”, the agent can download the file, parse it, and respond in-thread. That workflow does not exist in a Telegram group chat.

If your team already lives in Slack, this is the integration that turns OpenClaw from a personal assistant into a shared team resource.


Before You Start

You need three things in place:

  1. OpenClaw installed and running. If you have not done this yet, follow our OpenClaw setup guide. That guide covers installation, workspace files, memory, and model configuration.

  2. A Slack workspace where you have admin permissions (or permission to install apps). You do not need a paid Slack plan. The free tier supports bot tokens, Socket Mode, and event subscriptions.

  3. A text editor for editing configuration files. VS Code, Cursor, or any Markdown-capable editor works.

If you want your bot available 24/7 without keeping your laptop open, you will also need OpenClaw running on a VPS. Our Hostinger deployment guide covers that.


Step 1: Create a Slack App

The Slack App is the container that holds your bot’s identity, permissions, and event subscriptions. Every permission your OpenClaw agent needs in Slack flows through this app.

App Creation

  1. Go to api.slack.com/apps
  2. Click Create New App
  3. Select From scratch (not from a manifest, we want to understand each piece)
  4. Name it something your team will recognize: OpenClaw or AI Assistant
  5. Select the workspace where you want to install it
  6. Click Create App

You are now on the app’s Basic Information page. Keep this tab open. You will need it for the next several steps.

Add Bot Scopes

Navigate to OAuth & Permissions in the left sidebar. Scroll down to Scopes and add these Bot Token Scopes:

ScopeWhat It Enables
chat:writeSend messages in channels and DMs
channels:historyRead message history in public channels
channels:readList channels and get channel info
groups:historyRead message history in private channels
im:historyRead DM history
im:readView basic DM info
im:writeStart DMs with users
app_mentions:readDetect when someone @mentions the bot
files:readDownload files shared in channels
files:writeUpload files to channels
reactions:readSee emoji reactions on messages
reactions:writeAdd emoji reactions to messages
users:readLook up user profiles

Start with these 13 scopes. You can add more later (like commands for slash commands or pins:read for pin tracking) as you build out specific workflows.

Enable Socket Mode

Socket Mode lets OpenClaw maintain a persistent WebSocket connection to Slack. No public URL needed. No SSL certificates. No webhook configuration. The agent reaches out to Slack, not the other way around.

  1. Go to Socket Mode in the left sidebar
  2. Toggle Enable Socket Mode to on
  3. Slack will prompt you to create an App-Level Token
  4. Name the token openclaw-socket and add the connections:write scope
  5. Click Generate
  6. Copy the token immediately. It starts with xapp-. You will not see it again.

Subscribe to Events

Go to Event Subscriptions in the left sidebar. Toggle Enable Events to on.

Under Subscribe to bot events, add:

  • app_mention (someone @mentions your bot)
  • message.channels (messages in public channels)
  • message.groups (messages in private channels)
  • message.im (direct messages to your bot)
  • message.mpim (group DMs)

Then go to App Home in the left sidebar and check Allow users to send Slash commands and messages from the messages tab. This enables DMs with your bot.

Install the App to Your Workspace

Go back to OAuth & Permissions and click Install to Workspace at the top. Slack will ask you to authorize the permissions you just configured. Click Allow.

After installation, copy the Bot User OAuth Token. It starts with xoxb-. This is the second token you need.

You now have two tokens:

TokenPrefixPurpose
App Tokenxapp-WebSocket connection (Socket Mode)
Bot Tokenxoxb-API calls (sending messages, reading channels)

Step 2: Configure OpenClaw

With both tokens in hand, you need to tell OpenClaw where to find them and how to connect.

Store Your Tokens

Do not paste tokens directly into config files that your agent can read into context. Store them as environment variables:

# Add to ~/.env or your shell profile
export SLACK_BOT_TOKEN=xoxb-your-bot-token-here
export SLACK_APP_TOKEN=xapp-your-app-token-here

If you are running OpenClaw on a VPS, add these to the server’s environment. For systemd-managed deployments, put them in the service file’s Environment= directives.

Update OpenClaw Config

OpenClaw picks up Slack configuration from its config file. Open your openclaw.json (typically in ~/.openclaw/) and add the Slack channel:

{
  "channels": {
    "slack": {
      "enabled": true,
      "mode": "socket",
      "botToken": "${SLACK_BOT_TOKEN}",
      "appToken": "${SLACK_APP_TOKEN}"
    }
  }
}

For most teams, this minimal config is enough to get started. OpenClaw defaults to Socket Mode, which is what we want.

If your tokens are stored as environment variables (recommended), OpenClaw reads SLACK_BOT_TOKEN and SLACK_APP_TOKEN automatically for the default account. You can skip the explicit botToken and appToken fields entirely:

{
  "channels": {
    "slack": {
      "enabled": true
    }
  }
}

Start the Gateway

Restart the OpenClaw gateway to pick up the new configuration:

openclaw gateway restart

Watch the logs for a Slack connection confirmation:

openclaw logs --follow

You should see a message indicating the Slack Socket Mode connection is established. If you see authentication errors, double-check that your tokens are correctly set in the environment.


Step 3: Test the Connection

Open Slack and try three things in order:

DM test. Go to your Apps section in Slack, find your OpenClaw bot, and send it a direct message: “What can you do?” The agent should respond with an overview of its capabilities based on your workspace configuration.

Mention test. Go to any channel where the bot is present, type @OpenClaw what time is it? and wait for a response. If the bot does not respond, it may not have been invited to the channel. Type /invite @OpenClaw first.

File test. Upload a small text file or CSV to a channel where the bot is active and ask it to summarize the contents. This verifies that the files:read scope is working.

If something breaks, these are the most common causes:

SymptomLikely CauseFix
No response at allBot not connectedCheck openclaw logs --follow for errors
401 errors in logsWrong tokenRegenerate tokens in Slack App settings
Bot responds in DM but not channelsNot invited to channel/invite @OpenClaw in the channel
Bot responds but cannot read filesMissing scopeAdd files:read in OAuth & Permissions, reinstall app
Delayed or timeout errorsLLM response too slowCheck model configuration, consider faster model for Slack

A useful diagnostic command: openclaw channels status --probe shows whether the Slack connection is active and which channels the bot can see.


Socket Mode vs HTTP: Which to Use

Socket Mode is the right default for most teams. Here is when each mode makes sense:

Socket Mode (recommended for most setups):

  • No public URL or SSL required
  • Works behind firewalls and NATs
  • Single WebSocket connection, low overhead
  • Best for: teams running OpenClaw on a laptop, home server, or basic VPS

HTTP Events API (for specific production scenarios):

  • Requires a publicly accessible HTTPS endpoint
  • Scales horizontally (multiple servers can handle events)
  • Better for: enterprise deployments with load balancers, or when you are already exposing OpenClaw through a reverse proxy

To switch to HTTP mode, you need the Signing Secret from your Slack App’s Basic Information page instead of the App Token:

{
  "channels": {
    "slack": {
      "enabled": true,
      "mode": "http",
      "signingSecret": "your-signing-secret",
      "webhookPath": "/slack/events"
    }
  }
}

Then set your Slack App’s Event Subscription Request URL, Interactivity Request URL, and Slash Command Request URL all to the same endpoint (e.g., https://your-server.com/slack/events).

Unless you have a specific reason to use HTTP mode, stick with Socket Mode. It removes an entire category of networking problems.


What to Build First

The connection is live. Your team can message the bot. Now what?

The mistake most teams make is treating the Slack bot like a shared ChatGPT window. Everyone asks random questions, nobody configures workflows, and after two weeks the bot sits idle. The teams that get lasting value follow a deliberate progression.

Week 1: Team Q&A Bot

Start by giving your agent knowledge worth querying. Create a skill that points to your team’s docs, runbooks, or wiki:

---
name: team-knowledge
description: Answer questions about our internal processes, tools, and documentation.
tools:
  - shell
---

# Team Knowledge Base

## Sources

When asked about internal processes, check these locations:
- ~/docs/runbooks/ for operational procedures
- ~/docs/onboarding/ for new hire information
- ~/docs/architecture/ for system design decisions

## Rules

- Always cite which document the answer came from
- If no document covers the question, say so explicitly
- Do not guess or fabricate internal procedures

Drop your OpenClaw bot into a channel like #ask-ai and tell the team to use it for questions they would normally search Confluence or Notion for. The agent pulls from local files, so the answers stay within your infrastructure.

The first useful signal typically comes within 48 hours: you discover which questions your team asks repeatedly and which docs are missing or outdated.

Week 2: Standup Summaries and Reminders

Add a scheduled task to your OpenClaw heartbeat or cron configuration that runs every weekday morning:

## Daily Standup Reminder (weekdays at 9:00 AM)
Post to #engineering:
"Good morning. Drop your standup update in this thread:
- What you shipped yesterday
- What you are working on today
- Any blockers"

At 10:00 AM, read all replies in today's standup thread.
Summarize who is blocked and on what.
Post the summary as a reply in the same thread.

This is where channel context matters. Your agent reads the thread, extracts blockers, and posts a structured summary. A Telegram bot cannot do this because Telegram does not have threaded replies with the same channel-scoped history.

You can extend this pattern for recurring tasks: weekly sprint summaries, monthly metric roundups, or deadline reminders pulled from a project management integration. If you have connected Linear, Jira, or Notion to OpenClaw, the standup summary can include ticket status automatically.

Week 3: Channel Monitoring and Ticket Triage

This is where the Slack integration earns its keep for support and ops teams.

Configure your agent to monitor a channel like #support-escalations and respond to keywords or patterns:

## Support Channel Monitor
When a message in #support-escalations contains "outage", "down", or "incident":
1. Acknowledge with a reaction (eyes emoji)
2. Check the status page API for current incidents
3. Post a thread reply with: current status, affected services, and a link to the incident page
4. If no incident is listed, notify the on-call channel

For ticket triage, your agent can read incoming support messages, classify them by urgency, and route them:

## Ticket Triage
When a new message arrives in #support-inbox:
1. Read the message and classify: bug, feature request, billing question, or general inquiry
2. Add a colored emoji reaction: red_circle for bugs, large_blue_circle for features, white_circle for billing, black_circle for general
3. If classified as bug with keywords "production" or "data loss", also post to #engineering-urgent

This is not a theoretical exercise. A triage agent like this handles the first-pass classification; humans handle the judgment calls. The result is significantly faster routing with less manual effort.


Controlling Access: Channels, DMs, and Permissions

Once your team starts relying on the bot, you need to lock down who can do what. OpenClaw gives you granular control at the channel and user level.

Channel access is controlled by group policy. The default is allowlist, meaning the bot only responds in channels you explicitly approve:

{
  "channels": {
    "slack": {
      "groupPolicy": "allowlist",
      "channels": {
        "C01ABCDEF12": {
          "requireMention": true,
          "users": ["U01USER1", "U02USER2"]
        },
        "C02GHIJKL34": {
          "requireMention": false
        }
      }
    }
  }
}

Use channel IDs, not channel names. Names change; IDs do not. Find a channel’s ID by right-clicking it in Slack and selecting View channel details; the ID is at the bottom.

DM access defaults to pairing mode, which requires explicit approval for each user:

# User sends a DM, gets a pairing code
# Admin approves:
openclaw pairing approve slack ABC123

For team deployments, switch to allowlist and specify which user IDs can DM the bot:

{
  "channels": {
    "slack": {
      "dmPolicy": "allowlist",
      "allowFrom": ["U01USER1", "U02USER2", "U03USER3"]
    }
  }
}

Per-channel skills let you restrict what the agent can do in specific channels. Put your CRM skill in #sales but keep it out of #engineering. Give #ops access to your deployment skill but nobody else:

{
  "channels": {
    "slack": {
      "channels": {
        "C_SALES_CHANNEL": {
          "skills": ["hubspot", "team-knowledge"]
        },
        "C_OPS_CHANNEL": {
          "skills": ["deploy", "monitoring", "team-knowledge"]
        }
      }
    }
  }
}

This is one of the strongest reasons to use Slack over other channels. You get workspace-level governance over what your AI agent can access and where.


Frequently Asked Questions

Does OpenClaw’s Slack integration work without a public URL?

Yes. Socket Mode (the default) uses an outbound WebSocket connection from your machine to Slack. No inbound traffic, no public URL, no SSL certificates. This works behind firewalls, on home networks, and on VPSes without a domain name. HTTP mode is the only option that requires a publicly accessible endpoint.

What Slack plan do I need?

The free Slack plan works. Bot tokens, Socket Mode, event subscriptions, and app installations are all available on free-tier workspaces. Paid plans (Pro, Business+, Enterprise Grid) add features like longer message retention and compliance tools, but the OpenClaw integration itself does not require them.

Can I run multiple OpenClaw agents in the same Slack workspace?

Yes. Create a separate Slack App for each agent, each with its own bot token and app token. Configure them as separate accounts in OpenClaw’s config under channels.slack.accounts. Each agent gets its own identity, name, and avatar in Slack. Teams use this for role-based agents: one for engineering, one for sales, one for support.

What happens when OpenClaw takes too long to respond?

Slack expects an acknowledgment within 3 seconds of receiving an event. Socket Mode handles this automatically because OpenClaw sends an immediate ack over the WebSocket before the LLM starts processing. The actual response arrives when the model finishes. If you are using HTTP mode and your server is slow to acknowledge, Slack will retry the event up to 3 times, which can cause duplicate responses. This is one more reason Socket Mode is the better default.

How do I restrict which channels OpenClaw can access?

Set groupPolicy to allowlist in your Slack channel config and add specific channel IDs. The bot will ignore messages from any channel not on the list, even if it has been invited there. You can also set requireMention: true per channel so the bot only responds when explicitly @mentioned.

Can OpenClaw read and process file uploads in Slack?

Yes, if you added the files:read scope. When someone uploads a document, spreadsheet, or image to a channel where the bot is active, OpenClaw downloads the file using Slack’s authenticated URL flow and processes it. The default file size limit is 20MB, configurable via channels.slack.mediaMaxMb. For images, the agent can analyze them if you have a multimodal model configured.

Is it safe to give an AI agent access to my team’s Slack?

As safe as you configure it. Use allowlist group policy to limit channel access, requireMention to prevent the bot from reading every message, per-channel user lists to restrict who can trigger actions, and store all tokens in environment variables rather than config files. OpenClaw runs on your infrastructure, so messages pass between your machine and Slack directly, not through any third-party service beyond your LLM provider. The biggest risk in team settings is the bot responding to something it should not. Start with read-only skills and expand from there.

How do I set up slash commands with OpenClaw?

Add the commands scope to your Slack App, then register your commands in the Slash Commands section of the app settings. In OpenClaw config, either enable native command mode (channels.slack.commands.native: true) and register matching command names, or use a single catch-all slash command. Register /agentstatus instead of /status because Slack reserves certain command names.


Key Takeaways

  • Connect Slack to OpenClaw by creating a Slack App with bot scopes, generating an App Token (for Socket Mode) and Bot Token, and adding them to your OpenClaw config
  • Socket Mode is the right default for most teams: no public URL needed, works behind firewalls, and handles Slack’s 3-second acknowledgment requirement automatically
  • The real value comes after the connection: build team Q&A bots, standup automations, and channel monitors rather than treating the bot as a shared chat window
  • Use per-channel skills and user allowlists to control what the agent can access in each channel
  • Start with read-only skills in week one, add write operations in week two, and automate channel monitoring in week three

Last Updated: Apr 7, 2026

SL

SFAI Labs

SFAI Labs helps companies build AI-powered products that work. We focus on practical solutions, not hype.

Need Help Setting Up OpenClaw?

  • VPS deployment, SSL, and security hardening done for you
  • Integration configuration — connect your tools on day one
  • Custom skill development for your specific workflows
Get OpenClaw Setup Help →
No commitment · Free consultation

Related articles