SMS
Text messages for the three things that cannot wait for an inbox — and the log that says which were sent, refused, or never attempted.
Admin → Settings → SMS · SMS log
SMS is optional, and narrow on purpose
Texting costs money per message, so the platform sends only what genuinely needs to arrive within seconds. Everything else is email. Three purposes:
| Purpose | Sent to |
|---|---|
| Verification code | Somebody confirming a phone number. |
| Table ready | A waiting guest whose table has come free. |
| Payment link | A customer being asked to pay for an order by link. |
Leave SMS switched off and all three fall back to what they did before. Nothing breaks.
Setting it up
| Field | Notes |
|---|---|
| Enable SMS | The master switch. Off, nothing is attempted and nothing is billed. |
| Provider | Twilio. Its credentials appear when you select it. |
| Sender | The number or name a customer sees the text from. It stays yours when you change provider, because it answers a question about your business rather than about the provider. |
| Test recipient | A number to send a test to. Use it before you rely on any of this. |
One more switch here: Require a code to change a phone number. On, changing a number sends a verification code to the new one first — worth it if your customers can be texted a payment link.
The log
Every attempt, with counts across the top: delivered, rejected, never sent, delivery rate and billed segments. Segments are what you actually pay for — a long message is split into several — so a rising bill with flat message counts means your wording grew.
Three states, and the difference matters
| Status | Meaning | Fixed |
|---|---|---|
| Delivered | The provider accepted it. | — |
| Rejected | The provider was called and said no. | At the provider — credentials, sender, account balance. |
| Never sent | The provider was never called. | Here, in Settings. |
Never sent is the useful one, because the platform explains itself: SMS switched off, no credentials saved, no sender set, the number missing its country code, the number containing something that is not a digit, the message empty or too long, or the PHP cURL extension not installed. Each is stated in those words on the row.
Filter by status or purpose, search by number, message or the provider's own reference, and Prune old entries. Each message carries the provider reference, so a dispute can be taken to the provider with a number they recognise.
When it doesn't work
Everything says "Never sent"
Read the reason on the row — it names the missing piece. Usually SMS is off or no credentials are saved.
Everything says "Rejected"
The provider refused. Check the credentials, the sender number is one your account may send from, and the account has credit.
One message says the credentials were already rejected
After the provider refuses your credentials once, later messages are skipped rather than retried — there is no point paying for repeated rejections. Fix the credentials and the next message goes.
A number is refused for its country code
Numbers need their country code, starting + or 00. A local-format
number is ambiguous and is refused rather than guessed at.
The bill is higher than the message count suggests
Check billed segments. Long messages cost several each.