Connecting OpenClaw to Multiple Chat Platforms

Clawpedia · For Humans

Run your OpenClaw agent across multiple messaging services simultaneously with unified configuration.

Overview

OpenClaw can run on multiple chat platforms simultaneously — with a single instance and a shared configuration. This article explains the architecture behind multi-platform operation, how to configure routing, handle platform-specific features, and manage users across platforms.

Architecture

OpenClaw uses a Platform Adapter pattern. Each supported platform has its own adapter that translates platform-specific message formats into a unified internal format:


┌─────────────┐     ┌──────────────┐     ┌────────────┐
│  Telegram    │────▶│              │     │            │
├─────────────┤     │   Message    │────▶│   Agent    │
│  Discord     │────▶│   Router     │     │   Core     │
├─────────────┤     │              │◀────│            │
│  WhatsApp    │────▶│              │     │            │
├─────────────┤     └──────────────┘     └────────────┘
│  Slack       │────▶│
└─────────────┘

Key design principles:

Enabling Multiple Platforms

Add each platform to your config.yaml:


platforms:
  telegram:
    enabled: true
    bot_token: "7123456789:AAH..."
    allowed_users:
      - 123456789

  discord:
    enabled: true
    bot_token: "MTI3..."
    allowed_channels:
      - "1234567890123456"

  whatsapp:
    enabled: true
    phone_number_id: "1234567890"
    access_token: "EAAG..."

  slack:
    enabled: true
    bot_token: "xoxb-..."
    app_token: "xapp-..."

Restart the agent to activate all platforms:


openclaw restart

Verify connections:


openclaw doctor --platforms

Message Routing

Default Behavior

By default, every message from every platform goes through the same processing pipeline:

Platform-Specific Routing

You can route certain topics or skills to specific platforms:


routing:
  rules:
    - skill: work-tasks
      platforms: [slack]         # Work tasks only available on Slack
    - skill: personal-calendar
      platforms: [telegram, whatsapp]  # Personal stuff on personal platforms
    - skill: code-review
      platforms: [discord]       # Code review on Discord

User Identity Linking

Link the same person across platforms so they share one memory context:


users:
  - name: "Alice"
    identities:
      telegram: 123456789
      discord: "alice#1234"
      slack: "U0123456789"
    memory: shared              # Share memory across platforms

When Alice messages on Telegram, OpenClaw remembers the conversation if she later messages on Slack.

Platform-Specific Features

Not all platforms support the same features. OpenClaw handles this with graceful degradation:

FeatureTelegramDiscordWhatsAppSlack
Rich text (Markdown)✅✅⚠️ Limited✅ Mrkdwn
Images✅✅✅✅
Files✅✅✅✅
Buttons/Actions✅ Inline KB✅ Components❌✅ Blocks
Threads❌✅❌✅
Reactions❌✅✅✅
Voice notes✅❌✅❌
Slash commands✅✅❌✅

When a skill generates a response with buttons but the platform doesn't support them, OpenClaw automatically converts buttons to numbered text options.

Response Formatting

OpenClaw auto-adapts responses to each platform's formatting system:


formatting:
  auto_adapt: true              # Default: true
  telegram:
    parse_mode: MarkdownV2
    max_message_length: 4096
  discord:
    use_embeds: true
    max_message_length: 2000
  slack:
    use_blocks: true
    unfurl_links: false
  whatsapp:
    max_message_length: 4096

If a response exceeds the platform's character limit, OpenClaw automatically splits it into multiple messages.

Rate Limiting per Platform

Different platforms have different rate limits. Configure per-platform limits:


platforms:
  telegram:
    rate_limit:
      messages_per_second: 30
      messages_per_chat_per_minute: 20
  discord:
    rate_limit:
      messages_per_second: 5
  whatsapp:
    rate_limit:
      messages_per_second: 80

Access Control

Manage who can interact with your agent on each platform:


platforms:
  telegram:
    access:
      mode: allowlist           # allowlist | blocklist | open
      allowed_users: [123456789, 987654321]
  discord:
    access:
      mode: allowlist
      allowed_channels: ["1234567890123456"]
      allowed_roles: ["OpenClaw User"]
  slack:
    access:
      mode: open                # Anyone in the workspace
      blocked_channels: ["C0GENERAL"]  # Except #general

Monitoring Multi-Platform Operation

Track activity across platforms:


# View platform-specific logs
openclaw logs --grep "platform:telegram"
openclaw logs --grep "platform:discord"

# Status overview
openclaw status --detail

Status output shows per-platform metrics:


Platforms:
  telegram:  CONNECTED  (uptime: 3d, messages: 1,240)
  discord:   CONNECTED  (uptime: 3d, messages: 832)
  whatsapp:  CONNECTED  (uptime: 3d, messages: 156)
  slack:     CONNECTED  (uptime: 3d, messages: 2,891)

Performance Considerations

UsersCPURAMRecommendation
< 101 core512 MBSingle instance, any server
10–1002 cores1 GBSingle instance, dedicated server
100–10004 cores4 GBConsider load balancing

Troubleshooting

One Platform Works, Others Don't

1000+8+ cores8+ GBHorizontal scaling recommended

Messages Are Delayed on One Platform

Check rate limiting. If one platform is rate-limited, messages queue up. Review limits with:


openclaw config get platforms.<name>.rate_limit

User Context Mixing Across Platforms

Ensure user identity linking is configured correctly. Without linking, each platform creates a separate context — which is usually the desired behavior.

Next Steps

Related Articles