SMS & broadcasts
Three SMS surfaces:
- One-off SMS from a conversation thread (inbox).
- SMS broadcasts — campaign-style bulk send to many recipients.
- API send — programmatic sending via the developer API.
Inbound SMS to your numbers always flows to the Unified Inbox (Dashboard → Messages).
The inbox
Dashboard → Messages.
- Left column: conversation threads grouped by contact (one row per phone number). Click a thread to see the timeline (SMS + call activity merged).
- Right pane: message history. Type → Send to reply.
- Top filters: All / Incoming / Sent.
- Search: by name, phone, or message body.
Replies are sent from the same phone number the contact originally messaged. If you didn't own that number any more (released), you can't reply — buy back the same number (if available) or message from a different number using the New message flow.
Sending a one-off SMS
From the inbox: New message → enter recipient phone (E.164) → choose the From number (must be SMS-capable and owned by you) → write message → Send.
A failure surface bar will show:
- Recipient is opted out (replied STOP).
- From-number can't send SMS (voice-only).
- Destination country is not enabled in geo-permissions.
- Your monthly SMS quota is exhausted.
SMS broadcasts
Dashboard → SMS Campaigns → New broadcast.
Recipients can be entered two ways:
Quick mode
Paste phone numbers (one per line, or comma-separated). Body is sent verbatim to every recipient.
CSV mode
Upload a CSV with at least a phone column. Any other column becomes a
{{TOKEN}} variable. Header normalization is the same as
campaigns — case number
→ {{CASE_NUMBER}}.
The composer shows clickable token chips above the body textarea — click a
chip to insert {{TOKEN}} at the cursor.
Personalized preview shows the body with the first recipient's variables substituted, so you see exactly what they'll receive.
STOP footer
By default the broadcast appends \n\nReply STOP to opt out. unless the
body already contains "reply stop". TCPA requires a functional opt-out on
marketing SMS in the US — leave the toggle on unless you have a specific
reason.
Sending behaviour
- 1.5s pause between sends — looks natural to carrier filters, avoids burst-pattern blocks.
- Hard cap of 1000 recipients per broadcast for safety.
- Each recipient is sent through the same
SmsService.send()path as one-off SMS, so opt-out + quota + capability rules apply per-recipient. - A recipient who replies STOP during a broadcast is marked OPTED_OUT for that send and added to the org-wide opt-out list.
Opt-out (STOP / START)
The system honors the carrier-standard opt-out keywords automatically:
- Inbound message text
STOP(case-insensitive, alone or with other words) → recipient added to opt-out list, auto-reply confirms. STARTfrom a previously opted-out number → removed from opt-out list, auto-reply confirms.
Once opted out, no future SMS — from any of your numbers — will be sent to that contact until they explicitly opt back in. Voice calls are not affected (STOP is an SMS-only convention).
You can review and manage opt-outs in Dashboard → Compliance → SMS Opt-outs.
10DLC / A2P registration (US SMS)
Sending SMS from US numbers to US recipients requires registering your Brand + Campaign with The Campaign Registry (TCR). Unregistered traffic gets carrier-throttled into the ground.
Status is visible at Dashboard → Compliance → SMS Compliance. Possible states: NOT_REGISTERED, PENDING, APPROVED, FAILED.
We don't auto-register — registration is done at the carrier side. Once you've registered with Twilio, email the brand + campaign SIDs to compliance@zazavoice.com and we'll wire them up. Status is then visible in the dashboard with a single derived badge.
The system does not block SMS sending on registration state — Twilio enforces throttling at the carrier level. Status here is informational and helps you triage deliverability complaints.
International SMS
Each destination country must be enabled in Twilio Console → Messaging → Settings → Geo Permissions. Until a country is enabled, sends to it fail with a permission error. This is a one-time per-country toggle.
Sending FROM a number to a different country also has rules:
- US long-codes can send to US and Canada.
- AU local/toll-free numbers are voice-only — they can't send SMS at all. For an Australian-branded sender to AU recipients, an alphanumeric Sender ID is the right tool (not currently exposed in the dashboard — reach out to compliance@ if you need it).
Limits per plan
| Plan | SMS / month |
|---|---|
| Trial | 9 |
| Traveller | 50 |
| Starter | 500 |
| Pro | 2,500 |
| Enterprise | 5,000 included + overage at $0.01 / segment |
| PAYG | drawn from wallet at $0.03 / message |
A "segment" is up to 160 ASCII characters or 70 Unicode characters. Long messages are split into multiple segments at send time.