---
title: "FluentCRM WhatsApp Messaging Without Twilio: A Free Self-Hosted Adapter"
date: 2026-09-11
modified: 2026-09-12
author: Hera
url: "https://techcreative.dev/fluentcrm-whatsapp-messaging/"
categories:
  - name: Blog
    url: "https://techcreative.dev/blog/"
  - name: Plugins
    url: "https://techcreative.dev/plugins/"
post_type: post
word_count: 2031
estimated_tokens: 2641
---

# FluentCRM WhatsApp Messaging Without Twilio: A Free Self-Hosted Adapter

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. 
 
 
 
 
 
 
 In this post 
 
 
 
 
 

- [The four-minute walkthrough](#walkthrough)
- [The two providers FluentCRM ships with](#providers)
- [What the OpenWA adapter adds](#adapter)
- [Twilio vs Meta vs OpenWA at a glance](#compare)
- [Setting it up](#setup)
- [The two settings that keep your number alive](#safety)
- [When to use Twilio or Meta instead](#when-not)
- [Questions](#faq)

 
 
 
 
 
 
 
 
 
 

## 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](https://fluentcrm.com/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](https://developers.facebook.com/documentation/business-messaging/whatsapp/pricing), 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](https://github.com/rmyndharis/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. 
 
 
 
 
 

- Sends from your own linked number, not a new one rented from a provider
- No per-message fees. The only running cost is the server OpenWA sits on
- Templates are usable the moment you save them, because OpenWA has no approval queue
- Replies arrive in the FluentCRM inbox on the contact's record, and you can answer from there
- Registers its own webhook on your OpenWA server when you save, so there is nothing to wire up by hand
- Checks every inbound message against a signing secret you choose
- More than one number? Create another OpenWA session and point a second setup at it

 
 
 
 
 
 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

 
 
 
 
 

- Billed per message, plus carrier and country fees
- Sends from a new number Twilio gives you
- Templates still need Meta's approval
- Official route, so no ban risk from the method itself

 
 
 
 
 
 
 

### Meta Cloud API

 
 
 
 
 

- Billed per delivered template, priced by the recipient's country
- Needs a verified business and a number registered to the API
- Every business-initiated template approved first
- Built for high volume

 
 
 
 
 
 
 

### OpenWA + the adapter

 
 
 
 
 

- No per-message fees. You pay for a server
- Sends from your own linked number
- No template approval step
- Not an official route: keep volume low, accept real ban risk

 
 
 
 
 
 
 
 
 
 
 

## 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](/hosting.md), 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. 
 
 
 
 
 

- You send thousands of messages a day. That's what Meta's Cloud API is built for, and the per-message cost is the price of doing it safely.
- The number is one you can't afford to lose. OpenWA's own advice is to use a dedicated number rather than your main business line. We use ours at 30 a day to opted-in contacts and accept the risk. Make that call deliberately, not by default.
- You work in healthcare, finance or another regulated field. OpenWA itself recommends the official API there.
- Your list never opted in to WhatsApp. No provider fixes that. Email them first.

 
 
 
 
 

### 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

 
 
 
 
 
 
 
 
 
 
 
 Does FluentCRM support WhatsApp messaging?
 

 

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.

 
 
 
 
 
 
 
 Is the FluentCRM OpenWA adapter free?
 

 

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.

 
 
 
 
 
 
 
 Can I send FluentCRM WhatsApp messages from my existing number?
 

 

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.

 
 
 
 
 
 
 
 Will my WhatsApp number get banned?
 

 

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.

 
 
 
 
 
 
 
 Do I need Meta to approve my message templates?
 

 

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.

 
 
 
 
 
 
 
 Can contacts reply, and where do replies go?
 

 

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.

 
 
 
 
 
 
 
 What do I need to run 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.

 
 
 
 
 
 
 
 Is a self-hosted CRM on WordPress better for privacy?
 

 

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. 
 
 
 
 
 
 [Download the free adapter](/download/5550.md)
 
 
 
 
 
 
 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](/fluentcommunity-hosting.md) includes the Fluent licences in the monthly price. Rather have us set up OpenWA and the adapter for you? [Book a call](/book-a-call.md). It’s the same thinking behind [WP Support Agent](/wp-support-agent.md), our other free plugin: self-hosted, and no bill that grows with every message.