{"slug": "build-a-whatsapp-chatbot-with-n8n-wasphere-self-hosted-no-meta-approval", "title": "Build a WhatsApp chatbot with n8n + WaSphere (self-hosted, no Meta approval)", "summary": "A developer has published a quick-start guide for building a self-hosted WhatsApp chatbot by pairing the open-source workflow automation tool n8n with WaSphere, an MIT-licensed, self-hosted WhatsApp API. The setup runs on any Docker-capable VPS and avoids Meta's business verification, template approvals and per-conversation pricing, with inbound messages delivered to n8n as HMAC-SHA256-signed webhook payloads. WaSphere supports 14 message types, including text, media, polls, buttons and lists.", "body_md": "Want a WhatsApp chatbot without going through Meta's business verification, template approvals, and per-conversation pricing? Combine **n8n** (the open-source workflow automation tool) with **WaSphere** — an open-source (MIT), self-hosted WhatsApp API — and you get a fully self-hosted chatbot stack on your own server.\n\nNo Meta approval, no per-message platform fees, and your conversation data never leaves your infrastructure.\n\nAny VPS with Docker works. This is the actual quick start from the [GitHub repo](https://github.com/wasphere/wasphere):\n\n```\ngit clone https://github.com/wasphere/wasphere.git\ncd wasphere\ncp .env.example .env\ndocker compose up -d\n```\n\nThen open the dashboard at `http://your-server:3004`, register your first admin account, set the WA Server URL to `http://wa-server:3001` (plus your `WA_TOKEN`) under Settings, and pair your number under **Sessions** by scanning the QR code.\n\nIn n8n, add a **Webhook** node — this gives you a URL like `https://your-n8n/webhook/whatsapp-in`. In WaSphere, point your webhook settings at that URL. Every inbound message and status event now arrives in n8n as JSON, signed with:\n\n```\nX-WaSphere-Signature: v1,sha256=<hmac>\nX-WaSphere-Timestamp: <unix-seconds>\n```\n\nThe signature is the HMAC-SHA256 of `{timestamp}.{rawBody}` with your webhook secret — verify it in a Function/Code node before trusting the payload.\n\nRoute on the message text with a **Switch** node, look up answers in a database or an LLM call, then send the reply.\n\nAdd an **HTTP Request** node:\n\n`POST`\n`/docs/wa-server` on your own instance documents every route)`Authorization: Bearer wsk_…` (your WaSphere API key)\nWaSphere supports 14 message types — text, image, video, audio, documents, stickers, location, contact, polls, buttons and lists, reactions — so your bot isn't limited to plain text.\n\nIf you've been putting off WhatsApp automation because of the Meta approval maze, this is the shortcut: a self-hosted WhatsApp API plus n8n, deployed before your coffee cools.", "url": "https://wpnews.pro/news/build-a-whatsapp-chatbot-with-n8n-wasphere-self-hosted-no-meta-approval", "canonical_source": "https://dev.to/samii/build-a-whatsapp-chatbot-with-n8n-wasphere-self-hosted-no-meta-approval-cmi", "published_at": "2026-10-03 22:00:19+00:00", "updated_at": "2026-10-03 22:08:11.608578+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools", "ai-agents"], "entities": ["n8n", "WaSphere", "WhatsApp", "Meta", "Docker", "GitHub"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/build-a-whatsapp-chatbot-with-n8n-wasphere-self-hosted-no-meta-approval", "markdown": "https://wpnews.pro/news/build-a-whatsapp-chatbot-with-n8n-wasphere-self-hosted-no-meta-approval.md", "text": "https://wpnews.pro/news/build-a-whatsapp-chatbot-with-n8n-wasphere-self-hosted-no-meta-approval.txt", "jsonld": "https://wpnews.pro/news/build-a-whatsapp-chatbot-with-n8n-wasphere-self-hosted-no-meta-approval.jsonld"}}