> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wednesdayai.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Channel setup

> Connect WednesdayAI to messaging platforms: WhatsApp, Telegram, iMessage, Signal, Slack, Discord, Teams, Matrix, and more.

# 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

<CardGroup cols={2}>
  <Card title="WhatsApp" href="/admin/channels/whatsapp" icon="message-circle">
    Personal and business WhatsApp via the linked-device protocol
  </Card>

  <Card title="Telegram" href="/admin/channels/telegram" icon="send">
    Telegram bot — full Bot API support
  </Card>

  <Card title="iMessage" href="/admin/channels/imessage" icon="apple">
    iMessage via BlueBubbles (recommended) or legacy imsg
  </Card>

  <Card title="Signal" href="/admin/channels/signal" icon="shield">
    Signal via signal-cli
  </Card>

  <Card title="Slack" href="/admin/channels/slack" icon="hash">
    Slack app — Socket Mode or HTTP Events API
  </Card>

  <Card title="Discord" href="/admin/channels/discord" icon="gamepad-2">
    Discord bot via the Bot API and Gateway
  </Card>

  <Card title="Microsoft Teams" href="/admin/channels/msteams" icon="grid">
    Teams via Bot Framework (plugin)
  </Card>

  <Card title="Matrix" href="/admin/channels/matrix" icon="grid-2x2">
    Matrix/Element, with E2EE support (plugin)
  </Card>
</CardGroup>

<Note>
  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.
</Note>

## 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

```bash theme={"dark"}
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`:

```json5 theme={"dark"}
{
  channels: {
    whatsapp: {
      enabled: true,
      dmPolicy: "allowlist",       // pairing | allowlist | open | disabled
      allowFrom: ["+15555550123"],
    },
    telegram: {
      enabled: true,
      botToken: "<YOUR_TOKEN>",
      dmPolicy: "pairing",
    },
  },
}
```

| Policy              | Effect                                                              |
| ------------------- | ------------------------------------------------------------------- |
| `pairing` (default) | New senders get a one-time pairing code; ignored until approved     |
| `allowlist`         | Only `allowFrom` entries can initiate — requires at least one entry |
| `open`              | All senders accepted — requires `allowFrom: ["*"]`                  |
| `disabled`          | DMs not accepted on this channel                                    |

<Note>
  `channels.defaults` only accepts `groupPolicy` and `heartbeat`. Setting `dmPolicy` there will make the gateway refuse to start — configure it on each channel.
</Note>

See [Security hardening](/admin/security) 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:

```bash theme={"dark"}
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:

```bash theme={"dark"}
openclaw channels logout --channel <name>
openclaw channels login --channel <name>
```

## Channel logs

```bash theme={"dark"}
openclaw channels logs --channel <name> --follow
```

## Per-channel guides

<CardGroup cols={3}>
  <Card title="WhatsApp" href="/admin/channels/whatsapp" />

  <Card title="Telegram" href="/admin/channels/telegram" />

  <Card title="Discord" href="/admin/channels/discord" />

  <Card title="Slack" href="/admin/channels/slack" />

  <Card title="Signal" href="/admin/channels/signal" />

  <Card title="iMessage" href="/admin/channels/imessage" />

  <Card title="Microsoft Teams" href="/admin/channels/msteams" />

  <Card title="Matrix" href="/admin/channels/matrix" />
</CardGroup>
