Skip to content

Latest commit

Β 

History

26 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

OpenMsg Logo

OpenMsg

Free & Open-Source WhatsApp Web CRM & Automation Workspace

Features β€’ Installation β€’ Structure β€’ Architecture β€’ Contributing

Version License Manifest V3 PRs Welcome Platform


✨ Why OpenMsg?

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

⚠️ Important Notice

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.

πŸš€ Installation

OpenMsg is a Chrome unpacked extension β€” no Chrome Web Store listing, no build step required.

Requirements

  • Google Chrome, Brave, Microsoft Edge, or any Chromium-based browser (v111+)

Steps

1. Clone the repository

git clone https://github.com/zulbulai/openmsg.git

2. 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.


πŸ“‚ Project Structure

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

πŸ—οΈ Architecture

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   β”‚
   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key Design Decisions

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

πŸ› οΈ Configuration

No environment variables or build tools are required. Load the source folder directly.

build.json

{
  "version": "0.0.1",
  "type": "free",
  "source": "local"
}

src/core/app-config.js

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',
};

Activation System

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.


🀝 Contributing

Contributions are very welcome! Please read CONTRIBUTING.md for the full guide.

Quick Start

git clone https://github.com/zulbulai/openmsg.git
cd openmsg
# Load as unpacked in chrome://extensions β€” no build step needed

Guidelines

  • 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

Reporting Issues

Open an issue on GitHub with:

  • Browser name and version
  • Steps to reproduce
  • Expected vs. actual behavior
  • Console errors (F12 β†’ Console tab)

πŸ“„ License

MIT β€” Copyright Β© 2024 OpenMsg Contributors


Made with ❀️ for the open-source community

About

Open-source WhatsApp Web CRM & automation extension for contacts, leads, chatbots, broadcasts, scheduling and customer management.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages