Operator
← Back to blog
GuidesMessaging

Set up your Slack channel on Operator

Operator TeamOperator Team··4 min read

Operator.io is managed OpenClaw, so connecting Slack happens on the dashboard. You still create your own Slack app, because Slack only talks to a registered app you install in your own workspace, but Operator handles the rest: it stores both tokens, restarts your agent, pairs your account, and sets the channel rules with form controls.

Operator and Slack

The one part of Slack that looks different from Telegram or Discord is the two tokens. Slack splits the work across a bot token that posts and reads messages and an app-level token that carries the realtime connection. Operator connects every instance over Socket Mode, Slack's websocket transport, because each agent runs behind an address that changes and cannot host the fixed request URL that Slack's HTTP mode expects. Socket Mode opens the connection outward from your agent instead, the same way the Telegram and Discord channels already work, which is why both tokens are needed.

Step 1: Create the Slack app

Open api.slack.com/apps, sign in, and click Create New App. The fastest path is from a manifest: the OpenClaw Slack guide publishes a ready manifest that turns Socket Mode on and fills in the scopes and event subscriptions for you, so you paste it in and skip most of the clicking. If you build from scratch instead, the next two steps set the same things by hand.

Name the app after your agent and pick the workspace you want it in. You can change the name and icon later under Basic Information.

Step 2: Turn on Socket Mode and make the app token

In the app settings sidebar, open Socket Mode and toggle Enable Socket Mode on. Slack then walks you through generating an App-Level Token, which it also lists under Basic Information in the App-Level Tokens section. Give it a name, add the connections:write scope, and generate it. Copy the token that appears; it starts with xapp- and you only see it once, so paste it somewhere safe for a moment.

That app token is the only credential that can open the Socket Mode connection. It does not post messages or read channels on its own, which is why you still need the bot token from the next step.

Step 3: Add the bot scopes and install

Open OAuth and Permissions and scroll to Bot Token Scopes. Add the scopes your agent needs to read and reply: app_mentions:read so it sees when you tag it, chat:write so it can post, im:history and im:read for direct messages, and channels:history for the public channels it joins. Add groups:history if you want it in private channels and users:read so it can resolve who is talking to it.

Scroll back to the top of the same page and click Install to Workspace, then review the permissions and click Allow. After it installs, Slack shows a Bot User OAuth Token that starts with xoxb-. Copy it. Slack's own reference on token types covers what each prefix means if you want the detail.

Step 4: Paste the tokens into Operator

Open the Channels page in your Operator dashboard, click Add, and pick Slack for your agent. Paste the Bot User OAuth Token in the first field and the App-Level Token in the second. For the third field, open your Slack profile, click the More button, the three dots, and choose Copy member ID, which gives you something like U0123ABCD. Paste that and click Connect.

Operator checks both tokens against Slack before it saves anything, so a mistyped token fails right away with a clear message rather than restarting into a bot that cannot connect. Once they pass, it stores them, restarts your agent to pick up the channel, and allowlists your member ID so you are paired the moment you message the bot. The restart takes a short while and the dashboard shows it. There is no openclaw.json to edit and no openclaw pairing approve to run from a terminal.

Step 5: Set the channel policy

Once the tokens are saved, the Slack panel shows a channel configuration section. The channel policy decides where the bot answers:

  • Disabled keeps it to direct messages only.
  • Open lets it respond in any channel it is invited to.
  • Allowlist limits it to the channels you name.

For most setups, pick allowlist and paste the channel IDs you want. To get a channel ID, open the channel, click its name to open the details, and the ID sits at the bottom of that panel (Slack's own walkthrough covers finding IDs). Invite the bot to each channel with /invite @yourbot, since Slack will not deliver a channel's messages to an app that is not a member. Leave the require mention toggle on in any channel with other people so the bot only replies when tagged, and turn it off in a channel that is just your own workspace if you want it to follow the whole conversation.

Talk to it, and where to go deeper

Open a direct message with the bot or mention it in an allowed channel, and it answers like any other coworker in the workspace. To give it real work to do, connect Composio or Pipedream on the Integrations page so it can reach Gmail, Notion, your calendar, and the other apps you already use from inside the same Slack thread.

If you would rather run the agent yourself instead of through the dashboard, the OpenClaw Slack channel docs cover the config file and the openclaw pairing approve slack flow, which is the self hosted version of everything above.

Frequently asked questions

How do I connect Slack to my Operator agent?

+

Create a Slack app at api.slack.com/apps, turn on Socket Mode, and generate an App-Level Token with the connections:write scope. Add the bot scopes, install the app to your workspace, and copy the Bot User OAuth Token. In Operator, open the Channels page, click Add, pick Slack, and paste the bot token (xoxb-), the app token (xapp-), and your Slack member ID. Operator stores both tokens, restarts your agent, and allowlists you.

Why does Slack need two tokens when Telegram and Discord need one?

+

Slack splits the job across two credentials. The bot token (xoxb-) is what your agent posts and reads with, and the app-level token (xapp-) opens the Socket Mode websocket that delivers events without a public URL. Operator runs every instance in Socket Mode because each one sits behind a dynamic address that cannot serve a fixed Slack request URL, so you generate both tokens in your app settings and paste them together.

Where do I find my Slack member ID?

+

Open Slack, click your name or avatar to open your profile, and choose View full profile if the menu shows it. Click the More button, the three dots, and pick Copy member ID at the bottom. It looks like U0123ABCD. Paste it into the member ID field when you connect, and Operator allowlists that account so you can message the bot right away while strangers who find it cannot.

Why is my Operator Slack bot installed but silent in a channel?

+

Two things gate channel replies. The bot has to be invited to the channel, with /invite @yourbot or by adding it from the channel details, and the channel has to be allowed under the Slack channel policy in Operator. Set the policy to allowlist and add the channel ID, or to open, and check the require mention toggle so the bot answers when tagged rather than reading every message in a busy room.