Skip to main content
Surge has two mechanisms for sending to multiple recipients: Blasts for one-time sends and Audiences for reusable contact lists. The choice between them depends on whether the same group of people will receive messages more than once.

Blasts vs Audiences

Use a Blast when you have a list of recipients you’re assembling specifically for this send. You pass the recipient list at send time and don’t need to maintain it afterward — weekly flash sales, event announcements, one-time notifications. Use an Audience when the same group of people receives messages regularly. You maintain the audience over time (adding and removing contacts), then blast the whole audience — weekly newsletters, customer cohorts, or geographic segments. Both send the same underlying message; the difference is how you manage the recipient list.

Blasts

Send to a list of phone numbers

The simplest case: pass phone numbers directly in the to array.

Send to contacts

Pass contact IDs (with ctc_ prefix) instead of phone numbers. This links the blast to your contact records for tracking and opt-out management.

Schedule a blast

Add send_at to queue the blast for a future time:

Audiences

Create an audience

An audience is a named contact list. Create it first, then populate it.

Add contacts to the audience

Repeat for each contact, or build this into the workflow that creates or updates contacts.

Blast the audience

Pass the audience ID in the to array.
Surge expands the audience at send time and applies opt-out status automatically — opted-out contacts are skipped, so you never need to filter the list yourself.
You can mix audience IDs, contact IDs, and raw phone numbers in the same to array.

Volume caps

Campaign volume limits apply to all sends, including blasts: Surge queues messages within your daily cap and delivers them in order. If you regularly approach the low cap, request a volume increase through support after your campaign is approved.

Tracking a blast

Blast-level delivery metrics (deliverability rate, opt-out rate) are available in the dashboard under the Blasts section. Per-message delivery status comes through the message.sent, message.delivered, and message.failed webhook events — see Track Message Delivery for the full mechanism.