Skip to main content

Channel setup

WednesdayAI connects to messaging platforms through channels. Each channel handles incoming messages, outgoing replies, and account pairing. Several channels are built in; others ship as plugins you install separately.

Available channels

WhatsApp

Personal and business WhatsApp via the linked-device protocol

Telegram

Telegram bot — full Bot API support

iMessage

iMessage via BlueBubbles (recommended) or legacy imsg

Signal

Signal via signal-cli

Slack

Slack app — Socket Mode or HTTP Events API

Discord

Discord bot via the Bot API and Gateway

Microsoft Teams

Teams via Bot Framework (plugin)

Matrix

Matrix/Element, with E2EE support (plugin)
WednesdayAI supports around twenty channels in total. Beyond those above, plugins exist for Feishu/Lark, Google Chat, IRC, LINE, Mattermost, Nextcloud Talk, Nostr, Synology Chat, Tlon, Twitch, Zalo, and Zalo Personal. The built-in Web chat needs no setup.

General setup flow

Every channel follows the same pattern:
  1. Install the plugin (only for non-bundled channels — Teams, Matrix, and others)
  2. Authenticate — login wizard, bot token, or QR
  3. Configure access policies — who can talk to the bot
  4. Pair the channel to your agent
  5. Test with a message
openclaw channels list                        # see installed channels
openclaw channels login --channel <name>      # authenticate
openclaw channels status --channel <name>     # check connectivity

Access policies

After connecting a channel, configure who can interact with the agent. The DM policy is set per channel under channels.<channel>.dmPolicy:
{
  channels: {
    whatsapp: {
      enabled: true,
      dmPolicy: "allowlist",       // pairing | allowlist | open | disabled
      allowFrom: ["+15555550123"],
    },
    telegram: {
      enabled: true,
      botToken: "<YOUR_TOKEN>",
      dmPolicy: "pairing",
    },
  },
}
PolicyEffect
pairing (default)New senders get a one-time pairing code; ignored until approved
allowlistOnly allowFrom entries can initiate — requires at least one entry
openAll senders accepted — requires allowFrom: ["*"]
disabledDMs not accepted on this channel
channels.defaults only accepts groupPolicy and heartbeat. Setting dmPolicy there will make the gateway refuse to start — configure it on each channel.
See Security hardening for the implications of each policy.

Pairing

Most channels require pairing a specific account to the agent. New senders under dmPolicy: "pairing" receive a code; approve it:
openclaw pairing list <channel>
openclaw pairing approve <channel> <CODE>
Pairing codes are 8 characters, expire after 1 hour, and are capped at 3 pending per channel. On subsequent startups the gateway reconnects automatically using stored credentials.

Relinking

If a channel disconnects or credentials expire:
openclaw channels logout --channel <name>
openclaw channels login --channel <name>

Channel logs

openclaw channels logs --channel <name> --follow

Per-channel guides

WhatsApp

Telegram

Discord

Slack

Signal

iMessage

Microsoft Teams

Matrix