Free & Open-Source WhatsApp Web CRM & Automation Workspace
Features β’ Installation β’ Structure β’ Architecture β’ Contributing
OpenMsg is a free, open-source WhatsApp Web CRM and automation workspace that lives entirely inside your browser β no server, no registration, no hidden paywalls.
It injects a full-featured sidebar directly into WhatsApp Web using a Chrome Manifest V3 extension, keeping all your data local in the browser's IndexedDB.
| π 100% Open Source | MIT licensed β no keys, no activation, no feature locks |
| ποΈ CRM & Kanban Board | Manage contacts, leads, and deals with a drag-and-drop pipeline |
| π€ Chatbot Builder | Build auto-reply flows with keyword triggers, menus, and conditions |
| π’ Broadcast Campaigns | Send bulk messages with rate-limiting and {{variable}} personalization |
| β‘ Canned Responses | Save and insert frequent messages in one click or via keyboard shortcut |
| π§ AI Assistant | Connect an AI model to auto-answer incoming queries |
| π Scheduler & Reminders | Schedule messages and set per-contact follow-up reminders |
| π Webhooks & Integrations | Send/receive HTTP events to Zapier, Make, n8n, or your own backend |
| π Privacy / Blur Mode | Blur names, numbers, and messages for screen sharing |
| π¨ Dark & Light Theme | Full CSS variable theming system with live toggle |
OpenMsg is an unofficial browser extension. It enhances WhatsApp Web by running alongside it in your browser.
- This is not an official WhatsApp or Meta product.
- Use a dedicated number for automation β not your primary personal number.
- Sending large volumes of unsolicited messages can result in your WhatsApp account being restricted.
- Always get consent before messaging contacts through automated flows.
OpenMsg is a Chrome unpacked extension β no Chrome Web Store listing, no build step required.
- Google Chrome, Brave, Microsoft Edge, or any Chromium-based browser (v111+)
1. Clone the repository
git clone https://github.com/zulbulai/openmsg.git2. Open your browser's extensions page
| Browser | URL |
|---|---|
| Chrome | chrome://extensions |
| Brave | brave://extensions |
| Edge | edge://extensions |
3. Enable Developer Mode
Toggle Developer mode in the top-right corner of the extensions page.
4. Load the extension
Click Load unpacked β select the cloned openmsg/ folder (the one containing manifest.json).
5. Open WhatsApp Web
Go to https://web.whatsapp.com and refresh the page.
The OpenMsg workspace sidebar will appear automatically on the right side of WhatsApp Web.
No sign-up, no license key, no server required.
openmsg/
βββ manifest.json # Chrome Extension Manifest V3
βββ build.json # Build metadata
βββ package.json # Project metadata
βββ LICENSE # MIT License
βββ README.md # This file
βββ CONTRIBUTING.md # Contribution guidelines
βββ CHANGELOG.md # Version history
βββ INSTALL.txt # Quick-start guide
β
βββ icons/ # Extension icons (16px β 512px)
βββ pages/ # Extension HTML pages (workspace entry)
β
βββ vendor/ # Bundled third-party libraries
β βββ wppconnect-wa.js # WPPConnect WhatsApp bridge
β βββ qrcode.mjs # QR code generator
β
βββ src/
βββ background/ # Service Worker (MV3)
β βββ sw.js # Alarms, notifications, tab management
β
βββ bridge/ # Main-world injection bridge
β βββ main-bridge.js # Talks to WhatsApp Web's internal JS context
β
βββ content/ # Isolated-world content scripts
β βββ loader.js # Extension bootstrap / guard
β βββ main.js # App entry point β wires all modules together
β
βββ core/ # Pure business-logic engines (no DOM)
β βββ app.js # App lifecycle coordinator
β βββ automation.js # Chatbot / automation engine
β βββ crm.js # CRM data model and operations
β βββ scheduler.js # Broadcast scheduling and campaign runner
β βββ sender.js # Message sending queue and rate limiter
β βββ ai.js # AI assistant integration layer
β βββ webhooks.js # Webhook dispatch (outgoing HTTP events)
β βββ store.js # IndexedDB persistence layer
β βββ events.js # Internal pub/sub event bus
β βββ activation.js # Open-source stub β always returns active
β βββ app-config.js # Project build metadata (no server, no keys)
β βββ browser-info.js # Browser / device information helper
β
βββ features/ # Self-contained feature modules
β βββ blur.js # Privacy blur overlay
β βββ canned.js # Canned response quick-insert
β βββ chat-modal.js # Contact detail modal
β βββ crm-drawer.js # CRM side-drawer for open chats
β βββ strap.js # WhatsApp Web toolbar integration
β
βββ panels/ # UI panel components (workspace screens)
β βββ kanban.js # CRM Kanban pipeline board
β βββ chatbots.js # Chatbot list & status panel
β βββ chatbot-builder.js # Visual chatbot flow editor
β βββ broadcasts.js # Broadcast campaign manager
β βββ calendar.js # Scheduler and reminders panel
β βββ canned-responses.js# Canned response manager
β βββ status-posts.js # WhatsApp Status publisher
β βββ webhooks.js # Webhook configuration panel
β βββ settings.js # Extension settings panel
β βββ tools.js # Utility tools (QR, wa.me links)
β
βββ styles/
β βββ wacrm.css # All extension styles (Shadow DOM scoped)
β
βββ ui/ # Shared UI primitives and workspace shell
βββ shell.js # Top-bar, sidebar, and host element
βββ workspace.js # Panel routing and workspace layout
βββ dom.js # DOM helpers and icon rendering
βββ icons.js # SVG icon library
βββ components.js # Reusable UI components
βββ modals.js # Modal and dialog manager
βββ about-dialog.js # About / version info dialog
βββ styles.js # Stylesheet injection into Shadow DOM
OpenMsg uses the standard Chrome MV3 Extension pattern with three isolated JavaScript execution contexts that communicate by message-passing:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Browser Tab (https://web.whatsapp.com) β
β β
β βββββββββββββββββββββββββββββββββββ β
β β Main World (page JS context) β β src/bridge/ β
β β WhatsApp Web's own JavaScript β main-bridge.js β
β βββββββββββββββββ¬ββββββββββββββββββ β
β β window.postMessage β
β βββββββββββββββββΌββββββββββββββββββ β
β β Isolated World (content script)β β src/content/main.js β
β β OpenMsg app logic β β src/core/* β
β β UI panels & workspace shell β β src/panels/* β
β β β β src/ui/* β
β βββββββββββββββββ¬ββββββββββββββββββ β
β β chrome.runtime.sendMessage β
ββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββΌβββββββββββββββββββ
β Service Worker β β src/background/sw.js
β Alarms Β· Notifications Β· Tabs β
ββββββββββββββββββββββββββββββββββββ
| Decision | Reason |
|---|---|
| Shadow DOM isolation | Extension styles never bleed into WhatsApp Web's CSS |
| No remote calls at runtime | No license server, no analytics β only user-configured webhooks leave the browser |
| Local IndexedDB storage | All CRM data, chatbots, and settings are stored on the user's machine |
| ES Modules throughout | Clean import/export β no bundler required to develop or load the extension |
| Manifest V3 | Chrome's current and future-supported extension platform |
No environment variables or build tools are required. Load the source folder directly.
{
"version": "0.0.1",
"type": "free",
"source": "local"
}Project metadata shown in the About screen. Update name and website if you fork the project.
export const BUILD_PROVIDER = {
name: 'OpenMsg Project',
website: 'https://github.com/zulbulai/openmsg',
};OpenMsg has no activation system. src/core/activation.js is a no-op stub that always returns active: true. No keys, no servers, no checks needed.
Contributions are very welcome! Please read CONTRIBUTING.md for the full guide.
git clone https://github.com/zulbulai/openmsg.git
cd openmsg
# Load as unpacked in chrome://extensions β no build step needed- One feature or bug fix per pull request
- Use ES Modules β no CommonJS
require() - Do not add activation checks, remote telemetry, or license gates
- Test on the latest version of WhatsApp Web before submitting
Open an issue on GitHub with:
- Browser name and version
- Steps to reproduce
- Expected vs. actual behavior
- Console errors (F12 β Console tab)
MIT β Copyright Β© 2024 OpenMsg Contributors
Made with β€οΈ for the open-source community