Setup guide
Twilio Bulk SMS lets WordPress administrators send single and bulk SMS messages through the Twilio API, directly from the WordPress admin dashboard. It includes contact management, CSV import, a background processed sending queue, delivery tracking, and reporting.
If you don’t have a Twilio account yet, sign up at twilio.com. The trial tier is enough to complete this setup and send test messages to verified numbers.
The plugin uses the official Twilio PHP SDK to communicate with the Twilio API. This is not bundled in the ZIP and must be installed with Composer.
Connect to your server via SSH (or use your hosting control panel’s terminal), then run:
cd wp-content/plugins/twilio-bulk-sms
composer install --no-devThis creates a vendor/ folder inside the plugin directory containing the Twilio SDK.
If your hosting provider does not offer SSH access, install Composer dependencies on your local machine inside a copy of the plugin folder, then upload the resulting vendor/ folder to the same location on the server via FTP/SFTP.
A new “Twilio SMS” menu item will appear in the left hand admin sidebar.
Before configuring the plugin, gather the following from your Twilio Console (console.twilio.com):
Treat your Auth Token like a password. Never share it or commit it to a public code repository.
You need one of the following two options, not both are required, but the plugin supports either:
Option A: A single Twilio phone number
Option B: A Messaging Service
A Messaging Service SID always starts with the letters MG followed by 32 characters. Twilio has several other resource types whose SIDs look superficially similar, most notably a Conversation/Sync Service SID, which starts with IS. These are not interchangeable. Pasting an IS… SID into the Messaging Service SID field will cause every send to fail with an HTTP 400 error from Twilio, and because Twilio rejects the request before it is ever logged, the failure will not appear anywhere in Twilio’s Monitor → Logs, it will simply look like the message vanished. Always copy this value from Messaging → Services, never from Conversations or Sync.
Using a Messaging Service is recommended over a single From Number for bulk sending, because Twilio can automatically distribute messages across multiple numbers in the pool, improving throughput and deliverability.
| Field | Value |
|---|---|
| Account SID | Starts with AC, from Twilio Console dashboard |
| Auth Token | From Twilio Console dashboard (click “View”) |
| From Number | Your Twilio number in E.164 format, e.g. +14155552671 |
| Messaging Service SID | Optional. Starts with MG, overrides From Number when set |
If Test Connection reports that your Messaging Service SID is invalid, double check that the value starts with MG and was copied from Messaging → Services in the Twilio Console, not from Conversations, Sync, or any other product.
Still on the Settings page, you can adjust how bulk sends are processed:
| Setting | Description |
|---|---|
| Batch Size | How many messages to send per processing pass. Default: 50. |
| Delay (seconds) | A short pause between each message in a batch, as a courtesy to Twilio’s API and to reduce carrier level rate limiting. Default: 2. |
| Delivery Callbacks | When enabled, Twilio will report delivery status updates back to your site automatically (see Section 6). |
On success, you’ll see the Twilio message SID and status. The message is also recorded in SMS History.
Messages are added to the queue and begin sending immediately. A recurring background task also checks the queue every minute, so any messages beyond the configured batch size, or any that need retrying, will continue to be processed automatically.
You can pause, resume, cancel, or retry the queue at any time from the Dashboard page.
By default, a message’s status in SMS History reflects only what Twilio returned at the moment it was sent (typically “queued” or “accepted”). To see real time delivery confirmation (“delivered”, “undelivered”, “failed”), enable delivery callbacks.
https://yoursite.com/wp-json/twilio-sms/v1/delivery-statusFrom this point on, Twilio will notify your site automatically whenever a message’s delivery status changes, and SMS History will update to reflect it.
⚙️7.1 Plugin won’t activate / fatal error on activation
⚙️7.2 “Phone and message are required” when sending
⚙️7.3 Bulk messages stay “Queued” and never send
⚙️7.4 Messages fail, but nothing appears in Twilio’s Monitor → Logs
⚙️7.5 Sent messages don’t appear in SMS History
⚙️7.6 Trial account limitations
Deactivating the plugin (Plugins → Installed Plugins → Deactivate) stops all scheduled processing but keeps your data and settings intact, in case you plan to reactivate later.
Deleting the plugin (Plugins → Installed Plugins → Delete, after deactivating) permanently removes all plugin database tables, contacts, queue, and SMS history, and all saved settings. This cannot be undone.
Export your contacts and SMS history to CSV before deleting the plugin if you want to keep that data.
| Item | Where to find it in Twilio |
|---|---|
| Account SID (AC…) | Console dashboard |
| Auth Token | Console dashboard → “View” |
| From Number | Phone Numbers → Manage → Active Numbers |
| Messaging Service SID (MG…) | Messaging → Services |
| Delivery webhook URL | Paste into Messaging Service → Integration → Status Callback URL |
End of document.