Getting started
Requirements
Versions
| Requirement | Minimum |
|---|---|
| WHMCS | 8.0 |
| PHP | 7.4, on the server WHMCS runs on |
| libphonenumber | Any version WHMCS provides — see below |
The addon also needs to be able to reach your platform install over HTTPS from the WHMCS server. If outbound requests are firewalled, nothing will send.
On the platform side
- An API key with the
sms_sendandwa_sendpermissions. Create it under Tools → API Keys; both permissions are selected by default when you add a key. - The matching service on your subscription —
smsto send SMS,whatsappto send WhatsApp. A key with the permission but a subscription without the service is rejected at send time. - Something to send through: an Android device, a gateway with credit, or a linked WhatsApp account.
libphonenumber
libphonenumber is not optional, and the plugin package does not carry a copy of
it. The libphonenumber\PhoneNumberUtil class must be loadable by
WHMCS.
The reason is delivery safety rather than tidiness. Recipient numbers are validated
before they are sent, but that validation exempts Brazil — so a number that is
both invalid and parses as Brazilian is delivered to whichever real Brazilian
subscriber holds it. Only libphonenumber can tell that number apart from a good one; a
length or shape check cannot. So if the class is absent, the addon sends nothing
at all and writes a single phone_library_missing entry to the WHMCS
module log naming it.
Check before you install anything
WHMCS 8.x normally ships libphonenumber in its own vendor/ tree, so in most
cases it is already loadable and there is nothing to do. Confirm it the direct way:
activate the addon and send one test message from Send Message. If the
class is missing the send fails and the phone_library_missing entry appears
in the module log, at Configuration → System Logs → Module
Log.
composer require inside the
WHMCS root. WHMCS manages that vendor/ directory itself, and
running composer against it can rewrite WHMCS's own autoloader and dependency tree
— breaking far more than this plugin. Ask your host or WHMCS support for the
supported way to add a library to your installation.
The WHMCS cron
One template — the domain renewal reminder — is driven by the WHMCS daily cron rather than by an event. If your cron is not running, every other message still sends and only that one silently never fires. Confirm the cron is healthy under Configuration → System Health before concluding the reminder is broken.