Drupal is a registered trademark of Dries Buytaert
drupal 11.4.0 Update released for Drupal core (11.4.0)! drupal 10.6.12 Update released for Drupal core (10.6.12)! drupal 11.3.13 Update released for Drupal core (11.3.13)! drupal 10.6.11 Update released for Drupal core (10.6.11)! drupal 11.3.12 Update released for Drupal core (11.3.12)! drupal 11.2.14 Update released for Drupal core (11.2.14)! drupal 10.5.12 Update released for Drupal core (10.5.12)! cms 2.1.3 Update released for Drupal core (2.1.3)! drupal 10.5.11 Update released for Drupal core (10.5.11)! drupal 11.3.11 Update released for Drupal core (11.3.11)! drupal 11.2.13 Update released for Drupal core (11.2.13)! drupal 10.6.10 Update released for Drupal core (10.6.10)! cms 2.1.2 Update released for Drupal core (2.1.2)! drupal 11.1.10 Update released for Drupal core (11.1.10)! drupal 10.5.10 Update released for Drupal core (10.5.10)! drupal 10.4.10 Update released for Drupal core (10.4.10)! drupal 11.2.12 Update released for Drupal core (11.2.12)! drupal 11.3.10 Update released for Drupal core (11.3.10)! drupal 10.6.9 Update released for Drupal core (10.6.9)! drupal 10.6.8 Update released for Drupal core (10.6.8)!

whatsapp_chat

No security coverage
View on drupal.org

Many sites want a quick "chat with us on WhatsApp" button, but the usual options mean pasting a third-party script that loads external code, creates an account, and sends your visitors' data to another company. Drupal core offers nothing for this out of the box.

This module solves that by adding a self-contained floating WhatsApp button to your site. When a visitor clicks it, they either open a chat bubble to message a single person, or — if you have a team — they see a clean selector to choose who to talk to. Sending a message simply opens WhatsApp (through a standard wa.me link) with the text pre-filled. Nothing loads from WhatsApp or Meta servers, no external script runs, and no visitor data leaves your site.

New to Drupal? Think of it this way: you add one small floating button to your pages, you list one or more contacts (name, role, photo, WhatsApp number) in a simple admin screen, and the module handles the rest — the popup, the online/offline badges, the mobile layout, and where the button appears. No developer, no code, no template edits.

Use it when you want a friendly, conversion-focused WhatsApp contact button — for sales, support, or a small team — that you fully control from the Drupal admin and that respects your visitors' privacy.

Features

The core functionality is straightforward: the module registers a block that renders a floating WhatsApp button. You define your contacts ("agents") in a simple admin list, and the widget adapts automatically to how many you have.

Key features include:

  • Floating WhatsApp button that works for one contact or a whole team — with one agent it opens a chat bubble directly; with several it shows a selector with photo, role, and online/offline status.
  • Manage agents as self-contained configuration: display name, role/subtitle, WhatsApp number, photo (with automatic initials fallback), online/offline status, and an optional pre-filled message per agent.
  • Drag to reorder agents, and enable or disable any agent with one click — disabled agents stay saved but are hidden from the widget, so you never have to delete them.
  • Full theming from the admin, no CSS required: header color, accent color, background color, button position (bottom-left or bottom-right), and every text (title, subtitle, greeting, placeholder, reply-time line, and an optional selector footer).
  • Delivered exclusively as a Drupal block, so you get core's native visibility conditions for free — show or hide the widget by page, role, content type, or language, all from Block layout.
  • Placed automatically on your default theme on install, so it works out of the box while remaining fully configurable.
  • Fully multilingual: interface strings are translatable, and both the global widget texts and each agent's name/role can be translated per language via Configuration Translation. The widget renders in the visitor's language.
  • Privacy-friendly and self-contained: no third-party scripts, no external accounts, no tracking — just standard wa.me deep links. Assets load only on pages where the block is placed.
  • Built-in help page, sensible defaults, and a clean, idiomatic Drupal architecture (config entity, block plugin, config schema).

When and why would someone use this module? Use cases include:

  • Sales and lead capture: a "Message us on WhatsApp" button on landing pages and product pages, routing to the right salesperson.
  • Customer support: a small support team, each with their own number, role, and availability badge.
  • Agencies and small businesses: contacts who are often not Drupal users — no accounts required, just add them to the list.
  • Multilingual sites: different greeting texts and agent labels per language, shown automatically to each visitor.

Post-Installation

After enabling the module, no new content type is created. A WhatsApp widget block is placed automatically on your default theme, and everything is managed from one settings area:

  1. Go to Administration → Configuration → Web services → WhatsApp Chat (/admin/config/services/whatsapp-chat).
  2. On the Agents tab, add one or more agents: display name (a public nickname), role, WhatsApp number in international format (e.g. 51987654321), photo, online/offline status, and an optional pre-filled message. Drag to reorder, or disable any agent without deleting it.
  3. On the Settings tab, choose the header color, accent color, background color, button position, and edit the widget texts (title, subtitle, greeting, placeholder, and optional footer such as "Call us at… from 8:00 to 20:00").
  4. To control where the widget appears (specific pages, roles, content types, or languages), go to Structure → Block layout and edit the WhatsApp widget block's visibility conditions. Note: because the button is fixed-positioned, the block region does not change its on-screen corner — that is set in Settings.
  5. On multilingual sites, use the Translate tab on the settings page for the global texts, and the Translate operation on each agent for names and roles.
  6. Clear caches (drush cr or via Administration → Configuration → Performance) if the block or settings do not appear immediately.

Additional Requirements

This module requires no external libraries, third-party scripts, or APIs. It only uses standard wa.me links. Requirements:

  • Drupal core ^11 || ^12
  • Block (core module) — the widget is delivered as a block.
  • File (core module) — used for agent photos.

On multilingual sites, enable Configuration Translation and Interface Translation (both Drupal core) to translate the widget texts and agent labels per language — this module ships the translation mappers, so no extra configuration is needed beyond enabling those core modules.

I also maintain the following modules. None of them override Drupal's core output — they extend its native capabilities and work cleanly alongside this one:

Similar projects

  • WhatsApp Button — A configurable block that adds a single-number WhatsApp button. It is a great fit when you only need one contact. This module differs by supporting multiple agents with a selector, a chat-bubble popup, per-agent photos and online/offline status, full admin theming, and per-language translation of texts and agents.
  • Third-party live-chat widgets (Tawk.to, JivoChat, Chatra, and similar) — These embed an external script and require a third-party account, sending visitor data off-site. This module is fully self-contained: no external script, no account, no tracking — it only opens standard wa.me links, which is lighter and more privacy-respecting.
  • Full live-chat / helpdesk modules — These run a real messaging backend inside Drupal (conversations, inbox, agents online). This module is intentionally lightweight: it is a click-to-chat launcher that hands the conversation off to WhatsApp, with no backend to run or maintain.
  • A manual wa.me link (no module) — The common workaround of hand-coding a link or floating button in a block or template. It works for one number but offers no admin UI, no multi-agent selector, no online/offline states, no theming, no visibility conditions, and no translation — all of which this module provides.

If none of the above fits your workflow, this module is worth evaluating as a simple, framework-independent, privacy-friendly option that works with any Drupal theme and requires no code.

Commercial Support

This module is developed and maintained by Nelo.
The maintainer is available for professional consulting and architectural guidance related to Drupal contact/communication widgets, media systems, and production Drupal implementations.

Supporting this Module

- Check out our sponsor, Dom Host Seo, who made this module possible with their support!

Community Documentation

Currently no external videos or demo sites are available. The module includes a built-in help page accessible via Administration → Help → WhatsApp Chat.

For questions, bug reports, or feature requests, please use the issue queue on Drupal.org.

Activity

Total releases
3
First release
Jul 2026
Latest release
1 day ago
Release cadence
0 days
Stability
100% stable

Release Timeline

Releases

Version Type Release date
1.0.2 Stable Jul 1, 2026
1.0.1 Stable Jul 1, 2026
1.0.0 Stable Jul 1, 2026