[Open Source] WhatsApp Channel for Mautic 6 + Zender — Send, Queue, Schedule, Track & Receive Messages

Hi Mautic community,

We’ve just published a new major version of an open-source WhatsApp plugin we have been developing at 7 Cats Studio Corp. for Mautic 6.

Mautic WhatsApp Channel — Zender Transport

Current version: 2.2.1

GitHub:

The idea behind the project is to make WhatsApp behave much more like a real native communication channel inside Mautic, while using Zender as the transport layer.

This is not an integration with the official Meta Cloud API. Zender manages the WhatsApp connections/accounts, while Mautic handles contacts, campaigns, messages, queueing, scheduling and the operational workflow.


What can it do now?

Send WhatsApp directly from a Mautic contact

This is probably one of my favorite features.

When you open a contact/lead profile in Mautic, you get a button to:

Send WhatsApp

You can write the message directly from the contact profile and send it through the WhatsApp account already associated with that contact.

The user does not need to choose a sender manually every time.

Each Mautic contact can keep its fixed association with its corresponding Zender/WhatsApp account, and that relationship is respected across direct sends, campaigns and segment operations.


Reusable WhatsApp messages

There is now a dedicated WhatsApp Messages area inside Mautic.

Messages can be created once and reused in:

  • Mautic campaigns
  • Manual segment sends
  • Multi-segment sends
  • Demo/test sends
  • Other WhatsApp workflows

Messages also support Mautic contact field placeholders.


Native Mautic campaign action

The plugin adds a WhatsApp action to the Mautic campaign builder.

You can select a previously created WhatsApp message and let the campaign enqueue it for the corresponding contact.

The campaign does not communicate directly with the provider. Everything goes through the controlled queue.


Controlled sending queue

One of the biggest parts of the project is the dispatch queue.

Instead of trying to send everything immediately, messages enter a controlled queue where we can manage:

  • Pending messages
  • Sending windows
  • Sending frequency
  • Per-account limits
  • Global limits
  • Retries
  • Cooldowns
  • Attempts
  • Scheduled availability
  • Expiration
  • Account pauses
  • Dispatch history

This makes it possible to control how aggressively each WhatsApp account sends.

For example, you can define the hours during which messages are allowed to leave the queue and the interval between sends.


Schedule segment sends

You can select one or several Mautic segments and create a WhatsApp queue operation for them.

The operation can have:

  • A start date/time
  • An optional end/expiration date
  • Multiple selected segments
  • Deduplication of contacts that belong to more than one selected segment

So if the same contact exists in three selected segments, that contact is queued only once for that operation.

An active queue operation can also be cancelled, which stops the messages that have not yet been sent.


Receive WhatsApp messages inside Mautic

The plugin is no longer send-only.

We now import incoming WhatsApp messages from Zender and show them inside the Zender Control area in Mautic.

Incoming messages can be associated with an existing Mautic contact when there is a unique match.

The interface also distinguishes cases such as:

  • Contact matched
  • Ambiguous match
  • No matching contact
  • Unusable phone number

This gives us a growing inbound WhatsApp history directly inside Mautic.


Tracking and logs

We wanted considerably more visibility than simply “the API call returned OK”.

The plugin keeps queue and attempt history including information such as:

  • When the message was queued
  • When it became eligible for sending
  • Which account was used
  • Number of attempts
  • Provider message ID
  • Provider status
  • Provider response fingerprints
  • Errors
  • Retry decisions
  • Dispatch timestamps

There is also provider status synchronization.

When Zender exposes a subsequent delivery status, we can distinguish the initial send from the later provider status instead of treating every successful API request as final delivery.

In the interface, “Sent by Zender” specifically means Zender reports the message as sent toward WhatsApp. Delivery/read status is treated separately when that information is available.


Multimedia

WhatsApp messages can also include attachments such as:

  • Images
  • Audio
  • Video
  • Documents

The attachment can be associated with a reusable WhatsApp message or added to supported direct-send workflows.


AI-assisted Spintax

We also added optional AI-assisted message variation.

The plugin can be configured with:

  • OpenAI
  • Anthropic / Claude
  • xAI / Grok

The AI can generate a separate Spintax version of an existing message.

The original message is preserved, the generated result can be reviewed and edited, and only then can it replace the original content.

This is useful when sending larger controlled batches and you want meaningful message variation without manually writing dozens of alternatives.


Zender Control dashboard

The plugin includes an operational control area with sections for:

  • Overview
  • Sending and speed
  • Accounts and quotas
  • Queue and history
  • WhatsApp campaigns
  • Received replies
  • Configuration
  • Diagnostics

The objective is to make the integration observable instead of hiding everything behind cron jobs.


English and Spanish

The UI is designed to support both:

  • English
  • Spanish

We are currently polishing the language packs as the number of features has grown considerably.


Fresh installation support

Version 2.2.1 also consolidates the plugin for clean installations on another compatible Mautic 6 instance.

The plugin now includes its own database foundation and subsequent migrations for the tables used by:

  • Dispatch configuration
  • WhatsApp accounts
  • Dispatch queue
  • Dispatch attempts/history
  • Received WhatsApp messages
  • Reusable WhatsApp messages
  • AI settings
  • Scheduling and other later features

During plugin installation it also creates the Mautic contact field used to store the fixed Zender/WhatsApp account association when that field does not already exist.


Requirements

  • Mautic 6
  • PHP 8.2+
  • A working Zender installation/account
  • Zender API credentials
  • Cron/CLI access for the background workers

License

The project is open source under the GNU GPLv3.

Original project-specific development is:

Copyright (C) 2026 7 Cats Studio Corp.

The repository also preserves applicable Mautic and third-party copyright notices.


Feedback welcome

This plugin started as something we needed operationally, but it has grown into a much more complete WhatsApp channel for Mautic than we originally expected.

We are especially interested in feedback from people who:

  • Run Mautic 6 in production
  • Already use Zender
  • Want WhatsApp integrated into campaigns
  • Need controlled sending instead of immediate bulk sends
  • Want inbound WhatsApp messages visible inside Mautic
  • Are willing to test the clean-install process on another Mautic instance

The code is available here:

Issues, testing, pull requests and suggestions are very welcome.

Developed and maintained by 7 Cats Studio Corp.

Schedule and Segment manager

Received messages

WhatsApp directly to lead

WhatsApp event registered

Add WhatsApp as a campaign action

1 Like