# Newsletters

A newsletter is a single message that you send to a group of people at once. Newsletters make it easy to broadcast a single message to a wide group of people at a predictable time without setting up a campaign workflow.

## How it works[](#how-it-works)

A **Newsletter** is a single message that you want to send to a group of people. You can schedule a newsletter or send it immediately. Newsletters provide a simple way to broadcast a message to your audience without setting up a complex campaign.

You might send a newsletter to alert your audience to changes in your terms of service, or to a group of people when you onboard people belonging to an account.

## Send a newsletter[](#send-a-newsletter)

The steps to set up a newsletter are fairly simple, but each step includes settings that we’ve explained in the sections below.

1.  Go to **Broadcasts** and click **Create Broadcast**.
2.  Pick **Newsletter**.
3.  Determine who gets the newsletter in the [Recipients](#recipients) step.
4.  Set a [Goal](#set-a-goal) for your newsletter.
5.  Set up your message [Content](#newsletter-content).
6.  Review your message and either send or [Schedule it](#review-schedule).

## Recipients[](#recipients)

You can send a newsletter to a group of *People who match your conditions* or to *Everyone in your workspace*. On the right, you’ll see how many people will receive your newsletter. Click *View list* to see the list of expected recipients.

[![On step 1 of newsletter creation. On the left is the question, who should receive this newsletter. Under that are two options. On the left is the button, People matching conditions. In the middle is, Everyone in workspace. This is selected and highlighted blue. On the right is a panel titled Recipients. It reads, 76 people total in this workspace. In the top right of the panel is a button, View list.](https://docs.customer.io/images/newsletter_recipients.png)](#9f89e818a984411a39bd1b7eb12a06ce-lightbox)

### People matching conditions[](#people-matching-conditions)

On step 1 of newsletter creation, you decide who will receive your newsletter. If you select, “People matching conditions,” then you can define who will receive the message based on one or more segment, attribute, newsletter, or message conditions.

**Segment condition**

People will receive your newsletter if they belong or don’t belong to specific segments. Filter for people IN or NOT IN segments and join conditions using AND or OR logic.

[![filter-segment-condition.png](https://docs.customer.io/images/filter-segment-condition.png)](#88786ca7eaa2da3afc4324506daddf96-lightbox)

Here’s a walkthrough of setting up a segment condition:

**Attribute condition**

People will receive your newsletter 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}}`.](/merge-people) attributes meet these conditions. You can filter for people whose attributes exist, don’t exist, are equal to, or are not equal to a value.

[![filter-attribute-condition.png](https://docs.customer.io/images/filter-attribute-condition.png)](#943fd990303e64a9ea39317ee5701cb6-lightbox)

**Newsletter condition**

People will receive your newsletter if they previously received one or more newsletters.

[![filter-newsletter-condition.png](https://docs.customer.io/images/filter-newsletter-condition.png)](#373c6dd43f50be5fb3388bdd3619fcca-lightbox)

 Newsletter status indicates if it’s been sent

If you select a newsletter as a condition, you may see a green or yellow dot on the newsletter icon. This is a “status” indicating whether the newsletter has been sent (green) or drafted (yellow).

**Message condition**

People will receive your newsletter if they meet conditions related to any message in your workspace, like:

*   people have never been sent any in-app message
*   people have ever been sent the email “Thank You email” in “Anniversary Campaign”

[![filter-message-condition.png](https://docs.customer.io/images/filter-message-condition.png)](#262a1239daa50ec7cdc035cac283e0a3-lightbox)

### Import recipients[](#import-recipients)

Some people might not have a shared condition that makes it easy to add them to a segment. In these cases, you can send a newsletter 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 campaigns, 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.](/journeys/segments/).

Check out [more information on manual segments here](/journeys/manual-segments/).

### Email: Skip duplicate addresses[](#dedupe)

If your workspace is **ID only**, multiple people 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.](/journeys/attributes/). The *Skip duplicate email addresses* setting prevents you from sending your email newsletter multiple times to the same address. It is on by default.

At your newsletter’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 person.

This setting only prevents duplicate deliveries; we do not affect your newsletter audience in any other way. For example, we don’t modify the *Is a recipient* segment criteria for your newsletter—all of the people in the original audience of the newsletter, including people 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 newsletter.

 Recipient counts in your Newsletter set up do not account for duplicates

Deduplication takes place at send time, so the audience counts you see when you set up your newsletter and A/B test might be inflated by people with duplicate emails in your audience.

While this setting prevents you from sending duplicate emails, you can deduplicate people in your workspace by [enabling the **email or ID** setting](/journeys/workspaces/#migrate-workspace), which makes `email` a unique attribute. This ensures that multiple people cannot have the same email address attribute.

### SMS/WhatsApp: Skip phone number duplicates[](#dedupe-phone)

The `phone` attribute isn’t required to be unique in Customer.io. If more than one person 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.

[![The sending settings for a newsletter. The Skip duplicate phone numbers setting is on.](https://docs.customer.io/images/newsletter-skip-duplicate-phone.png)](#004ecf0bce0d3f67e95726d8db083fad-lightbox)

### Set a subscription preference[](#audience-topic-subscription)

If you’re using our [Subscription Center](/journeys/subscription-center/) feature, you’ll set your newsletter’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 people are unsubscribed from the topic, they won’t get messages from the broadcast.

[![set the topic for a broadcast](https://docs.customer.io/images/subs-center-broadcast-2.png)](#783a1919ed0973e36e13da645551156e-lightbox)

If you don’t want to set a topic, you can use the [*All subscribed and unsubscribed* setting](/journeys/newsletters/#send-to-unsubscribed-users). You should use this setting sparingly—for things like transactional-style messages and important notices. Sending messages to unsubscribed people can violate their trust—or even violate local laws and regulations (GDPR, CAN-SPAM, etc)!

### Send to unsubscribed users[](#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*:

[![Under Sending options, there is a field titled Subscription preference. To the right is a dropdown field with All subscribed and unsubscribed selected.](https://docs.customer.io/images/newsletter_unsub%281%29.png)](#3cba6eab8ebcec85d251c8e62b5f636e-lightbox)

 Be careful when sending to unsubscribed people. Continuing to message someone who has unsubscribed could breach anti-spam laws in your country, and we [reserve the right to terminate your account](https://customer.io/legal/acceptable-use-policy/) if you do so.

## Goal: determine what makes your newsletter successful[](#goal-determine-what-makes-your-newsletter-successful)

You track the success of your newsletter based on whether a person performs an event, enters a segment, or exits a segment after they receive your newsletter.

If a person 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](/journeys/campaign-conversions/) for more information about conversions; newsletters have the same goal options as campaigns.

We track conversions for the following message/delivery types:

Conversions attributed

Conversions not attributed

Email

Slack Message

SMS

Create or update person action

Customer.io Push Notifications

Customer.io In-app Messages

Webhooks1

1You must [enable webhook conversions manually](/journeys/webhooks-action/#track-conversions).

Slack and *Create or update person* 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[](#content-write-your-message)

You can send a newsletter 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}}`.](/using-liquid).

How you create your message is up to you. Choose [the editor that works for you](/journeys/email-editors/), [use customer data](/journeys/using-liquid/), and even [create variations to test](#testing-newsletter-broadcasts)!

 You may need to set a send rate for webhooks

If you haven’t set a [*Send rate*](#limiting-send-rate), we issue requests to your webhook server as quickly as we can. Make sure that your webhook server can handle the spike in traffic from a broadcast or set a send rate to limit the number of requests we send to your webhook server at a time.

### Set up an A/B test[](#testing-newsletter-broadcasts)

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 people. After you send your newsletter, 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!

[![newsletter_add_test_2](https://docs.customer.io/images/newsletter_add_test_2.png)](#ce4568fd3c9f134a346eab8385c42e77-lightbox)

1.  Set your **Sample Percentage**: this is the percentage of recipients in the test. After the test, you can send the best-performing variant to the rest of your audience.
    
    Let’s say you want 20% of recipients to receive one of two emails with different subject lines. A randomly selected 10% of people will receive each email, and you can choose to automatically send the one which performs better to the remaining 80% once the test is over. Start by setting the Sample percentage to 20% using the slider.
    
    [![newsletter_sample_percentage](https://docs.customer.io/images/newsletter_sample_percentage.png)](#944a5fc93d9e3679d5cbaaf26bbb37af-lightbox)
    
2.  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.
    
    [![newsletter_variations](https://docs.customer.io/images/newsletter_variations.png)](#5a3baf41c89a5828301ea1e38f435133-lightbox)
    
     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](/journeys/conclusive-ab-results/).
    
3.  (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.
    
    [![image.png](https://docs.customer.io/images/image%28228%29.png)](#17f07230f577c52f0ff0f4b8341c965c-lightbox)
    

 You must choose a winner within 7 days of activating your newsletter.

If you’re manually choosing a winner, make sure you do so before the week is up. Otherwise, you won’t be able to select one and send to your remaining recipients. This limit helps reduce load times for newsletter metrics.

#### Find the results of your test[](#find-the-results-of-your-test)

When you send your newsletter, you can start to monitor the results of your test on the **Test** tab of the Newsletter’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 newsletter
*   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[](#modify-your-test)

If you want to cancel your test, edit the duration of the test, or edit the metric used to determine the winner, click **Edit** under **Details**.

[![image.png](https://docs.customer.io/images/image%28230%29.png)](#0f7d2020103f0d0de11efb0d20a0cc90-lightbox)

*   **Cancel automatic send**: If you don’t want to send the winning message automatically, click **Edit** in the bottom-most timeline of the *Details* section. When you turn off automatic sends, you can’t turn it back on. You’ll still have the chance to send to your remaining recipients manually.
    
*   **Send to remaining recipients manually**: If you didn’t enable *Automatically send winner to remaining recipients*, you can manually determine the “winning” test and send it to your audience. When you feel that you’ve got conclusive test results, click **Send to remaining**. Then you’ll pick the variant you want to send and when.
    

[![image.png](https://docs.customer.io/images/image%28231%29.png)](#121f484a987e79a91fc6f7ceb1bfc586-lightbox)

## Review & schedule your newsletter[](#review-schedule)

You can send your newsletter immediately or schedule it to send for a future date/time.

Click **Send at specific time**, and choose a date and time to schedule your message. You should always schedule your newsletter at least 5 minutes in advance, and note that the timezone defaults to your local time.

[![Limit send rate to 1000 messages per hour. A note that it will take at least 2 hours to send based on the volume of recipients.](https://docs.customer.io/images/newsletter-base-review.png)](#0b0e62a3c0b24bf282289e22bf6c10ac-lightbox)

 Did you just update a snippet?

If you just updated a [snippet](/journeys/snippets/) used in your messages, make sure you wait a couple of minutes before activating your workflow to ensure all updates appear in your delivered messages.

### Send in recipient’s timezone[](#send-in-recipients-timezone)

You can also schedule messages to send at the specified time in each recipient’s timezone. [Learn more about sending in users’ timezones](/journeys/timezone-match/).

We calculate who receives your newsletter at send time, so the audience count you see under *Recipients* could differ from the final count we send to.

### Limit send rate[](#limiting-send-rate)

Set a maximum rate limit [to maintain deliverability](/journeys/domain-warming/). When you limit the send rate, we queue messages for delivery in batch sizes of the number you specify.

On the *Review* tab, turn on **Limit send rate**. You can choose between two rate limit types: a **Fixed rate** or a **Daily ramp**.

#### Fixed rate[](#fixed-rate)

Choose **Fixed rate** if you want to send a consistent maximum number of messages per minute, hour, or day.

[![Limit send rate is turned on and shows a fixed rate of 1000 messages per hour, sending evely across each period.](https://docs.customer.io/images/newsletter-fixed-rate.png)](#38dda259dba0b1ad4b672b0cfba81b44-lightbox)

1.  Specify your **Limit**: the maximum number of messages and the time period.
    
2.  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 campaign 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 people receive your messages at the right time.

#### Daily ramp[](#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 newsletters for each day.

[![daily ramp starts at 100 messages per day then rises to 8000 towards the end of the 21 day ramp period.](https://docs.customer.io/images/newsletter-daily-ramp.png)](#601e606b81e2163b6e8fade97a4e1a34-lightbox)

When you select **Daily ramp**, configure the following settings:

*   **Starting Daily Volume**: The number of messages to send on the first day. For new domains, start with a low number like 100. For established domains, you can start higher—like 1,000. You can learn more about the recommended ramp up rates in [Domain warming](/journeys/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 newsletter will ramp up to sending by the end of the period. This is especially important if you’re using this newsletter 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](/journeys/domain-warming/#core-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 newsletter’s status changes to *Sent*—just like any other newsletter.

#### Rate limit constraints[](#rate-limit-constraints)

*   Newsletters 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 newsletter—adjust your settings accordingly.
*   If you’re [sending in a user’s timezone](/journeys/timezone-match/#send-newsletters-in-your-users-time-zone), 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](#pause-resume) a newsletter 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[](#edit-rate-limit-while-sending)

You may want to change the rate limit while your newsletter 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.

1.  From your newsletter, click the **Recipients** tab.
2.  Click **Edit rate limit**. To edit the rate limit, your newsletter must follow these conditions:
    *   The newsletter state must be *Sending*.
    *   The newsletter must have a configured rate limit. You can’t add a rate limit if the newsletter is sending as fast as possible with no limit.
3.  Modify the settings as you see fit. You can change between Fixed rate, Daily ramp, or choose Unlimited to remove the limit.
4.  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.

[![A schedule that shows sent newsletters with a marker for Today. After Today is a representation of the estimated schedule based on the updated rate limit.](https://docs.customer.io/images/newsletter-edit-rate-limit.png)](#a1afe06a4c4561645f4db89ab64c0121-lightbox)

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 newsletter will restart sending the next day, not immediately. Specifically, it will restart in the next 24-hour period, which is based on when your newsletter first started sending. So if your newsletter started sending at 12 PM originally, your newsletter will restart sending after you save your changes and it reaches 12 PM again.

## Pause and resume a newsletter[](#pause-resume)

You may want to pause a newsletter 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 newsletter is paused

When you resume a newsletter, it continues sending to your original recipient list. It cannot account for people who match, or stopped matching, your recipient list while it was paused.

1.  In Broadcasts, click a newsletter with a status of **Sending**. (If the status is “Sent,” then all recipients have received the newsletter and it cannot be paused.)
    
    [![newsletter-pause-1.png](https://docs.customer.io/images/newsletter-pause-1.png)](#961c9252c59b9ac50a4bdcd3299d5042-lightbox)
    
2.  In the top-right, click **Actions** then select **Pause sending** from the dropdown. This action immediately pauses any further messages from sending.
    
    [![newsletter-pause-dropdown.png](https://docs.customer.io/images/newsletter-pause-dropdown.png)](#cd6b5b6491079d89a1764a4081431d25-lightbox)
    
    Back on the Broadcasts landing page, the newsletter’s status will change to **Paused**.
    
    [![newsletter-pause-3.png](https://docs.customer.io/images/newsletter-pause-3.png)](#2df014a7fafa671e48b8c64bd840305b-lightbox)
    
3.  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).
4.  After you make your changes, click **Resume sending** in the top-right of the newsletter then confirm your action. The newsletter will continue sending to people who have not received the newsletter yet; people who already received the newsletter will NOT receive another version.
    
    [![newsletter-pause-4.png](https://docs.customer.io/images/newsletter-pause-4.png)](#56dea162703cdac023e7e7e1bf7e13d0-lightbox)
    
    The newsletter’s status will update to “Sending” then “Sent” when all recipients have received it.

 You cannot pause newsletters that send in a user’s time zone.

You can pause newsletters with A/B variations and with a rate limit. But you cannot pause newsletters that are scheduled to [send in a user’s time zone](#review-schedule).

## Send to an individual person[](#send-to-an-individual-person)

After you schedule and send your newsletter, you can send the content to an individual person who wasn’t in your original audience.

You can only send your broadcast or newsletter to an individual this way. If you want to re-send your newsletter to a large number of new recipients, you should copy the newsletter and re-send it to a new segment of people.

1.  Go to *Broadcasts* and select the broadcast you want to re-send. The broadcast must have a *sent* status.
2.  Go to the *Content* tab.
3.  Select the *Recipient* you want to send your message to. The recipient must be a person already in your workspace; you cannot send a newsletter to a person you haven’t identified.
4.  Click **Send newsletter to the recipient**.
    
    [![re-send newsletter content](https://docs.customer.io/images/re-send-newsletter.png)](#d118822dbb015ef4998ce5fb54a92966-lightbox)
    

## Copy newsletters to another workspace[](#copy-newsletter-broadcast)

If you use similar messages in different workspaces, you can copy a broadcast or a newsletter to another workspace. Go to **Broadcasts**, find the newsletter 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**.

[![copy a newsletter across workspaces](https://docs.customer.io/images/copy-newsletter.png)](#0bade70bed8225efdb4ce6827d75de99-lightbox)

Note that when you copy newsletters 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}}`.](/using-liquid) 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.