Send a broadcast
- Dashboard
- API / SDK
-
Go to Lists, open the list and click Run Broadcast.

-
Fill in the Create Broadcast form. It has three sections: Who, What and When.

Section Field Required What to enter Who List ID Yes The idof the list to send to. Filled in for the list you opened.Who Tenant No The tenant this broadcast belongs to. Leave it as Global (no tenant) if you don’t use tenants. What Template Name Yes The template to send. What Notification Category Yes The category for this send. Use a promotional sub-category, or a sub-category with Is commercial turned on, so the email carries one-click unsubscribe headers. What Selected Channels No Send on only some of the template’s channels. If you leave it empty, the broadcast goes out on all channels. What Variable data No JSON for the template’s variables. It’s the same for every recipient. See Personalize the message. What Precompute No Prepare a scheduled broadcast in advance so sending starts at the scheduled time. See Precompute a scheduled broadcast. When No Immediately, After delay or Scheduled time (Local Time). See Schedule a broadcast. -
Click Trigger one-time Broadcast. The form shows how many users the broadcast goes to and when. Check the details, then click Confirm. This step stops bulk sends going out by mistake.

Choose the preference category
The preference category decides which vendor credentials the broadcast uses and which user preferences apply to it. Send broadcasts in a promotional sub-category. Don’t use transactional or system categories: a bulk send in those categories can delay your other transactional and system notifications. Always give recipients a way to unsubscribe from marketing emails. There are two ways to do it:- One-click unsubscribe header. Emails sent in a sub-category with Is commercial turned on, which promotional sub-categories are by default, carry one-click unsubscribe headers automatically. Recipients can unsubscribe right within their email. Gmail and Yahoo require bulk senders (>5,000 messages a day) to support RFC 8058 one-click unsubscribe.
- Unsubscribe link in the email. Add
{{$hosted_preference_url}}to the template to link to the hosted preference page, where recipients can turn off the category.
Personalize the message
There are two kinds of variables in a broadcast template:- Broadcast data is the same for every recipient. For example,
{"promo_code": "SUMMER2024", "discount": "20%"}sends the same code and discount to everyone. Pass it as Variable data on the dashboard ordatain the API. - Recipient properties change per user. Use
$recipient.<property>in the template, like$recipient.name, and SuprSend fills in each user’s own value.
Schedule a broadcast
A broadcast sends right away unless you schedule it.How a broadcast runs
When a broadcast starts, SuprSend works through these steps:- Fetch the list. It reads the users on the list.
- Load the template and vendors. It loads the live template version and its channels, then the vendor set up for each of those channels in the category. If a channel has no vendor set up, SuprSend logs the error and skips that channel.
- Fetch user profiles. It loads each user’s channels and properties.
- Apply preferences. It works out each user’s active channels from their user and tenant preferences for the category. Users who opted out, or have no active channel, are skipped.
- Render messages. It fills in the template for each user with the broadcast
dataand their$recipientproperties. Users whose message fails to render are marked failed. - Trigger notifications. It calls each vendor’s API to deliver the messages. Vendor credentials are checked only here, so wrong credentials show up as delivery errors in message logs.
Precompute a scheduled broadcast
Steps 1 to 5 of how a broadcast runs build the send plan before the first message goes out. On a large list, this can take 5 to 30 minutes. For a time-critical send, that delay can make the message stale by the time it reaches users. Precompute runs steps 1 to 5 before the scheduled time and stores each user’s rendered message. At the scheduled time, SuprSend only runs step 6, so sending starts right at the scheduled time. Precompute works only on scheduled broadcasts, with After delay or Scheduled time (delay or trigger_at in the API). It’s ignored on broadcasts sent immediately.
When to turn it on
Turn it on when starting at the scheduled time matters more than reaching users who join the list at the last minute:- Notifications tied to a clock time, like a pre-market brief, a flash sale or a live event starting.
- Scheduled sends to large lists, where building the plan at send time would push delivery past the scheduled time.
Turn on precompute
- Dashboard
- API

How precompute works
SuprSend starts preparing 2 hours before the scheduled time. When the plan is ready, the broadcast waits and dispatches at the scheduled time. If you schedule a broadcast less than 2 hours ahead, SuprSend starts preparing right away. The plan may not be ready at the scheduled time, so the broadcast could be delayed. SuprSend finishes the plan first and then starts sending, so every message still comes from the same plan.Changes after the snapshot
Once preparation finishes, the plan is fixed. Changes you make after that don’t reach this broadcast. They apply from the next one. On a large list, preparation runs in batches, so avoid edits while it’s running: an edit made during preparation can reach part of the list. This holds for every change after the snapshot:- List changes: users joining or leaving, list syncs, and edits to a segment condition or database sync query.
- User and tenant changes: property edits and tenant branding used by the template.
- Preference and opt-out changes.
- Template edits.
equities-subscribers list with precompute on. SuprSend snapshots the list at 7:00 AM, 2 hours before. Between 7:00 AM and 9:00 AM:
- 1,200 users join the list. They don’t get today’s brief. They get tomorrow’s.
- 300 users switch their email preference off. They still get today’s brief on email.
- A product manager edits the template’s subject line. Today’s brief goes out with the old subject line.
See precompute in the logs
The broadcast execution log shows each preparation step with a timestamp: when the list was snapshotted (total_users), how many profiles were loaded, the preference summary, and when the plan became ready (final_users). Timestamps use the timezone set in the dashboard’s timezone switcher.

Preparation steps for a precomputed broadcast

The plan is ready and the broadcast waits for the scheduled time
Broadcast ends early with no recipients
If preparation ends with 0 users to send to, SuprSend ends the broadcast right away and logs the reason. It doesn’t wait for the scheduled time. This happens when, for example:- The template fails to render for every user.
- No vendor is set up for the broadcast’s category.
- Every user has opted out of the category.
- The category is turned off for the broadcast’s tenant.

A plan with no one to send to ends right away
Check delivery
The broadcast execution log shows a summary of the broadcast up to the moment it triggers notifications. To see whether each message was delivered, open message logs and filter by the broadcast’sbroadcast_id.
FAQ
Why were some users on the list skipped?
Why were some users on the list skipped?
- Unsubscribed: the user opted out of the broadcast’s category, or of the channel within it.
- Missing channel: the user doesn’t have that channel in their profile, or the channel was marked inactive after an earlier hard bounce.
The broadcast shows Partial Failure. What went wrong?
The broadcast shows Partial Failure. What went wrong?
name on their profile, so their message couldn’t render and was dropped. Everyone else still got theirs. Fill in the property for those users, or add a fallback with the default helper, like {{default $recipient.name "there"}}, so the message renders even when the property is missing. Keys in Variable data must also match the template exactly.Nothing was sent and the log mentions vendor configuration
Nothing was sent and the log mentions vendor configuration
Does a broadcast reach users who join a segment list after I schedule it?
Does a broadcast reach users who join a segment list after I schedule it?
In Sandbox, the broadcast ran but nobody received anything
In Sandbox, the broadcast ran but nobody received anything
What if the list is still updating when precompute takes its snapshot?
What if the list is still updating when precompute takes its snapshot?
My dynamic list was empty when I scheduled the broadcast. Will precompute still send to it?
My dynamic list was empty when I scheduled the broadcast. Will precompute still send to it?
Can two precomputed broadcasts use the same list?
Can two precomputed broadcasts use the same list?
What if the vendor credentials are wrong on a precomputed broadcast?
What if the vendor credentials are wrong on a precomputed broadcast?