Dashboard + Flow Builder + REST API + AI + CLI — All Free, All Open Source
Quick Start • Dashboard • Flow Builder • API Docs • CLI Docs
Love this project? Give it a star — it helps more people discover it.
WA Convo is a free, open-source WhatsApp automation platform that gives you everything other tools charge hundreds for:
- Dashboard UI with dark/light theme — manage everything from your browser
- Visual Flow Builder — drag-and-drop chatbot builder with 12 node types
- 70+ REST API endpoints — send messages, media, polls, reactions, and more
- AI Auto-Reply — plug in OpenAI, Claude, Gemini, or Ollama
- Contact Manager — tags, segments, bulk import/export
- Broadcast Campaigns — send to thousands with delivery tracking
- Quick Reply Templates — variable substitution, phone preview
- Cron Scheduler — recurring messages and broadcasts
- Multi-Client — control up to 6 WhatsApp accounts simultaneously
- Full CLI — everything the dashboard can do, from your terminal
| Feature | WA Convo | Others |
|---|---|---|
| Dashboard UI | Yes (13 pages) | Rarely |
| Visual chatbot flow builder | Yes (drag & drop) | No |
| Multi-client (6 accounts) | Yes | Rarely |
| Dual engine (Baileys + Meta API) | Yes | No |
| AI auto-reply (5 providers) | Yes | No |
| Contact manager with tags | Yes | No |
| Broadcast campaigns | Yes | No |
| Quick reply templates | Yes | No |
| Cron job scheduler | Yes | No |
| Multi-webhook with HMAC & retry | Yes | No |
| SQLite persistence | Yes | No |
| Full CLI tool (30+ commands) | Yes | No |
| Security (Zod, Helmet, HMAC) | Yes | Rarely |
| WebSocket real-time events | Yes | Some |
| 100% free & open source | Yes | No |
git clone https://github.com/sajidmahamud835/whatsapp-bot.git
cd whatsapp-bot
npm install
npm run build
npm run build:dashboard # Build the dashboard UI
npm startOpen http://localhost:3000/dashboard to access the dashboard.
- Open the Dashboard → Clients page
- Click Initialize on Client 1
- Scan the QR code with your phone (WhatsApp → Linked Devices → Link a Device)
- Done — start sending messages!
curl -X POST http://localhost:3000/1/send \
-H "Content-Type: application/json" \
-d '{"number": "YOUR_NUMBER", "message": "Hello from WA Convo!"}'A full-featured web dashboard with 13 pages, dark/light theme, and real-time data.
| Page | What it does |
|---|---|
| Dashboard | KPI cards, message volume chart, client status, system metrics |
| Clients | Initialize, QR code (inline), logout, session health detection, one-click reset |
| Messages | WhatsApp-like chat UI — conversations, message bubbles, avatars, date separators |
| Contacts | Table with search, tags, edit, bulk import (CSV), export, bulk delete |
| Templates | Card grid, edit, preview (phone mockup), send to contact, variable substitution |
| Campaigns | Create, send with confirmation, delivery tracking per recipient |
| Flow Builder | Visual drag-and-drop chatbot builder (see below) |
| Analytics | Message volume charts, top contacts, period selector, CSV export |
| Webhooks | Register, test, delivery log |
| Cron Jobs | Create with schedule presets, run now (with confirmation), human-readable schedules |
| AI Config | Add/remove providers, model picker, test chat, system prompt editor, sliders |
| Settings | Inline config editor for every setting, reload config |
npm run build:dashboard # Builds to dashboard/dist/
npm start # Serves dashboard at /dashboardFor development with hot reload:
npm run dev:dashboard # Vite dev server on port 3001Build chatbot flows visually — no coding required. Drag nodes, connect them, enable the flow.
| Category | Nodes |
|---|---|
| Triggers | Message Received (keyword, exact match, starts with, regex) |
| Actions | Send Message, Send Media, Send Template, AI Reply |
| Logic | Condition (9 operators), Delay, Wait for Reply, End |
| Data | Set Variable, Add Tag, HTTP Request |
- Go to Flow Builder in the dashboard
- Click New Flow → give it a name and trigger type
- Drag nodes from the palette onto the canvas
- Connect nodes by dragging from output to input handles
- Click a node to configure it (message text, conditions, variables)
- Save and Enable the flow
- When someone messages your WhatsApp with the trigger keyword, the flow executes automatically
| Flow | What it does |
|---|---|
| Welcome Bot | Greets anyone who says hi/hello/hey |
| Auto-Reply (Away) | Away message when you're offline |
| AI Support Agent | AI answers questions + tags contact |
| Lead Capture | Multi-step: collects name → email → tags as lead |
| Feedback Collector | 1-5 rating → branches by score → tags accordingly |
| Urgent Router | Detects "urgent"/"emergency" → tags + priority response |
| Unsubscribe Handler | Opt-out with tag and confirmation |
| Re-subscribe Handler | Opt-in when user sends START |
| AI Chatbot | Conversational AI with wait-for-reply |
| Business Hours | Shows hours/location/contact info |
Export flows as JSON files to share or backup. Import flows from JSON.
- CRUD — add, edit, delete contacts
- Tags — create tags, assign to contacts, filter by tag
- Segments — query contacts by tag combinations
- Bulk Import — paste CSV (phone,name) or upload file
- CSV Export — download all contacts
- Bulk Delete — checkbox selection + batch delete
- Create campaigns targeting phone number lists
- Confirmation dialog before sending (shows recipient count)
- Per-recipient tracking — sent, failed, pending
- Delivery stats — see results in the table
- Create with categories (greeting, support, sales, notification)
- Variable substitution —
{{name}},{{order_id}},{{date}} - Phone preview — see how the message looks in a phone mockup
- Send to contact — fill variables and send directly
- Duplicate — copy templates quickly
Welcome Message, Order Confirmation, Appointment Reminder, Support Ticket, Follow Up
Plug in any LLM provider. Supports:
| Provider | Config Type | Models |
|---|---|---|
| OpenAI | openai |
GPT-4o, GPT-4o-mini |
| Anthropic | anthropic |
Claude Sonnet 4.6, Haiku 4.5 |
google |
Gemini 2.0 Flash, 1.5 Pro | |
| Ollama | ollama |
Llama 3.2, Mistral, Gemma |
| OpenRouter | openrouter |
100+ models |
| Any OpenAI-compatible | openai + baseUrl |
Together, Groq, etc. |
Configure via Dashboard → AI Config page or CLI.
Everything the dashboard can do, from your terminal:
wa-convo --help
| Command | Description |
|---|---|
wa-convo start |
Start the server |
wa-convo stop |
Stop the server |
wa-convo status |
Server & client status |
wa-convo stats |
Server metrics |
wa-convo analytics |
Analytics overview |
wa-convo logs [--follow] |
View/stream logs |
| Command | Description |
|---|---|
wa-convo client list |
List all clients |
wa-convo client init <id> |
Initialize client |
wa-convo client logout <id> |
Logout |
wa-convo client reset <id> |
Reset session (fixes encryption) |
| Command | Description |
|---|---|
wa-convo send <cid> <number> <msg> |
Send message |
wa-convo messages conversations <cid> |
List conversations |
wa-convo messages history <cid> <jid> |
View chat history |
| Command | Description |
|---|---|
wa-convo managed-contacts list |
List contacts |
wa-convo managed-contacts add <phone> |
Add contact |
wa-convo managed-contacts import <file> |
Import CSV |
wa-convo managed-contacts export <file> |
Export CSV |
wa-convo managed-contacts tags |
List tags |
| Command | Description |
|---|---|
wa-convo templates list |
List templates |
wa-convo templates send <name> <cid> <num> |
Send template |
wa-convo campaigns list |
List campaigns |
wa-convo campaigns create --name --message --numbers |
Create campaign |
wa-convo campaigns send <id> |
Send campaign |
| Command | Description |
|---|---|
wa-convo flows list |
List flows |
wa-convo flows enable <id> |
Enable flow |
wa-convo flows disable <id> |
Disable flow |
wa-convo flows test <id> <msg> |
Test flow |
wa-convo flows export <id> |
Export to JSON |
wa-convo flows import <file> |
Import from JSON |
| Command | Description |
|---|---|
wa-convo ai providers / test / enable / disable |
AI management |
wa-convo cron list / add / run <id> / delete <id> |
Cron jobs |
wa-convo webhooks list / add <url> / test <id> |
Webhooks |
wa-convo config get <key> / set <key> <val> |
Configuration |
70+ endpoints. All require
Authorization: Bearer YOUR_API_KEY(if set).
System
| Method | Path | Description |
|---|---|---|
GET |
/ |
API info |
GET |
/health |
Health check |
GET |
/clients |
All clients |
GET |
/stats |
Server metrics |
GET/PUT |
/config/:path |
Config CRUD |
POST |
/config/reload |
Reload config |
Client Management
| Method | Path | Description |
|---|---|---|
GET |
/:id/status |
Client status + health |
POST |
/:id/init |
Initialize |
POST |
/:id/logout |
Logout |
POST |
/:id/reset |
Reset session |
GET |
/:id/qr |
QR code page |
Messaging (15 endpoints)
| Method | Path | Description |
|---|---|---|
POST |
/:id/send |
Send text |
POST |
/:id/sendMedia |
Send media |
POST |
/:id/sendBulk |
Bulk send |
POST |
/:id/messages/react |
Reaction |
POST |
/:id/messages/poll |
Poll |
POST |
/:id/messages/edit |
Edit |
POST |
/:id/messages/delete |
Delete |
POST |
/:id/messages/reply |
Reply |
POST |
/:id/messages/forward |
Forward |
POST |
/:id/messages/location |
Location |
POST |
/:id/messages/contact |
vCard |
POST |
/:id/messages/sticker |
Sticker |
POST |
/:id/messages/voice |
Voice note |
GET |
/:id/messages/recent |
Recent messages |
GET |
/:id/messages/conversations |
Conversations |
GET |
/:id/messages/conversation/:jid |
Chat history |
Groups (12 endpoints)
Create, join, list, metadata, invite, add/remove participants, promote/demote, update settings.
Contacts, Status, Presence, Privacy
Check registration, profile pics, about, business profiles, block/unblock, labels, text/image/video status, presence, disappearing messages, archive, pin, mute.
AI, Cron, Webhooks
| Endpoint | Methods |
|---|---|
/ai/providers /ai/test /ai/prompt /ai/config |
GET, POST, PUT |
/cron /cron/:id /cron/:id/run |
GET, POST, PUT, DELETE |
/webhooks /webhooks/:id /webhooks/:id/test /webhooks/:id/deliveries |
GET, POST, PUT, DELETE |
Contacts Manager, Templates, Campaigns, Flows, Analytics
| Endpoint | Methods |
|---|---|
/pro/contacts /pro/tags /pro/segments/query |
Full CRUD |
/pro/templates /pro/templates/:id/send /pro/templates/:id/preview |
Full CRUD + send |
/pro/campaigns /pro/campaigns/:id/send |
Full CRUD + send |
/pro/flows /pro/flows/:id/toggle /pro/flows/:id/test /pro/flows/import /pro/flows/:id/export |
Full CRUD + toggle + test + import/export |
/pro/analytics/overview /pro/analytics/messages /pro/analytics/conversations /pro/analytics/ai /pro/analytics/export |
GET |
Config file: config/config.json — edit via dashboard Settings page, CLI, or API.
All settings can be overridden with environment variables. See .env.example.
First-time users see a 6-step guided tour that walks through:
- Connect WhatsApp
- Send Messages
- Build Chatbot Flows
- Enable AI
- Track Analytics
Skippable and dismissable. Shows once per browser.
- Backend: Node.js + TypeScript + Express
- Dashboard: React 19 + Vite + Tailwind CSS + React Query + Recharts + ReactFlow
- Database: SQLite (better-sqlite3)
- WhatsApp: Baileys (WebSocket) + Meta Cloud API
- AI: OpenAI, Anthropic, Google Gemini, Ollama
- Testing: Jest + ts-jest + Supertest
See CONTRIBUTING.md for guidelines.
- Fork the repo
- Create your feature branch
- Run
npm run typecheck && npm test - Submit a Pull Request
- Report bugs: Create an issue
- Request features: Create an issue
- Questions: Discussions
GNU GPL v3.0 — See LICENSE for details.
Built by Sajid Mahamud
If WA Convo saved you time, give it a star — it means the world.