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






