openclaw-whatsappWhatsApp bridge for OpenClaw — send/receive messages, auto-reply agents, QR pairing, message search, contact sync
Install via ClawdBot CLI:
clawdbot install 0xs4m1337/openclaw-whatsappWhatsApp bridge that connects OpenClaw agents to WhatsApp. Send messages, auto-reply to DMs with AI, search message history, and sync contacts — all from a single Go binary.
# Check status
openclaw-whatsapp status
# Send a message
openclaw-whatsapp send "NUMBER@s.whatsapp.net" "Your message"
# View logs (if running as service)
journalctl --user -u openclaw-whatsapp.service -f
# View worker logs
tail -f /tmp/openclaw-wa-agent/worker.log
Follow these steps to set up WhatsApp auto-reply from scratch.
curl -fsSL https://raw.githubusercontent.com/0xs4m1337/openclaw-whatsapp/main/install.sh | bash
Verify installation:
openclaw-whatsapp version
which openclaw
# Example output: /home/USER/.nvm/versions/node/v22.22.0/bin/openclaw
Save this path — you'll need it in Step 4.
Copy scripts from this skill directory:
SKILL_DIR="$(dirname "$(realpath "$0")")" # or use absolute path to skill
# Copy scripts
sudo cp "$SKILL_DIR/scripts/wa-notify.sh" /usr/local/bin/wa-notify.sh
sudo cp "$SKILL_DIR/scripts/wa-notify-worker.sh" /usr/local/bin/wa-notify-worker.sh
sudo chmod +x /usr/local/bin/wa-notify.sh /usr/local/bin/wa-notify-worker.sh
Or if running as agent, use the skill directory path directly:
cp ~/clawd/skills/openclaw-whatsapp/scripts/wa-notify.sh /usr/local/bin/
cp ~/clawd/skills/openclaw-whatsapp/scripts/wa-notify-worker.sh /usr/local/bin/
chmod +x /usr/local/bin/wa-notify.sh /usr/local/bin/wa-notify-worker.sh
Edit /usr/local/bin/wa-notify-worker.sh and update the PATH line with your openclaw binary path from Step 2:
# Find this line near the top:
export PATH="/home/oussama/.nvm/versions/node/v22.22.0/bin:$PATH"
# Change it to your actual path:
export PATH="/home/YOUR_USER/.nvm/versions/node/vXX.XX.X/bin:$PATH"
Also update the worker script path in /usr/local/bin/wa-notify.sh:
# Find this line near the bottom:
nohup /home/oussama/dev/openclaw-whatsapp/scripts/wa-notify-worker.sh
# Change to:
nohup /usr/local/bin/wa-notify-worker.sh
mkdir -p ~/.openclaw-whatsapp
cat > ~/.openclaw-whatsapp/config.yaml << 'EOF'
port: 8555
data_dir: ~/.openclaw-whatsapp
auto_reconnect: true
reconnect_interval: 30s
log_level: info
agent:
enabled: true
mode: "command"
command: "/usr/local/bin/wa-notify.sh '{name}' '{message}' '{chat_jid}' '{message_id}'"
ignore_from_me: true
dm_only: true
timeout: 30s
system_prompt: |
You are a helpful WhatsApp assistant. Be concise and natural.
EOF
mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/openclaw-whatsapp.service << 'EOF'
[Unit]
Description=OpenClaw WhatsApp Bridge
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/openclaw-whatsapp start -c %h/.openclaw-whatsapp/config.yaml
Restart=always
RestartSec=5
[Install]
WantedBy=default.target
EOF
systemctl --user daemon-reload
systemctl --user enable openclaw-whatsapp.service
systemctl --user start openclaw-whatsapp.service
openclaw-whatsapp statushttp://localhost:8555/qrSend a WhatsApp message to the linked number from another phone. Check:
# Bridge logs
journalctl --user -u openclaw-whatsapp.service -n 20
# Worker logs
cat /tmp/openclaw-wa-agent/worker.log
WhatsApp DM → Bridge → wa-notify.sh (enqueue)
→ wa-notify-worker.sh (background, file-locked)
→ Fetches last 10 messages for context
→ openclaw agent (processes message)
→ openclaw-whatsapp send <JID> <reply>
→ WhatsApp reply sent
Key features:
Edit ~/.openclaw-whatsapp/config.yaml and update the system_prompt field:
agent:
system_prompt: |
You are a sales assistant for Acme Corp.
Be friendly and professional.
When someone wants to book a demo:
- Book via: mcporter call composio.GOOGLECALENDAR_CREATE_EVENT ...
- Notify team via: message action=send channel=telegram target=CHAT_ID ...
Restart after changes:
systemctl --user restart openclaw-whatsapp.service
Restrict which numbers the agent responds to:
agent:
allowlist: ["971586971337"] # only these (empty = all)
blocklist: ["spammer123"] # never these
openclaw-whatsapp start [-c config.yaml] # Start the bridge
openclaw-whatsapp status [--addr URL] # Check connection status
openclaw-whatsapp send NUMBER MESSAGE # Send a message
openclaw-whatsapp stop # Stop the bridge
openclaw-whatsapp version # Print version
| Problem | Solution |
|---------|----------|
| QR expired | Refresh http://localhost:8555/qr — auto-refreshes every 3s |
| Bridge disconnected | openclaw-whatsapp status; auto-reconnects by default |
| Agent not replying | Check /tmp/openclaw-wa-agent/worker.log for errors |
| "stream replaced" errors | Multiple bridge instances — ensure only one runs (systemctl --user status openclaw-whatsapp + pgrep openclaw-whatsapp) |
| "openclaw: not found" | Edit wa-notify-worker.sh PATH to include openclaw binary |
| "not logged in" | Scan QR again — session expired |
| Path | Description |
|------|-------------|
| ~/.openclaw-whatsapp/config.yaml | Bridge configuration |
| ~/.openclaw-whatsapp/messages.db | SQLite message store |
| ~/.openclaw-whatsapp/sessions/ | WhatsApp session data |
| /tmp/openclaw-wa-agent/queue.jsonl | Message queue |
| /tmp/openclaw-wa-agent/worker.log | Worker logs |
| /tmp/openclaw-wa-agent/seen_message_ids.txt | Deduplication list |
| Method | Path | Description |
|--------|------|-------------|
| GET | /status | Connection status |
| GET | /qr | QR code page |
| POST | /send/text | Send message {"to": "...", "message": "..."} |
| GET | /chats | List all chats |
| GET | /chats/{jid}/messages?limit=10 | Messages for a chat |
| GET | /messages/search?q=keyword | Full-text search |
See references/api-reference.md for full API docs.
Generated Mar 1, 2026
Businesses can deploy this skill to handle common customer inquiries on WhatsApp, such as order status, FAQs, or appointment scheduling. It integrates with AI agents to provide instant, 24/7 responses, reducing manual workload and improving response times.
Sales teams use the auto-reply feature to engage potential leads via WhatsApp, asking qualifying questions and routing interested prospects to human agents. The message search and contact sync help track interactions and prioritize follow-ups.
Individuals set up the bridge to manage personal WhatsApp messages, with AI agents handling reminders, scheduling, or filtering spam. The deduplication and single-worker architecture ensure reliable processing without duplicate replies.
Clinics or telehealth services automate appointment confirmations and follow-ups via WhatsApp, using the send command and auto-reply to answer patient queries. The allowlist/blocklist feature ensures compliance by restricting responses to authorized numbers.
Event organizers leverage the skill to broadcast updates and handle attendee inquiries on WhatsApp, with AI agents providing information on schedules, venues, or tickets. The system prompt can be customized for event-specific guidance.
Offer the WhatsApp bridge as a managed service with tiered pricing based on message volume or features like auto-reply and contact sync. Revenue comes from monthly subscriptions, targeting small to medium businesses seeking automation.
Provide setup, configuration, and integration services for clients, tailoring the skill to specific use cases like sales or support. Revenue is generated through one-time project fees or ongoing maintenance contracts.
License the skill to other companies or developers who rebrand it as part of their own product suite, such as CRM or communication platforms. Revenue comes from licensing fees or revenue-sharing agreements.
💬 Integration Tip
Ensure the openclaw binary path is correctly set in the worker script to avoid 'not found' errors, and use systemd for reliable service management with auto-restart capabilities.
iMessage/SMS CLI for listing chats, history, watch, and sending.
Use when you need to control Discord from Clawdbot via the discord tool: send messages, react, post or upload stickers, upload emojis, run polls, manage threads/pins/search, fetch permissions or member/role/channel info, or handle moderation actions in Discord DMs or channels.
Use when you need to control Slack from Clawdbot via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.
Send WhatsApp messages to other people or search/sync WhatsApp history via the wacli CLI (not for normal user chats).
Build or update the BlueBubbles external channel plugin for Clawdbot (extension package, REST send/probe, webhook inbound).
OpenClaw skill for designing Telegram Bot API workflows and command-driven conversations using direct HTTPS requests (no SDKs).