How a messaging campaign sends
A campaign with channel sms or whatsapp sends one message per lead, in batches, through Twilio's Bulk Messaging API (public beta). It tracks delivery per lead, retries failures inside the sending window, and turns opt-out replies into DNC entries. Customers' replies reach agents as ordinary Flex chat tasks, and the agent sees which campaign the customer is answering.
A messaging campaign needs no agents and no TaskRouter queue: messages go out on their own, and an agent joins only when a customer replies.
- Pace. Each campaign sends up to
maxPerMinutemessages per minute, at mostbatchSizeper batch. Messaging does not share the voice CPS budget. Twilio's per-sender limits still apply on top. - Batches. Each batch goes to the Bulk Messaging API in one request, and each message is matched back to its lead for tracking. An address appears at most once per batch.
- Tracking. Delivery status is checked every 15 s for fresh batches and every 5 minutes for batches older than an hour. Tracking survives a restart of the service.
- While a message is in flight the lead is in
dialing, just as during a call. - Shared rules. The same contact lists, DNC lists,
callingWindows(here: the sending window), contact-center calendar,maxAttemptsTotaland lead filter and sort as voice.
Text and templates
SMS: text with variables
Twilio fills in the variables (Liquid syntax) per recipient:
Hi {{firstName}}, your plan renews soon
A variable with no value is sent empty (the dialer adds | default: '' to every variable that has no default of its own). Built-in variables: firstName, lastName, fullName, externalId. The SMS body can be up to 1,600 characters; the editor shows the character and segment count (Hebrew letters or emoji make every segment shorter). A Content Template can be used instead of text.
WhatsApp: Content Template
An approved Content Template (HX…) is required. The campaign form lists templates with their WhatsApp approval status (approved, waiting for approval, rejected, not submitted), approved ones first; a template that is not approved will fail. Template variables are mapped to lead fields:
{ "1": "firstName", "plan": "custom.plan" }
Available fields: firstName, lastName, fullName, externalId, phone and custom.<key> from the list's columns. A variable that is not mapped is sent empty. The form previews the message with sample values.
Sender
An E.164 number or a sender pool (comms_senderpool_…). Only senders the Bulk API returns from its senders list are accepted; the campaign form offers them in a picker.
Test send
Test message sends one rendered message to a number you enter, optionally filling the fields from one of the campaign's leads. It is sent outside tracking and compliance checks, which is handy for checking the text on your own phone. The test uses the campaign's saved settings, so save your changes first.
WhatsApp to SMS fallback
With Fall back to SMS (fallbackToSms, needs a sender pool) every recipient is addressed both on WhatsApp and by SMS, and the pool's channel priority picks. The option is available but has not been tried on a live account yet.
All messaging settings are listed in the settings reference.