Getting StartedIntegrations·2 min read

How to Connect OpenClaw to Telegram, Slack, and Discord (Step-by-Step)

Setting up channel integrations is where most first-time OpenClaw users get stuck. Here's the exact process for each major platform — and what to do when it doesn't work.

Cover Image for How to Connect OpenClaw to Telegram, Slack, and Discord (Step-by-Step)

OpenClaw's value comes from being available where your team actually communicates.

That means connecting it to Telegram, Slack, or Discord. The process for each is different, and each has its own common failure points. This guide covers all three with the exact steps — not just "configure the webhook" but the specific fields, where to find them, and what to do when something goes wrong.

Before You Start

You'll need:

  1. A running OpenClaw instance (self-hosted or managed)
  2. Admin access to the channel you're connecting
  3. About 15–30 minutes depending on the platform

Connecting Telegram

Telegram is the most common OpenClaw integration and the most straightforward.

Step 1: Create a Telegram Bot

  1. Open Telegram and search for @BotFather
  2. Send /newbot
  3. Choose a display name (e.g., "My Company Assistant")
  4. Choose a username — must end in bot (e.g., mycompanyassistant_bot)
  5. BotFather sends you a token. Copy this immediately — you'll need it.

Your token looks like: 7234567890:AAHdqTcvCH1vGBJ5T6TqgNx_NZOR3Kn7a_s

Step 2: Configure OpenClaw

In your OpenClaw config, add:

TELEGRAM_BOT_TOKEN=7234567890:AAHdqTcvCH1vGBJ5T6TqgNx_NZOR3Kn7a_s
TELEGRAM_MODE=webhook  # or 'polling' for local testing

For webhook mode (recommended for production):

TELEGRAM_WEBHOOK_URL=https://yourdomain.com/webhook/telegram

Step 3: Register the Webhook

curl -X POST "https://api.telegram.org/bot{YOUR_TOKEN}/setWebhook" \
  -d "url=https://yourdomain.com/webhook/telegram"

Step 4: Test

Send a message to your bot on Telegram. It should respond within a few seconds.

Common failure: Webhook URL is HTTP, not HTTPS. Telegram requires HTTPS for webhooks. Solution: configure SSL on your domain or use polling mode during development.

Polling vs Webhook

Polling (bot constantly checks for new messages) works everywhere including localhost. Webhook (Telegram pushes messages to your URL) is more efficient but requires a public HTTPS URL. Use polling for testing, webhook for production.

Connecting Slack

Slack requires creating an "app" in Slack's developer portal. More steps than Telegram, but the result is a fully integrated workspace bot.

Step 1: Create a Slack App

  1. Go to api.slack.com/apps
  2. Click "Create New App" → "From scratch"
  3. Name your app and select your workspace
  4. Under "OAuth & Permissions", add these Bot Token Scopes:
    • app_mentions:read — respond to @mentions
    • chat:write — send messages
    • channels:history — read message history (for context)
    • im:history — read DMs
    • im:read — access DM channels
    • im:write — send DMs

Step 2: Enable Event Subscriptions

  1. In your app settings, go to "Event Subscriptions"
  2. Toggle "Enable Events" on
  3. Set Request URL to: https://yourdomain.com/webhook/slack
  4. Subscribe to these bot events:
    • app_mention — respond when @mentioned
    • message.im — respond to DMs

Step 3: Get Your Credentials

From "OAuth & Permissions":

  • Bot User OAuth Token (starts with xoxb-)

From "Basic Information":

  • Signing Secret

Step 4: Configure OpenClaw

SLACK_BOT_TOKEN=xoxb-your-token-here
SLACK_SIGNING_SECRET=your-signing-secret-here
SLACK_WEBHOOK_PATH=/webhook/slack

Step 5: Install the App

In Slack's portal, click "Install to Workspace". Authorize the permissions. Your bot appears in the workspace.

Step 6: Test

In any Slack channel where the bot is added, type @YourBotName hello. It should respond.

Common failure 1: Request URL verification fails. OpenClaw needs to be running and publicly accessible when you save the URL. Slack sends a challenge request immediately.

Common failure 2: Bot doesn't respond in channels. Make sure you've added the bot to the channel with /invite @YourBotName.

6permission scopes required for a fully functional Slack botMissing scopes cause silent failures — the bot is present but doesn't respond to certain message types

Connecting Discord

Discord integration uses a Bot application, similar to Slack but with Discord's permission system.

Step 1: Create a Discord Application

  1. Go to discord.com/developers/applications
  2. Click "New Application" and name it
  3. Go to the "Bot" section and click "Add Bot"
  4. Under "Privileged Gateway Intents", enable:
    • Message Content Intent — required to read message content
  5. Copy the Bot Token

Step 2: Set Bot Permissions

In the "OAuth2 → URL Generator" section:

  • Scopes: bot, applications.commands
  • Bot Permissions: Send Messages, Read Message History, View Channels

Copy the generated URL and use it to invite the bot to your server.

Step 3: Configure OpenClaw

DISCORD_BOT_TOKEN=your-bot-token-here
DISCORD_GUILD_ID=your-server-id  # optional: limits to one server

Step 4: Test

Message the bot directly or @mention it in a channel where it has access.

Common failure: "Message Content Intent" not enabled. Discord requires explicit opt-in to read message content. If this intent is missing, the bot sees messages but gets empty content — and can't respond meaningfully.

Running Multiple Channels Simultaneously

OpenClaw supports multiple channel integrations on one instance. A single bot can be available on Telegram, Slack, and Discord at the same time, with the same configuration and personality.

This is useful for teams that use multiple platforms, or for businesses that want to support customers on their preferred channel.

Configuration:

# All three can be active simultaneously
TELEGRAM_BOT_TOKEN=...
SLACK_BOT_TOKEN=...
DISCORD_BOT_TOKEN=...
💡

Per-channel personalities

Some teams prefer different bot names and system prompts per channel — a formal tone for customer-facing Telegram, more casual for internal Slack. This requires separate OpenClaw instances.

When Things Don't Work

Messages received but no response: Check API key validity and spending limits on your AI provider.

Bot connects but crashes after a few messages: Memory or skill issue. Check logs immediately after a crash.

Works in testing but not production: Usually a webhook URL issue (HTTP vs HTTPS, wrong path, firewall blocking inbound traffic).

Responds slowly: Model latency + skill latency. Switch to a faster model (Haiku, Flash Lite) for latency-sensitive use cases.

The Setup Time Reality

Self-hosted integration setup times vary significantly:

  • Telegram: 20–40 minutes
  • Slack: 45–90 minutes (most complex due to permission scopes)
  • Discord: 30–60 minutes

On Clawfleet, each integration is a form field. Select Telegram, paste your bot token, click save. About 2 minutes per channel.

Connect your channels in minutes

Telegram, Slack, Discord, and more — all configurable from the dashboard. No webhook setup required.

Get started
Share: