SMS task recipes: batch, webhook, or dashboard
The messaging guides are step-by-step — this page is the index that says which steps to take, in which order, depending on what you are actually trying to do. It deliberately does not restate campaign end-to-end; use this page to pick a task path, then follow its links.Decide: batch vs webhook vs dashboard
Pick batch when the recipient list is finite and there is no campaign machinery to maintain. Pick webhook-consumer when your product (not a person) needs to consume DLRs and replies. Pick campaign when marketing will iterate on the send. The rest of this page chains the supporting guides for each intent.
Batch path — review and send
- Open the Messages → Batch SMS wizard or call
POST /messages/batchdirectly. - Work through the review-and-send loop: upload or paste E.164 recipients, then check the rendered segment count and per-country cost before confirming.
Webhook-consumer path — wire receipts and replies before launch
- Register a webhook endpoint and verify HMAC signatures in Node.js or Python: dedupe events, ack fast, survive retries and dead letters, rotate secrets. Build a durable webhook consumer has the full contract.
- Choose the event stream you need: delivery receipts (DLRs) update your message bookkeeping; inbound replies drive two-way flows.
- Before you send production traffic, walk Send gates: pre-flight checklist — wallet posture, opt-out/sync health, quiet hours, frequency caps, and the TCPA voice window — so the first batch is not admitted and blocked in the same afternoon.
Data hygiene — clean the list before any of the three paths
These four guides are path-independent; run them before sending and revisit them after every import:- Import and migrate contacts — pick the right import surface (CSV wizard, async jobs, CDP ingest, or platform connectors), dry-run, map consent, dedupe.
- Opt-out lists — honor STOP keywords and maintain opt-out entries at the right scope.
- Message suppression — keep a tenant-owned suppression list so blocked numbers are filtered at send time.
- DNC pre-flight scrub — scrub recipient lists against do-not-contact entries before launch.
Local compliance — sender identity per destination country
- Sender ID country matrix — check which sender types (alphanumeric numeric, short code, long number) each destination supports and what registration each requires.
- US traffic: complete 10DLC registration before sending from a US long number; keep 10DLC rejections and re-vet open for campaign-review rejections. Toll-free verification covers US toll-free numbers instead.
After the first send — monitor and inspect
- Delivery log — search every delivery by message ID, provider reference, recipient, or sender and work a result row to its answer.
- Insights: deliverability — read the consolidated dashboard across channels to spot degradation before it lands in complaint tickets.
- Smart route preview — call
POST /messages/route-previewto see which channel the router picks, why, and what it costs when the selected channel underperforms or the destination is better served by WhatsApp or RCS.
Troubleshooting — the common misreads
- “Delivered batch shows zero events.” Webhooks are path-dependent: the batch wizard and
POST /messages/batchsend but do not register an endpoint for you. Register the endpoint (Build a durable webhook consumer) and confirm it acks within its timeout before re-sending test traffic. - “Blocked at a gate” reads as “provider rejected.” A gate is a tenant-owned admission check (wallet, quiet hours, suppression, frequency cap). The pre-flight checklist shows the admission order; count blocked rows after launch in the same checklist guide.
- “Deliverability dashboard is clean but recipients say nothing arrived.” DLRs are per-recipient; check the Delivery log for the specific recipient’s status rather than the aggregate window.
- “The legislation oddly prohibits alphanumeric senders.” That is the destination, not a platform bug — confirm from the Sender ID country matrix and pick a compliant sender type per country.
- “US recipients flagged as blocked despite clean registration.” Check brand/campaign review status in 10DLC rejections and re-vet, not the aggregate dashboards.