One-time sends
UpdatedA one-time send is a single message that you send to a group of profiles at once. One-time sends make it easy to broadcast a single message to a wide audience at a predictable time without setting up an automation workflow.
How it works
A One-time send is a single message that you want to send to a group of profiles. You can schedule a one-time send or send it immediately, providing a simple way to broadcast a message to your audience without setting up a complex automation.
You might send a broadcast to alert your audience to changes in your terms of service, or to a group of profiles when you onboard profiles belonging to an account.
Set up a one-time send
The steps to set up a one-time send are fairly simple, but each step includes settings that we’ve explained in the sections below.
- Go to Broadcasts and click Create Broadcast.
- Pick One-time send.
- Determine who gets the message in the Recipients step.
- Set a Goal.
- Set up your message Content.
- Schedule your message.
- Review and activate your message.
Recipients
You can send a broadcast to a group of Profiles that match your conditions or to Everyone in your workspace. On the right, you’ll see how many profiles will receive your message. Click View list to see the list of expected recipients.
Profiles matching conditions
On step 1 of one-time send creation, you decide who will receive your message. If you select, “Profiles matching conditions,” then you can define who will receive the message based on one or more segment, attribute, or message conditions.
Segment condition
Profiles will receive your message if they belong or don’t belong to specific segments. Filter for profiles IN or NOT IN segments and join conditions using AND or OR logic.


Here’s a walkthrough of setting up a segment condition:
Attribute condition
Profiles will receive your message if their profileAn instance of a person. Generally, a person is synonymous with their profile; there should be a one-to-one relationship between a real person and their profile in Customer.io. You reference a person’s profile attributes in liquid using customer—e.g. {{customer.email}}. attributes meet these conditions. You can filter for profiles whose attributes exist, don’t exist, are equal to, or are not equal to a value.


One-time send condition
Profiles will receive your message if they previously received one or more messages.


One-time send status indicates if it’s been sent
Message condition
Profiles will receive your message if they meet conditions related to any message in your workspace, like:
- profiles have never been sent any in-app message
- profiles have ever been sent the email “Thank You email” in “Anniversary Automation”


Import recipients
Some profiles might not have a shared condition that makes it easy to add them to a segment. In these cases, you can send a broadcast to your audience by uploading a CSV or importing a Google Sheet to produce a manual segmentA segment is a group of people in your workspace. Use segments to trigger automations, track membership over time, or fine-tune your audience. There are two types of segments: data-driven and manual. Data-driven segments automatically update when people start or stop matching criteria. Manual segments are static..
Check out more information on manual segments here.
Email: Skip duplicate addresses
If your workspace is ID only, multiple profiles in your workspace can have the same email attributeA key-value pair that you associate with a person or an object—like a person’s name, the date they were created in your workspace, or a company’s billing date etc. Use attributes to target people and personalize messages.. The Skip duplicate email addresses setting prevents you from sending your email broadcast multiple times to the same address. It is on by default.
At your broadcast’s send time, we generate a deliveryThe instance of a message sent to a person. When you set up a message, you determine an audience for your message. Each individual “send”—the version of a message sent to a single member of your audience—is a delivery. for each member of your audience. If this setting is on and a subsequent member of your audience has the same email attribute as someone who already generated a delivery, we will skip that profile.
This setting only prevents duplicate deliveries; we do not affect your audience in any other way. For example, we don’t modify the Is a recipient segment criteria for your message—all of the profiles in the original audience, including profiles with duplicate email addresses who were skipped, will join the Is a recipient segment. This helps prevent you from accidentally sending repeat or follow-up emails to someone who already received your message.
Recipient counts do not account for duplicates
While this setting prevents you from sending duplicate emails, you can deduplicate profiles in your workspace by enabling the email or ID setting, which makes email a unique attribute. This ensures that multiple profiles cannot have the same email address attribute.
SMS/WhatsApp: Skip phone number duplicates
The phone attribute isn’t required to be unique in Customer.io. If more than one profile in Customer.io has the same phone number, you’ll end up sending duplicate outbound messages.
When you enable the Skip duplicate phone numbers setting, and we send a message to a phone number, we’ll ignore any subsequent messages to that phone number.


Set a subscription preference
If you’re using our Subscription Center feature, you’ll set your broadcast’s topicA category of message, set within your workspace’s subscription center, that people can subscribe to or unsubscribe from. Topics let your audience determine the kinds of messages they want to get from you. in the Subscription preference setting. If profiles are unsubscribed from the topic, they won’t get messages from the broadcast.


If you don’t want to set a topic, you can use the All subscribed and unsubscribed setting. You should use this setting sparingly—for things like transactional-style messages and important notices. Sending messages to unsubscribed profiles can violate their trust—or even violate local laws and regulations (GDPR, CAN-SPAM, etc)!
Send to unsubscribed users
You can opt to send your message to unsubscribed users—which you might do to notify users of important information like a change to your terms of service or scheduled maintenance. Go to the Recipients tab under Sending options:


Be careful when sending to unsubscribed profiles. Continuing to message someone who has unsubscribed could breach anti-spam laws in your country, and we reserve the right to terminate your account if you do so.
Goal: determine what makes your message successful
You track the success of your one-time send based on whether a profile performs an event, enters a segment, or exits a segment after they receive your message.
If a profile performs your goal criteria within the time frame you configure, the messageThe instance of a message sent to a person. When you set up a message, you determine an audience for your message. Each individual “send”—the version of a message sent to a single member of your audience—is a delivery. is marked converted. You can set goals to determine the success of your messages, and follow conversion rates over time to improve your message strategies. See Goals for more information about conversions; one-time sends have the same goal options as automations.
We track conversions for the following message/delivery types:
| Conversions attributed | Conversions not attributed |
|---|---|
| Slack Message | |
| SMS | Create or update profile action |
| Customer.io Push Notifications | |
| Customer.io In-app Messages | |
| Webhooks1 |
Slack and Create or update profile actions are often internal or used for analytics purposes; they don’t always send messages to end-users. For that reason, we don’t attach conversions to them. You can enable webhook conversions on individual webhook actions.
In the Goal section of the workflow, you can decide if you want to track opens and clicks (on by default).
Content: write your message
You can send a broadcast for any channel– email, in-app, push, SMS, or webhooks. Select your channel of choice to begin.
While most channels are self explanatory, you can select Webhook to “broadcast” requests to your webhook server for each member of your audience. You might do this to trigger in-app messages or messages from a service outside Customer.io. When you elect to broadcast webhooks, you can personalize the URL or payload for each member of your audience using liquidA syntax that supports variables, letting you personalize messages for your audience. For example, if you want to reference a person’s first name, you might use the variable {{customer.first_name}}..
How you create your message is up to you. Choose the editor that works for you, use customer data, and even create variations to test!
You may need to set a send rate for webhooks
Set up an A/B test
You can add an A/B test to evaluate variations of your message and find the one that most resonates with your audience. You’ll set up a test and send it to a sample percentage of profiles. After you send your broadcast, you can track variation performance and send the most successful version to your remaining recipients.
Click Add Test in Content step to set up an A/B test. You can send your tests to a sample percentage, and automate sending to the rest. Adding a variation will copy your first message, so tweaking one variable of the message should be easy!




Click Add variation to create the messages you want to test. While you can test anything, we recommend that you only change one variable per test to produce a reliable test. You can add up to 8 variations.
Use a statistically significant test audience
Results are most reliable when you have at least 500 recipients per variation. With fewer recipients, your test may not produce Conclusive Results.
(Optional) Enable Automatically send winner to remaining recipients to send the winning option to your audience as soon as we decide the winner. Select the metric you want to use to decide the winner and how long the test should run before sending it to the remaining recipients.


You must choose a winner within 7 days of activating your one-time send.
Find the results of your test
When you send your broadcast, you can start to monitor the results of your test on the Test tab of the broadcast’s Overview page.
From here, you’ll see the current metrics for each variation, with the metric chosen to track the winner in bold. The Details section of the page shows the timeline for the test:
- When you first sent the message
- To what percentage of your recipients
- How much longer the test will run
- When the winning message will be sent to the remaining recipients.
Modify your test
If you want to change how the winning variant is evaluated, go to the Test tab.
Under Details, click Edit test.


After you turn off “Automatically send winner”, you can’t turn it back on. You have the option to send to your remaining recipients manually.
Send to remaining recipients manually
If Automatically send winner to remaining recipients is off, you can manually determine the “winning” test and send it to your audience.
When you have conclusive test results, go to the Test tab and click Send to remaining. Then choose the variant you want to send and when.


Schedule your message
You can send your broadcast immediately or schedule it to send for a future date/time.
Click Schedule for later to set a future time. You should always schedule your message at least 5 minutes in advance, and note that the timezone defaults to your local time.


Did you just update a snippet?
Send in recipient’s timezone
When you schedule a broadcast to send later, you can send it at a specified time in each recipient’s timezone. Learn more about sending in users’ timezones.
We calculate who receives your message at send time, so the audience count you see under Recipients when you schedule the message could differ from the final count we send to later.
Limit send rate
Setting a maximum rate limit can help you maintain good deliverability. When you limit the send rate, we queue messages for delivery in batch sizes of the number you specify.
On the Schedule tab, turn on Limit send rate. You can choose between two rate limit types: a Fixed rate or a Daily ramp.
Fixed rate
Choose Fixed rate if you want to send a consistent maximum number of messages per minute, hour, or day.


Specify your Limit: the maximum number of messages and the time period.
Choose your Send Mode: send evenly or send as fast as possible.
Sending evenly across each period is the default to protect your downstream systems from getting overloaded. However, you might choose Send as fast as possible up to the limit in each period if your content is time-sensitive or you have automation conditions dependent on this message.
Note, you can’t set a daily fixed rate if you’ve enabled sending in a recipient’s timezone to ensure profiles receive your messages at the right time.
Daily ramp
Choose Daily ramp to exponentially increase your send volume over multiple days. This is ideal for domain warming; it automates the manual warm-up schedule so you don’t have to create multiple messages for each day.


When you select Daily ramp, configure the following settings:
Starting Daily Volume: The number of messages to send on the first day. Start with a low number like 100. You can learn more about the recommended ramp-up rates in Domain warming.
Target Daily Volume: Set a target that reflects the maximum number of messages you’ll expect to send on a daily basis. This is the volume the message will ramp up to sending by the end of the period. This is especially important if you’re using this message to warm up your domain. You don’t need to warm it up past your max daily send rate.
Number of Days: How many days the ramp lasts (up to 60). The daily volume increases each day until the ramp period ends or all recipients receive the message. We’ll send across the day, too, not all at once.
If recipients remain after the last day of your ramp, we continue sending at the final day’s rate until all recipients receive the message.
Preview the chart to see the projected daily send volume and make sure your adhering to best practices for ramping. We’ll warn you if your daily ramp might not be optimized too.
After the ramp completes and all recipients have received the message, the broadcast’s status changes to Sent—just like any other message.
Rate limit constraints
- One-time sends must finish sending within 60 days. If your rate limit settings would take longer than 60 days to reach all recipients, you can’t activate the message send—adjust your settings accordingly.
- If you’re sending in a user’s timezone, you can set a fixed rate per hour or minute, but not day. You also can’t set a daily ramp schedule.
- If you pause and resume a one-time send during a ramp, it picks up where it left off based on how many messages have already been sent—it doesn’t skip days.
Edit rate limit while sending
You may want to change the rate limit while your one-time send is sending to improve your domain warming outcomes. For instance, if your emails are getting deferred or engagement rates are lower than expected, you may want to slow your send rate. This allows mailbox providers more time to evaluate the traffic.
- From your one-time send, click the Recipients tab.
- Click Edit rate limit. To edit the rate limit, your message must follow these conditions:
- The message state must be Sending.
- The message must have a configured rate limit. You can’t add a rate limit if the message is sending as fast as possible with no limit.
- Modify the settings as you see fit. You can change between Fixed rate, Daily ramp, or choose Unlimited to remove the limit.
- Click Save changes.
The daily schedule will show the daily rate for the messages that have already been sent followed by the estimated schedule for the new rate limit.


In the image above, notice that the Today marker (Day 7) shows a volume greater than the restart volume (Day 8). When this happens, your one-time send will restart sending the next day, not immediately. Specifically, it will restart in the next 24-hour period, which is based on when your message first started sending. So if your message started sending at 12 PM originally, your message will restart sending after you save your changes and it reaches 12 PM again.
Review your one-time send
After you set up your one-time send, go to the Review tab to activate your message.
Check the high-level view of your settings, content, and schedule. When you’re ready to send, click Send or Schedule at the top.
Pause and resume a one-time send
You may want to pause a one-time send when you notice a typo after sending or need to make some other change to your message. You can pause if the message hasn’t finished sending to all of your recipients. Any messages already sent cannot be recalled, though.
You can’t change recipients while your one-time send is paused
- In Broadcasts, click a one-time send with a status of Sending. (If the status is “Sent,” then all recipients have received the message and it cannot be paused.)


- In the top-right, click Actions then select Pause sending from the dropdown. This action immediately pauses any further messages from sending.

Back on the Broadcasts landing page, the broadcast’s status will change to Paused.

- Go to the Content tab, click Edit content and make your changes.
- If editing a message with A/B variations, choose the variation then proceed to edit.
- You can modify any message content (email, in-app, etc) or field (subject, to, from, etc). You can’t modify your recipient conditions, tracking parameters, goals, or send options (rate limiting).
- After you make your changes, click Resume sending in the top-right of the one-time send then confirm your action. The message will continue sending to profiles that have not received the message yet; profiles that already received the message will NOT receive another version.

The broadcast’s status will update to “Sending” then “Sent” when all recipients have received it.
You cannot pause one-time sends that send in a user’s time zone.
You can pause one-time sends with A/B variations and with a rate limit. But you cannot pause one-time sends that are scheduled to send in a user’s time zone.
Send to an individual profile
After you schedule and send your message, you can send the content to an individual profile that wasn’t in your original audience.
You can only send your message to an individual this way. If you want to re-send it to a large number of new recipients, you should copy the one-time send and re-send it to a new segment of profiles.
- Go to Broadcasts and select the broadcast you want to re-send. The broadcast must have a sent status.
- Go to the Content tab.
- Select the Recipient you want to send your message to. The recipient must be a profile already in your workspace; you cannot send a broadcast to a profile you haven’t identified.
- Click Send newsletter to the recipient.


Copy one-time sends to another workspace
If you use similar messages in different workspaces, you can copy a broadcast or a one-time send to another workspace. Go to Broadcasts, find the one-time send or broadcast that you want to copy, and click Copy to. Then select the workspace you want to copy your items to, and click Continue.


Note that when you copy one-time sends and broadcasts, we’ll reset settings that don’t exist in the destination workspace—like layout, audience, etc. You should also check your liquidA syntax that supports variables, letting you personalize messages for your audience. For example, if you want to reference a person’s first name, you might use the variable {{customer.first_name}}. syntax in your destination workspace. You may not have the same attributes or other variables in your destination, so you may need to update liquid statements to make sure that your messages render and send properly.

