mrkeyoor.com_
Wed 12 Aug 18:52 UTC
Automationevaluationupdated 12 Aug 2026

go-whatsapp-web-multidevice

GOWA turns linked WhatsApp accounts into a self-hosted REST API, webhook source, web dashboard, Chatwoot bridge, and MCP server. It lets internal tools and automations send and receive messages, media, reactions, group actions, and status changes through unofficial WhatsApp Web sessions instead of Meta's official business API.

Verdict

GOWA is one of the most complete ready-to-run bridges for experimental WhatsApp automation, especially if multi-account REST, Chatwoot, webhooks, and MCP must live together. It is still built on an unofficial channel whose policy and protocol you do not control. Use a non-critical account, narrow access, and accept reconnection or breakage; choose Meta's official API for customer operations that cannot simply stop.

Setup4/5Container and QR pairing are quick; secure operation takes work
Docs5/5Extensive config, API, webhook, Chatwoot, media, and MCP detail
Community4/54.5k stars with rapid releases and active integrations
Maturity3/5Versioned and capable, but tied to an unofficial moving protocol

Who it’s for

Developers prototyping personal or internal WhatsApp automations
Self-hosters who need several linked accounts behind one API
Chatwoot or n8n users willing to operate an unofficial session bridge
MCP builders testing agent-controlled messaging with tightly limited accounts

Who it’s NOT for

Businesses that require a supported, contractually stable messaging channel, because the project is unofficial and recommends the official WhatsApp API to avoid issues
Cold outreach systems, since issue 777 documents WhatsApp's server-side 463 reach-out restriction and says the API cannot bypass it
MCP users expecting v9.0.1 to match the current README, because issue 789 reports that release does not register /mcp
Operators unwilling to protect session databases, API credentials, media, and webhooks as sensitive messaging data

Setup reality

A single persisted Docker container is enough to reach the dashboard, scan a QR code, and send a first test message. Release binaries cover Windows, macOS, x86 Linux, and Arm, while source builds require Go 1.25.5 plus FFmpeg and WebP tools for media. A responsible deployment needs more: pin the server and separately downloaded UI, set non-default basic-auth and webhook secrets, add TLS, persist both session and key databases, restrict MCP and REST access, verify webhook HMACs, cap media storage, and prepare for re-pairing when WhatsApp changes the web protocol.

A full API around a linked WhatsApp account

GOWA connects to WhatsApp as a linked device, then exposes the session to software. Its REST API sends text, images, video, audio, documents, stickers, locations, contacts, polls, links, and forwards. It can react to, edit, revoke, delete, star, and mark messages read; list chats and contacts; manage groups; publish status; and stream events through webhooks. Version 8 added multiple WhatsApp accounts in one server with device-scoped requests.

Version 9 folds a Model Context Protocol server into the REST process. Five consolidated MCP tools cover sending, message actions, chat access, group administration, and application login or status. A connection chooses its account through X-Device-Id, with per-call override. This is unusually broad agent access: a model can send media, remove group participants, revoke messages, or log out an account. Expose only the operations and accounts you are prepared to let an agent control.

The project also connects to Chatwoot, publishes a community n8n node, and supports per-device webhooks. For a small team building an internal inbox or notification bot, that saves a considerable amount of glue.

Getting it running

Docker is the quickest route. Persist /app/storages, start the rest command on port 3000, open the dashboard, and pair a phone with the displayed QR code. Prebuilt v9.0.1 archives cover Intel and Arm macOS, 32-bit and 64-bit Windows, x86 Linux, Armv7, and Arm64. A source build needs Go 1.25.5 or newer. FFmpeg and WebP command-line tools handle image, video, and animated sticker processing.

The database stores linked-device sessions, and an optional keys database caches encryption and session material. The README warns against in-memory key storage in production because a restart can lose session state. Back up storage with the same care as an authenticated phone: it may contain message history, downloaded media, contacts, device identifiers, and credentials. Test restoration and account logout rather than assuming a copied SQLite file is sufficient.

Secure the control surface

Basic authentication supports several credentials but is optional. Set it, place the service behind TLS, and restrict it to trusted clients. The README notes that browser WebSocket connections may pass a base64 basic-auth value in the URL query because browsers cannot set the header. URLs can appear in proxy and application logs, so TLS alone does not remove credential exposure. Prefer short-lived network access and scrub query strings from logs.

MCP inherits the REST server's basic authentication. Do not expose /mcp to the internet with a shared password. Device selection also deserves authorization design: one credential that can choose any device is effectively access to every linked account.

Outgoing webhooks include an HMAC header, but the documented default secret is secret. Replace it and verify signatures before parsing events. Per-device destinations help isolate tenants, while event and JID filters reduce unnecessary data. The option to skip TLS verification is correctly marked insecure. Use a trusted private certificate authority or public certificate rather than teaching a messaging service to accept interception.

Automatic media download defaults on. That can fill storage or retain content operators did not intend to collect. Set file limits, disable downloads if unnecessary, scan untrusted files, and establish deletion rules. Chatwoot history import can use direct PostgreSQL access, which is powerful and widens the credential and schema-compatibility boundary.

Unofficial means externally fragile

The final README warning says GOWA is not affiliated with WhatsApp and advises using the official API to avoid issues. That is not boilerplate. WhatsApp can change its web protocol, session behavior, message formats, or anti-abuse enforcement without preserving this project's compatibility. GOWA depends on whatsmeow, and v9.0.1 explicitly refreshes that protocol dependency. Frequent updates are both healthy maintenance and evidence of the moving target.

Issue 777 documents server error 463 when a newly linked number tries to initiate a conversation. Its text identifies a WhatsApp server-side reach-out timelock, recommends having the recipient message first or establishing the chat on the phone, and says the API cannot bypass it. Issue 691 reports the same code appearing without a configuration change. An unofficial bridge is not a route around platform policy, especially for cold outreach.

Encryption and multi-device delivery also create edge cases. Issue 545 reports some recipients seeing a permanent “Waiting for message” state while others display the same sent message. The v9.0.1 notes add warnings for undecryptable incoming messages that were previously dropped silently. Test every critical sender and client pattern, and treat API acceptance as different from recipient-readable delivery.

MCP documentation is ahead of the release

The current README says the REST server exposes /mcp starting in v9. Issue 789 shows a narrower reality: in tagged v9.0.1, requests first return a device-required error and then a 404 after pairing because the unified MCP implementation merged after that tag. The report asks for a later release or corrected version note. Do not deploy latest blindly to solve this. Select a commit only for testing, or wait for a tagged build whose code and documentation agree.

This is a good example of why pinning matters. Major versions have changed command modes, device scoping, webhook payloads, UI packaging, and MCP transport. Read the breaking-change section and exercise clients against staging before upgrades.

Health and who should choose it

GOWA had 4,524 stars, 22 open issues and pull requests, and an MIT license when researched. The latest release, v9.0.1, arrived August 9, 2026, and the last push was August 10. Pull requests for webhooks, Chatwoot, receipts, and message types remained active on August 12. The maintenance pace is strong, and the release notes are unusually specific.

Use GOWA for experiments, home automation, or internal tools where interruption and re-pairing are acceptable. Run it with a dedicated low-value account, pinned builds, protected storage, TLS, changed secrets, verified webhooks, and narrow network access. Use the official WhatsApp Cloud API for customer support, regulated records, templates, or business messaging whose continuity and policy status matter. GOWA is the more flexible workshop; it is not the safer contract.

Alternatives

ProjectWhat it isPick it when
WhatsApp Cloud APIMeta's official hosted API for approved business messaging, templates, webhooks, and support.Pick this instead when the channel is customer-facing, revenue-critical, or subject to policy and compliance review.
Evolution APIA broad self-hosted messaging integration API with WhatsApp, webhooks, and automation connectors.Pick this instead when you want a larger integration platform and accept similar unofficial-session risks.
WPPConnect ServerA REST server around the WPPConnect WhatsApp Web automation stack.Pick this instead when the Node-based WPPConnect ecosystem and its session model fit your existing tools.
BaileysA TypeScript library for speaking the WhatsApp Web protocol without a browser.Pick this instead when you want a library to build your own service rather than a ready REST and MCP application.

What people are saying

  1. [github-trending] aldinokemal/go-whatsapp-web-multidevice

Sources

  1. GOWA README
  2. GOWA v9.0.1 release
  3. v9.0.1 MCP endpoint issue
  4. WhatsApp reach-out restriction issue
  5. WhatsApp 463 error report
  6. Waiting for message delivery issue