JUHE API Marketplace

OpenClaw Multi-Channel Assistant: Telegram, Slack, Email, Calendar

8 min read
By Olivia Bennett

AI Multi-Channel Customer Support Automation: The Fragmented Inbox Problem

A small e-commerce business receives customer messages across four channels simultaneously: WhatsApp DMs asking about order status, Instagram comments on product posts that need a public reply, email tickets with return requests, and Google Reviews that affect local search ranking if left unanswered for days.

Four channels. Four login sessions. No shared view of whether a customer who commented on Instagram also sent a WhatsApp message about the same issue. Average first-response time degrades. Review replies accumulate. Off-hours messages go unanswered entirely.

This tutorial is one of the most directly useful OpenClaw use cases in the Communication & CRM category. It configures a single OpenClaw agent — connected to all four channels through a unified routing schema — that generates on-brand responses via WisGate and automatically escalates edge cases to a human queue.


By the end of this tutorial you'll have a working multi-channel customer service agent routing WhatsApp messages, Instagram comments, email tickets, and Google Reviews through a single OpenClaw agent — generating responses via WisGate and escalating complex cases automatically. Test response quality against a real customer message at wisgate.ai/studio/image before connecting any live channel. Get your key at wisgate.ai/hall/tokens.


What the Multi-Channel Agent Does

Every incoming message — regardless of channel — is normalized to a shared schema and passed to a single OpenClaw agent. The agent classifies the message type, selects the appropriate response format and tone, generates the reply, and either auto-sends or routes to a human queue based on escalation rules.

Four-channel routing table:

ChannelConnectorMessage typeResponse format
WhatsAppWhatsApp Business APIPrivate DMConversational, 150-word max
InstagramInstagram Graph APIPublic commentBrief, brand-consistent, public-safe
EmailSMTP/IMAP or webhookSupport ticketFormal, structured, with ticket ID
Google ReviewsGoogle My Business APIPublic reviewEmpathetic, professional, SEO-aware

Instagram and Google Reviews are public channels — responses are visible to anyone. The agent applies a hard rule to both: never include order details in a public reply. For order-specific issues on public channels, the agent acknowledges publicly and directs the customer to a private channel.


OpenClaw + WisGate Configuration

Step 1 — Open the configuration file

curl
nano ~/.openclaw/openclaw.json

Step 2 — Add the WisGate provider

json
"models": {
  "mode": "merge",
  "providers": {
    "moonshot": {
      "baseUrl": "https://api.wisgate.ai/v1",
      "apiKey": "WISGATE-API-KEY",
      "api": "openai-completions",
      "models": [
        {
          "id": "claude-sonnet-4-5",
          "name": "Claude Sonnet 4.5",
          "reasoning": false,
          "input": ["text"],
          "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
          "contextWindow": 256000,
          "maxTokens": 8192
        }
      ]
    }
  }
}

Replace WISGATE-API-KEY with your key from wisgate.ai/hall/tokens. Confirm claude-sonnet-4-5 pricing at wisgate.ai/models.

Step 3 — Save and restart

  • Ctrl + OEnterCtrl + X to save and exit
  • Ctrl + C to stop, then run openclaw tui

Why Claude Sonnet for customer service: customer service responses require consistent tone management, channel-appropriate formatting, and reliable constraint adherence — response length limits, escalation triggers, and brand vocabulary rules. These are structured, well-defined generation tasks. Sonnet handles them reliably, and at scale the per-response cost difference versus Opus makes a meaningful difference. Confirm current pricing at wisgate.ai/models.

Create a dedicated key: label it openclaw-customer-service at wisgate.ai/hall/tokens. If this agent's key needs to be rotated, other OpenClaw automations are unaffected.

Note: OpenClaw was previously known as ClawdBot and MoltBot. These steps apply to all versions.


Claude API WhatsApp Chatbot: Channel Connector Configuration

Each channel requires its own connector before the OpenClaw agent can receive and respond to messages. Configure all four connectors first, then wire them to the agent.

WhatsApp: Set up a WhatsApp Business API account via Meta for Developers. Configure a webhook at POST https://your-server.com/incoming/whatsapp. Normalize each incoming message to: {channel: "whatsapp", sender: [phone], content: [text], thread_id: [wa_message_id]}.

Instagram: Enable comments and mentions webhooks via the Instagram Graph API on your business profile. Normalize to: {channel: "instagram", sender: [username], content: [comment_text], thread_id: [media_id + comment_id]}.

Email: Use an SMTP/IMAP integration or an email webhook service. Normalize to: {channel: "email", sender: [from_address], content: [body_text], thread_id: [message_id]}.

Google Reviews: Poll for new reviews via the Google My Business API on a 15-minute cron. Normalize to: {channel: "google_reviews", sender: [reviewer_name], content: [review_text], thread_id: [review_id]}.

All four normalized message objects pass to the same OpenClaw agent using the unified schema. The Unified Response System Prompt and Escalation Rules

Paste this template into your OpenClaw conversation context for the customer service agent:

You are the customer service agent for [BUSINESS NAME].

CHANNEL ROUTING:
Apply the correct response format per channel:
- WhatsApp: conversational tone, max 150 words, no formal salutation
- Instagram: public-safe, max 80 words, professional and warm, no order details
- Email: formal salutation, structured paragraphs, include ticket ID [TICKET_ID]
- Google Reviews: empathetic opening, address the specific point raised,
  max 120 words, close with invitation to contact directly

BRAND TONE:
[Insert 3–5 brand vocabulary rules — e.g.: always say "we'd be happy to"
not "sure"; never use "unfortunately"; always close with "the [BRAND] team"]

RESPONSE RULES:
1. Address the specific issue raised — no generic responses
2. Never share order details on public channels (Instagram, Google Reviews)
3. For order-specific issues on public channels: acknowledge publicly,
   direct to private channel
4. Always include the correct follow-up contact method per channel

ESCALATION TRIGGERS — route to human queue, do not auto-send:
- Any mention of legal action, refund dispute, or regulatory complaint
- Negative Google Review with a 1 or 2 star rating (flag for manager response)
- Any message containing profanity directed at staff
- Any question requiring access to live order data

ESCALATION FORMAT:
When escalating, return:
ESCALATE: [channel] | [sender] | [reason] | [original message]
Do not generate a response body for escalated messages.

Customize the escalation trigger list and brand tone block first — these are the highest-leverage sections for each specific business.


The WisGate API Call

The response generation call your server makes on each incoming message:

curl
curl -s -X POST "https://api.wisgate.ai/v1/chat/completions" \
  -H "Authorization: Bearer $WISDOM_GATE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-5",
    "messages": [
      {
        "role": "system",
        "content": "[PASTE UNIFIED RESPONSE SYSTEM PROMPT HERE]"
      },
      {
        "role": "user",
        "content": "Channel: [CHANNEL]\nSender: [SENDER]\nMessage: [CONTENT]\nThread ID: [THREAD_ID]"
      }
    ],
    "max_tokens": 512
  }' | jq -r '.choices[0].message.content'

max_tokens: 512 covers the longest channel response format (email) with headroom for the escalation format string. Set lower for WhatsApp-only deployments.

Per-response token estimate: approximately 800 tokens input (system prompt + message) + 200 tokens output ≈ 1,000 tokens per response. Confirm claude-sonnet-4-5 per-token pricing from wisgate.ai/models before projecting monthly cost at your expected message volume.

OpenClaw Use Cases: Cost Per 1,000 Responses

Per-response token estimate:

ItemTokens
System prompt~600
Incoming message~200
Response output~200
Total per response~1,000

Cost per 1,000 responses — confirm claude-sonnet-4-5 pricing from wisgate.ai/models:

VolumeModelWisGate costDirect API cost
1,000 responsesclaude-sonnet-4-5Confirm + calculateConfirm + calculate
10,000 responses/monthclaude-sonnet-4-5Confirm + calculateConfirm + calculate

Insert confirmed figures before publishing. Human agent handling at 30 tickets per hour makes a useful cost baseline for comparison — state the loaded hourly rate assumption explicitly alongside the automated response cost.

OpenClaw Use Cases: 24/7 Customer Service Coverage Across Four Channels

The system prompt is ready. The channel connectors are defined. The escalation rules are configured. The cost-per-response arithmetic is in the table above.

Deployment sequence: create the dedicated WisGate key → set up channel connector webhooks for each platform → paste the unified system prompt into OpenClaw → validate one response per channel at wisgate.ai/studio/image → activate live routing.

Start with one channel. Validate response quality and escalation accuracy for 48 hours before enabling the remaining three.


The agent configuration is complete. Generate your WisGate key at wisgate.ai/hall/tokens and test the unified system prompt against a real customer message at wisgate.ai/studio/image before connecting any live channel. One key covers all response generation — enable WhatsApp first, validate for 48 hours, then add Instagram, email, and Google Reviews in sequence.


OpenClaw Multi-Channel Assistant: Telegram, Slack, Email, Calendar | JuheAPI