Direct send: one-off sends from one chooser
Outbound → Direct send is the entry point for one-off, ad-hoc messages. It offers two paths — send to a list through the batch wizard, or pick a single contact and jump straight into the channel composer with the recipient prefilled. Use it when a send does not warrant a campaign.1. When to use direct send
Use direct send for one-off, ad-hoc sends: a follow-up to one lead, a single confirmation, a quick test message, or a finite CSV list you want to ship once. If the send needs no audience, no dry-run, no holdouts, and no campaign-level analytics, it belongs here. Campaigns cover everything heavier — see section 7.2. The two chooser cards
The page leads with two cards:- Send to a list (CSV). Links to the batch wizard at
/messages/batch, where you upload or paste recipients, review segments and cost, and send. The full walkthrough lives at Batch SMS; the same wizard pattern applies to other channels the batch route supports. - Send to one contact. Opens an inline contact-picker dialog. Search your contacts, pick one, choose the channel to reach them on, and the chooser deep-links you to that channel’s composer.
3. The contact picker
Open Send to one contact and the picker dialog asks for two things: a contact, then a channel.- Search. Type a name, phone number, or email address. The search debounces by 250 ms and returns up to twelve contacts per page. Contacts with no phone number and no email address are disabled, because no composer could prefill a recipient for them.
- Channel selector. Once you pick a contact, the dialog lists every channel it can route to — SMS when the contact has a phone number, Email when the contact has an email address — with the exact identifier each will send to. When both are reachable, SMS is pre-selected as the priority default, but the choice is explicit: pick Email before confirming if that is the channel you want. A single-channel contact shows the one route it will take, so the routing is never silent.
/messages/<channel> with the recipient prefilled.
4. URL contract
The chooser’s deep link carries two query parameters:?to=— the identifier that matches the channel you picked (the phone number for SMS, the email address for Email). The channel composer’s To field reads this and prefills immediately.?contactId=— the contact row id. This keeps the audit trail honest and supports future contact deep-links, even though the composer itself only reads?to=.
5. Per-channel shortcuts
Below the two cards, a shortcut row links straight into each channel composer: SMS (/messages/sms), WhatsApp (/messages/whatsapp), and Email (/messages/email). Use these when you already know the channel and the recipient, and want to compose without picking a contact first. WhatsApp is reachable this way rather than through the picker — its composer follows the WABA-scoped flow and does not accept a ?to= prefill.
6. Who can use it
Direct send follows the same role gate as the batch wizard: workspace owner, admin, and developer roles can send. Members without one of those roles can view the page but the send surfaces are gated the same way as/messages/batch.
7. Direct send vs a campaign
Both surfaces share the same send path — a campaign adds the draft lifecycle, audience persistence, and analytics rollup on top.
See also
- Batch SMS guide — the CSV path in full, including the API contract
- Batch drafts and history — resume saved drafts and review sent batches
- Send a campaign end-to-end — when the send outgrows direct send