Connect OpenClaw to Telegram, WhatsApp, Discord, Slack and iMessage
Step-by-step setup for every chat channel OpenClaw supports, plus how to debug a connection that refuses to come up.
OpenClaw's defining feature is that it lives where you already are. Once a channel is connected, you message your assistant from any device that has the chat app installed β no extra apps, no new login. This tutorial walks through every supported channel, with the exact configuration each one needs.
How channels work
Every chat channel in OpenClaw is a small adapter inside the Gateway. The adapter:
- Polls or receives messages from the chat platform.
- Translates them into the internal "chat message" envelope.
- Forwards the reply back to the same thread.
Adapters are stateless from your perspective β they are configured once and then just work. You can connect as many channels as you want at the same time; the same assistant instance talks to all of them.
Telegram
Telegram is the easiest channel to bring up because it uses a plain bot token.
- Open Telegram and message @BotFather.
- Run
/newbot, give it a display name and a unique username. - Copy the bot token Telegram returns.
- In OpenClaw, run:
openclaw channels add telegram --token ""
- Open a chat with your bot in Telegram and send
hello. The assistant replies within seconds.
To remove the channel later:
openclaw channels remove telegram
Restricting who can talk to the bot
openclaw channels set telegram --allow-user "@your_telegram_handle"
You can pass --allow-user multiple times. Anyone outside the allow-list is silently ignored.
WhatsApp uses the linked-device protocol β there is no API token, you scan a QR code from your phone the same way you would for WhatsApp Web.
openclaw channels add whatsapp
The terminal prints a QR code. Open WhatsApp on your phone β Settings β Linked Devices β Link a Device, and scan it.
~/.openclaw/channels/whatsapp. Do not share that folder; anyone with it can send messages as you.Pairing a phone number
To give your assistant a real phone number (so people can call or text it), OpenClaw supports Twilio integration:
openclaw integrations add twilio \\
--account-sid "" \\
--auth-token "" \\
--number "+14155550199"
Buy a number in the Twilio console first, then paste the SID, auth token and E.164 number above.
Discord
Discord uses a bot token and a privileged intents flag.
- Visit the Discord Developer Portal and create a New Application.
- Open Bot in the sidebar, click Add Bot, then Reset Token and copy it.
- Under Privileged Gateway Intents, enable Message Content Intent.
- Invite the bot to your server using the OAuth2 β URL Generator with the
botscope and theSend Messagespermission. - Back in the terminal:
openclaw channels add discord \\
--token "" \\
--guild ""
Mention your bot (@YourBot hello) in any channel it has access to and it will reply.
Slack
Slack uses a Socket Mode app token so the Gateway can receive events without exposing a public URL.
- Create a new Slack app at api.slack.com/apps.
- Enable Socket Mode and generate an App-Level Token with
connections:write. - Under OAuth & Permissions, add the scopes
chat:write,app_mentions:read,im:history,im:read,im:write. - Install the app to your workspace and copy the Bot User OAuth Token.
- Configure OpenClaw:
openclaw channels add slack \\
--bot-token "" \\
--app-token ""
Mention your bot or DM it directly. Slack DMs work out of the box; channel conversations require the bot to be invited with /invite @YourBot.
iMessage (macOS only)
The iMessage adapter uses Apple's native Messages app on macOS, so it requires Full Disk Access.
- Open System Settings β Privacy & Security β Full Disk Access and add OpenClaw.
- In the terminal:
openclaw channels add imessage
- Grant the permission prompt that appears.
iMessage conversations are end-to-end encrypted with your contacts β OpenClaw simply reads and writes through the local Messages database.
Signal, Matrix, Email and more
The ecosystem ships additional adapters:
| Channel | Package | Notes |
|---|---|---|
| Signal | openclaw-signal | Uses signal-cli underneath |
| Matrix | openclaw-matrix | E2EE homeserver bridges |
openclaw-email | IMAP + SMTP via app passwords | |
| Webhook | built-in | Exposes /incoming on the Gateway |
Install any of them the same way:
openclaw integrations install openclaw-email
openclaw channels add email --imap imap.gmail.com --user you@gmail.com
Debugging a channel that will not connect
Run:
openclaw doctor --channel telegram
It walks through every check the Gateway performs when bringing a channel up: token validity, network reachability, scope mismatch, gateway latency. The output is intentionally verbose β paste the failing block into a contact form ticket if you get stuck.
You can also stream live logs for a single channel:
openclaw logs --channel telegram --follow
Routing messages to different skills
When you have multiple channels connected, you can route by chat ID so the same assistant instance behaves differently in different rooms:
openclaw routes add \\
--match "channel=telegram,chat_id=123456789" \\
--skill personal
This is handy for keeping work replies and family replies on separate skill sets.
Removing a channel
openclaw channels remove
Removing a channel revokes the local credentials. Tokens you issued on the platform itself (BotFather, Slack app, Discord bot) still exist on the platform until you delete them there.
Next steps
- Once channels are up, teach your assistant reusable skills so it can call your calendar, your CRM or your CI.
- Use memory so the assistant remembers who your colleagues are across channels.
- When a channel misbehaves, head to Troubleshooting.
Found an issue or have a correction? Get in touch.