Overview
Multilingual SMS Notifications for Twilio texts your customers at every step of the order, each in the language of the order, through your own Twilio account. Ready texts for every message come in 34 languages, so a German order gets a German text and an Arabic order an Arabic one without you writing anything.
- Order messages. New order, order status (you choose which statuses), shipment with carrier and tracking link, welcome message for new accounts, low stock for your team.
- 34 languages ready. English, German, French, Spanish, Italian, Portuguese, Dutch, Polish, Czech, Slovak, Hungarian, Romanian, Bulgarian, Greek, Croatian, Serbian, Danish, Swedish, Norwegian, Finnish, Russian, Ukrainian, Turkish, Arabic, Hebrew, Persian, Urdu, Hindi, Chinese, Japanese, Korean, Thai, Vietnamese and Indonesian. Rewrite any of them, per language and per order status.
- Honest SMS length. The editor counts characters and SMS parts the way Twilio bills them (GSM-7 or Unicode), shows the letters that force Unicode and converts Latin, Cyrillic and Greek text to GSM-7 in one click.
- Phone preview. See the message with sample data, right to left for Arabic, Hebrew, Persian and Urdu, and send a test to your phone.
- Right numbers. Local numbers get the country code of the order address (a German "0151 ..." becomes +49 151 ...).
- Never blocks the checkout. Messages are queued, sent right after the order (or by cron), retried on temporary errors and held during quiet hours.
- Know what happened. Delivery receipts signed by Twilio, a log with state, price and the failure reason in plain words, and an SMS card on each order page to text the customer or send the shipment message.
No OCMOD, no core file edits. One licence covers OpenCart 4 and 3. Tested on OpenCart 4.1.0.4 and 3.0.5.1 against a local mock of the Twilio Messages API; other 4.0.2.x to 4.1.x and 3.0.3.8 to 3.0.5.x versions are expected to work but are not tested. You need a Twilio account; Twilio charges you for each SMS part.
Installation
Requirements
- OpenCart 4.0.2.0 to 4.1.x, or 3.0.3.8 to 3.0.5.x
- PHP 7.4 or newer with cURL and OpenSSL
- A Twilio account with an SMS-capable number, an alphanumeric sender ID or a Messaging Service
Install on OpenCart 4
- Go to Extensions > Installer and upload
kv_sms_twilio.ocmod.zip. - Press the install button next to Multilingual SMS Notifications for Twilio.
- Go to Extensions > Extensions, choose Modules and install Multilingual SMS Notifications for Twilio. A cron job "SMS Notifications for Twilio" is added under System > Maintenance > Cron Jobs.
Install on OpenCart 3
- Go to Extensions > Installer and upload
kv_sms_twilio-oc3.ocmod.zip. - Go to Extensions > Modifications and press Refresh.
- Go to Extensions > Extensions, choose Modules and install Multilingual SMS Notifications for Twilio.
First steps
- Open Sales > SMS Notifications > Twilio and enter the Account SID, the Auth Token and the sender (number in +1 format or Messaging Service SID MG...). Press Check connection.
- Send a test message to your own phone.
- Open Messages & languages: check which order statuses send a text (Processing, Shipped, Complete and Canceled are on) and change any text you like.
- Add your team's numbers in Settings > Store team phones for new order and low stock texts.
- Call the cron address from the settings every minute or every few minutes, so retries, held messages and delivery checks run. On OpenCart 4 the built-in cron job does the same when the OpenCart cron is set up.
Updating
Upload the new package the same way. Texts, switches and the log stay; tables and settings are brought up to date the next time you open the extension.
Removing
Uninstalling the module removes the log, your own texts, the switches, the settings (Twilio credentials included), the events and the cron job.
Configuration
Twilio
- Account SID / Auth Token: from the Twilio console. The token is stored encrypted with your store's key and never shown again; leave the field empty to keep it.
- Send from: a Twilio phone number (or an alphanumeric sender ID where your countries allow it) or a Messaging Service SID.
- Check connection reads your Twilio account name, state and balance.
- Delivery receipts: Twilio calls the shown address with the delivery state of each message. Calls without a valid Twilio signature are refused. When your store is not reachable from the internet, the cron job asks Twilio about messages without a receipt instead.
Messages & languages
- Pick an event on the left: New order, Order status, Shipment, New account, Low stock or Order page message (the start of a text you send by hand).
- Pick the recipient (Customer or Store team) and, for Order status, the status.
- Send this message switches the message on or off for that event, recipient and status. Defaults: new order to both, order status to customers for Processing, Shipped, Complete and Canceled, shipment on, low stock to the team on, welcome message off.
- Pick a language: your store languages come first, then all 34 languages with ready texts.
- Edit the text and click a placeholder to insert it. Empty placeholders are dropped with their label ("Tracking:" disappears when there is no number).
- The counter shows GSM-7 or Unicode, characters, SMS parts and characters left. Convert to GSM-7 replaces accents and Cyrillic or Greek letters when that makes the text GSM-7.
- Save text stores an own text for this language (for Order status: for the chosen status). Remove own text goes back to the ready text.
Which text is sent: own text for the status, own text for all statuses, ready text, in the language of the order; else the same in the fallback language, then English.
Settings
- SMS notifications on: off stops new automatic messages; tests and the order page still work.
- Store team phones: one number per line.
- Low stock level: the team gets the low stock text when an order leaves this quantity or less.
- Use the country of the address / Default country code: how local numbers get their country code.
- Use the ready texts / Fallback language.
- Send messages: at once (right after the order or status change) or only with the cron job.
- Quiet hours: customer texts that come up in this window wait until it ends (store time). Team texts are not held. Held texts are released when you switch quiet hours off.
- Attempts per message, Messages per cron run, Keep the log for (days).
- Tracking links per carrier:
carrier = address with [tracking_number] or %s, used for [tracking_url]. - Cron address: call it every minute or every few minutes.
- Licence key.
Usage
Automatic messages
- New order: when an order gets its first status (checkout or an order created in the admin): the customer and your team.
- Order status: when the status changes to one you switched on, e.g. "Your order #1042 is now Shipped" with a link to the order for customers with an account. The status name is taken in the language of the order.
- New account: welcome text when a customer registers (off by default).
- Low stock: to your team when an order leaves a product at or below the low stock level.
Each message is queued once (the same event is never texted twice), written in the recipient's language and sent at once or by the cron job.
Order page
Every order has an SMS card: the customer's number and the language of the order, all messages for the order with their state, a box to text the customer (it starts with the order page text in their language) and the shipment message with carrier and tracking number.
Message log
All messages with date, number, event, language, text, SMS parts and encoding, state and the price Twilio reported. Filter by state or event, search by phone or order number (#1042). Failed messages show why in plain words (for example "The customer replied STOP"); send them again or cancel queued ones. Send queued now works the queue at once.
Overview
Setup steps, messages in the last 30 days, delivered share, SMS parts billed and the share sent as Unicode, the cost Twilio reported, messages per day and the languages your customers read.
Licence
Automatic messages run while the licence is active or in the 14-day trial. The admin pages, test messages and the order page always work.
FAQ
Do I need a Twilio account?
Yes. Messages go out through your own Twilio account and Twilio bills you per SMS part. The extension has no SMS credit of its own.
Which languages are ready?
34: English, German, French, Spanish, Italian, Portuguese, Dutch, Polish, Czech, Slovak, Hungarian, Romanian, Bulgarian, Greek, Croatian, Serbian, Danish, Swedish, Norwegian, Finnish, Russian, Ukrainian, Turkish, Arabic, Hebrew, Persian, Urdu, Hindi, Chinese (Simplified), Japanese, Korean, Thai, Vietnamese and Indonesian. The admin pages are in English.
How is the language chosen?
By the language of the order, then the customer account, then your store language, then the fallback language you set. Your store needs no extra languages installed for this.
Why does my text cost two SMS?
A single SMS holds 160 GSM-7 characters or 70 Unicode characters; longer texts are split into parts of 153 or 67. One letter outside GSM-7 (like a curly quote) makes the whole text Unicode. The editor shows these letters and can convert them.
Does a slow Twilio answer slow down the checkout?
No. Messages are queued and sent after the page is done (on PHP-FPM) or by the cron job. Temporary errors are retried.
What if a customer replies STOP?
Twilio blocks further texts to that number; the log shows "The customer replied STOP" and the message is not retried.
Was it tested with real SMS?
It was tested end to end against a local mock of the Twilio Messages API (sending, errors, retries, signed delivery receipts, status checks) on OpenCart 4.1.0.4 and 3.0.5.1. No real SMS was sent during testing.
Does it use OCMOD?
No. Events only, no core file edits.