Documentation · Revolutionary SMS 0.2.0
Revolutionary SMS, set up and explained.
How to connect an SMS provider, send your first text, record consent and handle STOP, START and HELP.
Released version 0.2.0
Current release setup and checks
Send text messages through your SMS provider, with a consent list and automatic opt-out handling.
- Choose a provider on the Providers screen, save its credentials, then run Test Connection and Send Test.
- Add the incoming-message webhook URL, with its key, to your provider so STOP, START and HELP reach the plugin.
- US business texting needs A2P 10DLC or toll-free registration with your provider; the plugin does not register you.
Check your setup
- Text only your own phone from a test installation before sending to customers.
- Check that a number marked opted out is shown as blocked in the log, and keep real phone numbers out of screenshots.
Quick start
Up and running in minutes
Step 1
Install and activate
Upload the plugin zip in Plugins, Add New, then Activate.
Step 2
Pick a provider
SMS, Providers. Choose your service and enter its credentials, then Save provider.
Step 3
Test the connection
Click Test Connection where the provider offers it, then use Send Test to text your own phone.
Step 4
Set up consent
Add the incoming-message webhook URL to your provider so STOP, START and HELP reach the plugin.
On this page
Start here
Where everything lives
Everything is under Revolutionary Plugins, SMS: Dashboard, Providers, Send Test, Consent, Log and Settings.
Requirements
WordPress 5.8 or later and PHP 7.4 or later.
License and updates
Enter your Revolutionary bundle key once in Multipurpose Dashboard, Welcome. The plugin uses it only for updates.
Connect
Providers
Choose an active provider, and optionally a fallback that is tried once when the active one fails.
| Provider | What it does |
|---|---|
| Twilio | SMS and MMS. Account SID with an Auth Token or API Key, and an optional Messaging Service. |
| RingCentral | SMS through the JWT flow. Tokens are cached encrypted and refreshed automatically. |
| SimpleTexting | API v2, US and Canada. |
| EZ Texting | SMS and MMS, US and Canada. |
| Textellent | SMS and MMS, including partner accounts. |
| Klaviyo | Posts an event; a Klaviyo Flow sends the text. |
| SlickText | Broadcast to lists or segments only. |
| Custom HTTP | Any single-request SMS API. Textdrip, Textmunication, TextSpot and UniFi Talk are presets. |
Custom HTTP templates
Use a JSON or form body template. Placeholders are substituted inside parsed values, so message text cannot break the request.
Developers
Sending from code
One call sends a text through the active provider.
$result = rev_sms_send( $to, $message, [ 'purpose' => 'marketing' ] ); Then check $result->ok, and read $result->error for the reason when it is false. Attach images with media_urls on providers that support MMS.
Plugins that should not depend on this one can call do_action( 'rev_sms_send', $to, $message );. Messages are limited to 1600 characters.
- rev_sms_pre_send filter: block or reroute a message
- rev_sms_sent and rev_sms_failed actions
- rev_sms_providers filter: register your own adapter
Compliance
Consent list and send rules
SMS, Consent shows every number's status and a history of each opt-in, opt-out and HELP request.
Each history row keeps the source, IP address, page and the exact wording agreed to. Search and filter the list, open a number's history, add an entry by hand (an opt-in needs a note saying how the person agreed) and export the full history to CSV.
| Purpose | Rule |
|---|---|
| Any message | A number that opted out gets nothing but consent notices. |
| Marketing | Needs a recorded opt-in. |
| Transactional | Allowed unless Require consent for every message is on. |
| Staff alerts | Never held back for missing consent. |
A refused send returns the status blocked and appears in the log without calling the provider.
Incoming messages
STOP, START and HELP
Point your provider's incoming-message webhook at your site.
The address is /wp-json/rev-sms/v1/inbound/<provider>?key=.... The key is generated per site and can be replaced. Twilio's fields are read exactly and it gets an empty TwiML reply; other providers are read from common field names, and the rev_sms_inbound_parse filter can parse anything else.
Stop words follow the CTIA guidelines and the FCC's 2025 list, and a message that starts with one counts as STOP. Twilio error 21610, meaning the number texted STOP to your sending number, is recorded as an opt-out automatically.
Confirmation and replies
Send new subscribers an opt-in confirmation text. STOP, START and HELP replies are optional and off by default because Twilio answers them itself. Use the {brand} and {help_contact} placeholders.
Reporting
Log and settings
SMS, Log records every send with its status, provider message ID and error text.
Old rows are pruned by the retention setting, and you can choose not to store message text.
Encryption key
Provider secrets are encrypted at rest with AES-256-GCM. Define REV_SMS_ENCRYPTION_KEY in wp-config.php to keep the key outside the database.
Phone numbers
Numbers are normalized to E.164 using the default country code in Settings.
Troubleshooting
Common questions
Open SMS, Log. A blocked status means the consent rules refused it: the number opted out, or a marketing text had no recorded opt-in.
SlickText is broadcast only. Send to a list or segment, or use another provider for one-to-one texts.
Check that the incoming-message webhook URL, with its key, is saved in your provider's settings.
Stuck on something?
Search the forums, open a ticket, or write to us. A real person reads every message.
