Complete reference for openclaw message, sending, reacting, polling, editing, broadcasting, and platform-specific actions across all configured channels.

What does Openclaw Message do?
It’s the CLI interface for all outbound and interactive message operations across every channel OpenClaw supports. A single command surface handles sending text or media, creating polls, reacting to messages, reading chat history, editing or deleting sent messages, managing pins, and broadcasting to multiple targets at once.
Everything routes through the same flag pattern: specify –channel to pick the platform, –target to address the recipient or channel, and the subcommand to define the action.
The Most Common Stumbling Block: –target Format
Every channel uses a different ID format for the –target flag: Slack uses channel:C…, Discord uses channel:<id>, WhatsApp uses a phone number in E.164 format, and so on. Getting this wrong results in a routing error.
Check the Target Formats table below before constructing a command. If you aren’t sure which channels are currently active or what their aliases are, refer to the Openclaw Channels Command List to verify your connected accounts and resolve specific peer IDs before sending your message.
Basic Usage & Channel Selection
All message commands follow the same base pattern. Channel and account flags scope every command to the right connection.
command pattern
openclaw message <subcommand> [flags]
| Flag | Description |
|---|---|
--channel <name> | Required if you have more than one channel configured. Accepts: whatsapp telegram discord googlechat slack mattermost signal imessage msteams |
--account <id> | Targets a specific account in a multi-account setup. Defaults to the channel’s default account. |
Target Formats (–target)
The –target format is channel-specific. Using the wrong format will either error or silently misroute. Use the exact formats below.
| Channel | Accepted –target formats |
|---|---|
| E164 phone number or group JID | |
| Telegram | Numeric chat ID or @username |
| Discord | channel:<id> or user:<id>, raw numeric IDs are treated as channels |
| Slack | channel:<id> or user:<id>, raw channel IDs are accepted |
| MS Teams | conversation:<id>, user:<aad-object-id>, or a raw conversation ID (e.g. 19:@thread.tacv2) |
| Signal | +E164, group:<id>, uuid:<id>, or username:<name> |
| iMessage | chat_id:<id>, chat_guid:<guid>, or a handle |
| Google Chat | spaces/<spaceId> or users/<userId> |
| Mattermost | channel:<id>, user:<id>, or @username |
For Discord and Slack, OpenClaw attempts to resolve human-readable names (like #help or Help) via the directory cache or live directory lookups. When in doubt, use openclaw directory peers list or openclaw channels resolve to get the exact internal ID first.
Core Subcommands
The eight core actions that work across most configured channels.
openclaw message send
Sends a message or media to a target. Supports replies, threads, and platform-specific interactive components.
| Required –target | –message or | –media | Optional –reply-to | –thread-id | –gif-playback | –buttons (Telegram) | –components (Discord) |
openclaw message poll
Creates a poll in the target chat. Pass –poll-option multiple times for each answer choice.
| Required –target | –poll-question | –poll-option (repeatable) | Optional –poll-multi | –poll-duration-seconds | –poll-duration-hours | –poll-anonymous | –poll-public | –silent |
openclaw message react
Adds an emoji reaction to a specific message. Requires the message ID from the target channel.
| Required –target | –message-id | –emoji |
openclaw message read
Fetches messages from a chat. Supported on Discord and Slack.
| Required –target | Optional –limit | –before | –after |
openclaw message edit / delete
Modifies or removes a previously sent message. Requires the message ID. edit also requires the new –message text.
| Optional –limit | –before | –after | Required –target | –message-id | –message (edit only) |
openclaw message pin / unpin / pins
Manages pinned messages in a channel. pin pins a message, unpin removes it, and pins lists all currently pinned messages in the target.
openclaw message broadcast
Sends a message to multiple targets across any configured channel. Pass –targets multiple times. Use –channel all to broadcast across all providers at once.
| Required –targets (repeatable) |
Advanced & Platform-Specific Subcommands
Platform-specific operations for threads, Discord moderation, server management, and media.
| message thread Manage message threads. Supports create, list, and reply sub-actions. | message timeout / kick / ban Discord moderation actions. Requires –guild-id and –user-id. Optionally accepts –reason. |
| message role Role management. Supports info, add, and remove sub-actions. | message channel Channel inspection. Supports info and list sub-actions. |
| message member info Fetches member details from a server or guild. | message emoji Emoji management. Supports list and upload sub-actions. |
| message sticker Sticker operations. Supports send and upload sub-actions. |
Examples
Five working patterns across different channels and actions.
01 Send a basic message to WhatsAppWhatsApp
openclaw message send --target +15555550123 --message "Hello from OpenClaw"
02 Reply to a specific Discord messageDiscord
openclaw message send --channel discord --target channel:123 --message "hi" --reply-to 456
03 Create a multi-option Discord poll that lasts 48 hoursDiscord
openclaw message poll --channel discord \ --target channel:123 \ --poll-question "Snack?" \ --poll-option Pizza --poll-option Sushi \ --poll-multi --poll-duration-hours 48
04 React to a Slack messageSlack
openclaw message react --channel slack --target C123 --message-id 456 --emoji "✅"
05 Send Telegram inline buttonsTelegram
openclaw message send --channel telegram --target @mychat --message "Choose:" \
--buttons '[ [{"text":"Yes","callback_data":"cmd:yes"}], [{"text":"No","callback_data":"cmd:no"}] ]'
