---
summary: "Messaging platforms OpenClaw can connect to"
read_when:
  - You want to choose a chat channel for OpenClaw
  - You need a quick overview of supported messaging platforms
title: "Chat channels"
---

OpenClaw can talk to you on any chat app you already use. Each channel connects via the Gateway.
Text is supported everywhere; media and reactions vary by channel.

Entries marked "bundled plugin" or "included in core" ship with the core
install. Channels marked "official plugin" install with one command
(`openclaw plugins install @openclaw/<id>`) or on demand during
`openclaw onboard` / `openclaw channels add`, then need a Gateway restart.
"External plugin" channels are maintained outside the OpenClaw repo.

## Supported channels

<!-- BEGIN GENERATED: official channel catalog -->
<!-- Generated by `pnpm channels:catalog:gen`. Edit manifests/seed for membership and routes; edit page frontmatter for public names and summaries. -->

- [A2A](/channels/a2a) - Connect external agents to OpenClaw through the A2A 1.0 JSON-RPC protocol (bundled plugin).
- [Buzz](/channels/buzz) - Connect OpenClaw agents to Buzz rooms (official plugin).
- [ClickClack](/channels/clickclack) - ClickClack bot-token channel setup and target syntax (official plugin).
- [Discord](/channels/discord) - Discord bot setup, config keys, components, voice, and troubleshooting (official plugin).
- [Feishu](/channels/feishu) - Feishu bot overview, features, and configuration (official plugin).
- [Google Chat](/channels/googlechat) - Google Chat app support status, capabilities, and configuration (official plugin).
- [iMessage](/channels/imessage) - Native iMessage support via imsg (JSON-RPC over stdio), with private API actions for replies, tapbacks, effects, polls, attachments, and group management. Preferred for new OpenClaw iMessage setups when host requirements fit (official plugin).
- [IRC](/channels/irc) - IRC plugin setup, access controls, and troubleshooting (official plugin).
- [LINE](/channels/line) - LINE Messaging API plugin setup, config, and usage (official plugin).
- [Matrix](/channels/matrix) - Matrix support status, setup, and configuration examples (official plugin).
- [Mattermost](/channels/mattermost) - Mattermost bot setup and OpenClaw config (official plugin).
- [Microsoft Teams](/channels/msteams) - Microsoft Teams bot support status, capabilities, and configuration (official plugin).
- [Nextcloud Talk](/channels/nextcloud-talk) - Nextcloud Talk support status, capabilities, and configuration (official plugin).
- [Nostr](/channels/nostr) - Nostr DM channel via NIP-04 encrypted messages (official plugin).
- [QQ bot](/channels/qqbot) - QQ Bot setup, config, and usage (official plugin).
- [Raft](/channels/raft) - Raft External Agent support through the Raft CLI wake bridge (official plugin).
- [Reef](/channels/reef) - Reef channel setup: guarded, end-to-end-encrypted messaging between OpenClaw agents of different people (bundled plugin).
- [Signal](/channels/signal) - Signal support via signal-cli (native daemon or bbernhard container), setup paths, and number model (official plugin).
- [Slack](/channels/slack) - Slack setup and runtime behavior (Socket Mode, HTTP Request URLs, and relay mode) (official plugin).
- [SMS](/channels/sms) - Twilio SMS/MMS setup, access controls, webhooks, and delivery status (official plugin).
- [Synology Chat](/channels/synology-chat) - Synology Chat webhook setup and OpenClaw config (official plugin).
- [Telegram](/channels/telegram) - Telegram bot support status, capabilities, and configuration (bundled plugin).
- [Tlon](/channels/tlon) - Tlon/Urbit support status, capabilities, and configuration (official plugin).
- [Twitch](/channels/twitch) - Twitch chat bot: install, credentials, access control, token refresh (official plugin).
- [WebChat](/web/webchat) - Native and Control UI WebChat usage over the Gateway WebSocket (included in core).
- [WeChat](/channels/wechat) - WeChat channel setup through the external openclaw-weixin plugin (external plugin).
- [WeCom](/channels/wecom) - Install the official WeCom plugin and find its versioned setup documentation (external plugin).
- [WhatsApp](/channels/whatsapp) - WhatsApp channel support, access controls, delivery behavior, and operations (official plugin).
- [Yuanbao](/channels/yuanbao) - Yuanbao bot overview, features, and configuration (external plugin).
- [Zalo](/channels/zalo) - Zalo bot support status, capabilities, and configuration (official plugin).
- [Zalo ClawBot](/channels/zaloclawbot) - Zalo ClawBot channel setup through the external openclaw-zaloclawbot plugin (external plugin).
- [Zalo personal](/channels/zalouser) - Zalo personal account support via native zca-js (QR login), capabilities, and configuration (official plugin).

<!-- END GENERATED: official channel catalog -->

### Related communication plugins

- [Voice Call](/plugins/voice-call) - Telephony via Plivo, Telnyx, or Twilio (official plugin).

## Group join introductions

Discord, LINE, Matrix, Slack, and Telegram post one room-specific introduction when the bot
joins an allowed group, instead of joining silently. The introduction says what
the room appears to be for and names a few concrete jobs the bot could take on
there, grounded in what that platform can actually show it.

**Disabling.** Introductions are on by default. Turn them off per channel with
`channels.<channel>.joinIntro: false`, or override a single account with
`channels.<channel>.accounts.<accountId>.joinIntro`. Resolution order is the
account value, then the channel value, then the default of `true`. There is no
per-room switch, because a room is only configurable after the bot has already
joined it. Only Discord, LINE, Matrix, Slack, and Telegram accept this option; other channels
reject it rather than accepting a setting they never read.

**What it reads.** Core requests up to 100 recent messages plus room metadata,
then truncates the whole snapshot to 12,000 characters, dropping the oldest
messages first. What each platform can supply differs:

| Channel  | Room metadata                            | Prior messages                                  |
| -------- | ---------------------------------------- | ----------------------------------------------- |
| Discord  | Channel name, topic                      | Up to 100, only with `Read Message History`     |
| LINE     | Group name; none for multi-person rooms  | None - the Messaging API has no history reader  |
| Matrix   | Room name, topic                         | Up to 100 readable room messages                |
| Slack    | Channel name, purpose, topic             | Up to 100 via conversation history              |
| Telegram | Group title, description, pinned message | None - the Bot API cannot read pre-join history |

When history is unavailable or unreadable, the introduction is still posted from
room metadata alone and says what it can see rather than inventing activity.

**Where it posts.** LINE, Matrix, Slack, and Telegram introduce in the room that was joined.
Discord joins a server rather than a channel, so it uses the system channel when
it can both view and send there, otherwise the first text channel that qualifies;
if no channel qualifies, it records a skip instead of posting.

**How often.** Once per room. A durable claim is recorded per channel, account,
and room with a 90-day lifetime, so reconnects and gateway restarts do not repeat
an introduction. Discord additionally ignores server-available events older than
five minutes, so restarting never mass-introduces into servers the bot already
belonged to. Matrix ignores startup room snapshots and membership updates that
leave the bot joined, such as display-name changes. An unaccepted Matrix invite
does not trigger an introduction. A re-invite after the claim expires introduces again.

**Safety.** Room titles, topics, pinned text, and message history are third-party
content, so they are wrapped as untrusted external content and the introduction
turn runs with no tools available at all. Instructions embedded in a room cannot
reach a tool. The turn is bounded to 60 seconds, never runs in direct messages,
and never bypasses channel access policy - a room the bot is not allowed to act
in gets no introduction. Mention requirements do not apply, since a join event
carries no message to mention the bot in.

## Delivery notes

- Telegram replies that contain markdown image syntax, such as `![alt](url)`,
  are converted into media replies on the final outbound path when possible.
- Slack multi-person DMs route as group chats, so group policy, mention
  behavior, and group-session rules apply to MPIM conversations.
- WhatsApp setup is install-on-demand: onboarding can show the setup flow before
  the plugin package is installed, and the Gateway loads the external
  ClawHub/npm plugin only when the channel is actually active.
- Channels that accept bot-authored inbound messages can use shared
  [bot loop protection](/channels/bot-loop-protection) to prevent bot pairs from
  replying to each other indefinitely.
- Supported always-on rooms can use [ambient room events](/channels/ambient-room-events)
  so unmentioned room chatter becomes quiet context unless the agent sends with
  the `message` tool.

## Notes

- Channels can run simultaneously; configure multiple and OpenClaw will route per chat.
- Fastest setup is usually **Telegram** (simple bot token, no plugin install). WhatsApp
  requires QR pairing and stores more state on disk.
- Group behavior varies by channel; see [Groups](/channels/groups).
- DM pairing and allowlists are enforced for safety; see [Security](/gateway/security).
- Troubleshooting: [Channel troubleshooting](/channels/troubleshooting).
- Model providers are documented separately; see [Model Providers](/providers/models).
