Free Plugin · FluentCRM 3.2.0

FluentCRM WhatsApp Messaging Without Twilio or Meta's Approval Queue

By Hera, TechCreative · 11 September 2026 · 8 min read
FluentCRM WhatsApp messaging arrived in version 3.2.0 this week, and out of the box it talks to exactly two providers: Twilio and Meta’s Cloud API. We built a free adapter that adds a third. It’s called OpenWA, an open-source gateway you run on your own server, so FluentCRM sends WhatsApp from a number you already own and nobody bills you per message.

Below: what it fixes, how to set it up in about ten minutes, and the part most tutorials skip, which is when you should not use it.

Watch the Four-Minute Walkthrough

Connecting a number, the settings screen, the daily cap, and a real reply landing in the FluentCRM inbox. Prefer reading? Everything in the video is written out below.

FluentCRM Messaging: The Two Providers It Ships With

The new messaging module in FluentCRM 3.2.0 is genuinely good. Campaigns, automations and a shared inbox for WhatsApp and SMS, all on the contact record you already have. The catch is where the messages actually go. You pick Twilio or Meta’s Cloud API, and both come with a bill that grows with your list.

Twilio: a pricing page and an invoice

The last SMS campaign we ran through Twilio was budgeted at about $560. The invoice came to roughly $1,500, close to three times the plan. Carrier fees, segment counts and per-country surcharges add up in ways the headline rate doesn’t show you until the money has already gone. Twilio’s pricing page is accurate. It just isn’t the same document as the invoice.

Twilio also hands you a new number to send from, so every contact meets you as a stranger on WhatsApp, not as the business they already know.

Meta Cloud API: cheaper per message, expensive in patience

Going direct to Meta cuts out the middleman, but not the paperwork. You need a verified business account, a phone number registered to the API, and approval for every message template before you can send it to anyone who hasn’t written to you first. Since July 2025 Meta bills per delivered template message, priced by the recipient’s country.

If you haven’t been through that setup yet, set aside an afternoon and a fair amount of patience. For a small business sending a few dozen messages a day, that’s a lot of process for not much volume.

What the OpenWA Adapter Adds to FluentCRM WhatsApp

OpenWA is a free, MIT-licensed WhatsApp gateway with around 14,000 stars on GitHub. You run it in Docker on a VPS or on your own machine, then link a phone by scanning a QR code, exactly like opening WhatsApp Web on a laptop. From then on it exposes a small API for sending and receiving messages as that number.

On its own, FluentCRM has no idea OpenWA exists. The adapter fixes that. It plugs into the FluentCRM messaging module as a third option under Settings → Messaging → WhatsApp, sitting next to Twilio and Meta Cloud API, and from there everything works the way it does with the paid providers: campaigns, automations, and the conversation inbox.
That signing secret matters more than it sounds. FluentCRM only verifies signatures for Twilio and Meta. Any other provider’s webhook reaches it unchecked, so without the adapter’s own check, anyone who guessed the URL could post fake “replies” into your CRM.

Twilio vs Meta vs OpenWA at a Glance

All three plug into the same FluentCRM WhatsApp screen. What changes is who you pay, whose number you send from, and what you’re risking.

Twilio

Meta Cloud API

OpenWA + the adapter

Setting Up FluentCRM WhatsApp Messaging in About Ten Minutes

You need FluentCRM with FluentCampaign Pro and its WhatsApp module switched on, PHP 8.0 or newer, and somewhere to run OpenWA that your WordPress site can reach over HTTPS. A small VPS is plenty. If you’re on one of our managed hosting plans, ask and we’ll put it on the same server.
01

Run OpenWA

Start it with the Docker Compose file from the OpenWA repository, open its dashboard, and create a session. The session ID is what the adapter uses to know which number to send from.
02

Link your phone

Scan the QR code from WhatsApp on the phone that holds the number, the same way you’d log in to WhatsApp Web. The phone keeps working normally afterwards.
03

Install the adapter

Upload the zip under Plugins → Add New → Upload and activate it. OpenWA now appears as a third provider on the WhatsApp settings screen.
04

Fill in four fields

Server URL, session ID, API key, and a random signing secret of 16 characters or more. Save, and the adapter registers its webhook on OpenWA by itself.
Rather not keep the API key in the database? Define FLUENTCRM_OPENWA_API_KEY in wp-config.php and the adapter reads it from there instead.

The Two Settings That Keep Your Number Alive

Here’s the trade-off, stated plainly. OpenWA drives WhatsApp Web, not Meta’s official business platform, and WhatsApp’s terms don’t cover bulk automated sending that way. OpenWA’s own documentation doesn’t sugar-coat it: “There is always a non-zero risk of account restriction or ban.” The single biggest trigger it names is sending a first-ever message to a large batch of numbers that have never messaged you.

So the adapter ships with two guards switched on by default.

Max messages per day

The default is 200. We run ours at 30. Once the cap is reached, any further sends that day fail with a clear message instead of piling up, so a campaign to a few hundred people goes out over a couple of weeks as a steady trickle, not a blast. OpenWA’s guidance is that a few messages a minute is sustainable and thousands an hour is not. A low daily cap is the easiest way to stay on the right side of that.

Block sends to unknown numbers

On by default. The adapter refuses to message any number that isn’t already a FluentCRM contact and has never written to you, which is exactly what a scraped or bought list looks like. Only an explicit “no” switches it off. Leave the field blank or mistype it and the guard stays on.
What neither guard does: check consent. A contact you imported from a CSV counts as “known” and gets through. FluentCRM’s own release notes put it well: “Email consent does not automatically become WhatsApp consent.” Ask people on email first, and only message the ones who say yes.

When You Should Use Twilio or Meta Instead

This adapter is the right tool for a small business sending a few dozen messages a day to people who know it. It’s the wrong tool in four situations, and we’d rather tell you now than after your number gets restricted.

What it looks like in practice

We sent our first campaign through it this week. One of the early replies was a polite “thanks, I’m not interested”, which landed in the FluentCRM inbox on that person’s contact record, right where we could reply or unsubscribe them without leaving WordPress. That’s the whole point of doing this inside a self-hosted CRM on WordPress: the conversation, the contact and the campaign all live in one database you control, not three SaaS dashboards.

Frequently Asked Questions

Yes, from version 3.2.0, as part of FluentCampaign Pro. Twilio and the Meta Cloud API are built in. The free OpenWA adapter adds a third provider that runs on your own server.

Yes. The adapter is GPL licensed and free to download, and OpenWA itself is MIT licensed and free. The only running cost is the server OpenWA sits on.

Yes. You link it by scanning a QR code, like WhatsApp Web, and the phone keeps working normally. OpenWA recommends a dedicated number because there is always some risk of restriction, so choose which number you connect deliberately.

Nobody can promise it won’t. The daily cap and the unknown-number block remove the most common triggers, but WhatsApp’s terms don’t cover automated sending through WhatsApp Web. Keep volume low and only message people who opted in.

No. OpenWA has no approval step, so a template you save in FluentCRM can be used straight away. Keep templates short and personal, because spam reports are what get numbers restricted.

Yes. Replies arrive in the FluentCRM messaging inbox on the contact’s record, and you can answer from there. Every inbound message is checked against your signing secret before FluentCRM sees it.

FluentCRM with FluentCampaign Pro and the WhatsApp module switched on, PHP 8.0 or newer, and an OpenWA server your WordPress site can reach over HTTPS. A small VPS is enough.

Contacts, conversations and campaign history stay in your own WordPress database and your own OpenWA server, with no third-party messaging service holding copies. You are still responsible for consent and for keeping both servers secure.

Get the Free Adapter

It’s free and it’ll stay free. Download the zip, point it at an OpenWA server, and you get FluentCRM WhatsApp messaging that runs on hardware you control instead of on someone else’s meter. Start with a low daily cap, message people who asked to hear from you, and raise it slowly.
Requires FluentCRM with FluentCampaign Pro and PHP 8.0+. Version 1.0.0, GPLv2.

Running FluentCRM on a site that’s already stretched? Our FluentCommunity hosting includes the Fluent licences in the monthly price. Rather have us set up OpenWA and the adapter for you? Book a call. It’s the same thinking behind WP Support Agent, our other free plugin: self-hosted, and no bill that grows with every message.