Manage subscription preferences
UpdatedLearn how to set, find, and filter subscription preferences for your audience—including adjusting preferences in the UI, migrating from another service, and using the API.
After you set up your subscription center, you can manage profiles’ subscription preferences in several ways.
Set subscription preferences
Beyond people unsubscribing themselves from messages, you can also:
- manually set subscription preferences in your workspace
- migrate profiles’ existing preferences from another service
- send out an automation requesting they update their preferences
- track their preferences outside of the subscription center
You have the option to set preferences for some subscription topics or channels, while preserving those set for others, using JSON dot notation.
Adjust subscription preferences in the UI
After you enable your subscription center, you can view and change profiles’ preferences on their profiles:


Click Manage beside Subscription Preferences to change them.
Click Save Preferences to adjust individual preferences or click Unsubscribe so they no longer receive emails, SMS, or push.


Backfill or migrate preferences
Before you enable subscription center topics, you might want to set or migrate profiles’ subscription preferences. You’ll almost certainly need to do this if you set your topics up as “opt-in” by default.
You can set your audience’s subscription preferences using the reserved cio_subscription_preferences 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.. This attribute contains both topics and channels preferences where every individual preference is a boolean (true/false).
Topics are numbered based on the ID that you see in the UI—topic_1 corresponds to ID 1 in the left-column in your Subscription Center setup page. We set subscription preferences by topic ID rather than the topic Name, so that you can change the name of a topic without affecting your audience’s preferences.
Channels use the channel type name as the key (email, sms, push, in_app, whatsapp, slack, line, inbox). Channel preferences let profiles opt in or out of specific messaging channels, independent of their topic preferences.
When you send a message, a profile must be subscribed to both the relevant topic and channel to receive the message.
{
"cio_subscription_preferences": {
"topics": {
"topic_1": true,
"topic_2": false
},
"channels": {
"email": true,
"sms": true,
"push": false
}
}
}


Create an automation to record preferences
After your subscription center is enabled, you can send a automationFormerly called “campaign”
An automated process people enter when they meet your criteria. An automation has a trigger (who enters, and when), a workflow of messages and actions, and exit criteria (when they leave). A person’s path through the workflow is their journey. to customers to show them they now have the option to subscribe to topics and channels. You can prompt them to manage their preferences in the message.
Set preferences outside of the subscription center
It’s not always convenient for your audience to manage their preferences through messages. For example, a user might expect that they can change their preferences through your website.
You can help your audience manage their preferences independently of messages by either:
- Generating a link to the subscription center for a user using our App API. You might do this if someone is already signed in to your app and you want to give them a way to manage their preferences.
- Building a custom preferences page, which gives you full control over their subscription experience.
Resubscribe a person
If a person accidentally unsubscribes from a topic or channel, they have the option to resubscribe.


If they click the resubscribe button, we set their preference back to true and confirm that they are subscribed once again.
If a person accidentally unsubscribes from all on the preferences pages, they just need to recheck the topics and channels they want to receive messages for then save their preferences again.
Find subscription preferences
After you set up your subscription center, you’ll find profiles’ subscription preferences when you select them on the Profiles page. You can view and edit subscription preferences from the Overview tab of a profile.


Track changes to preferences
On the Attributes tab, as well as your workspace’s Activity Log, you can track when someone changed a subscription preference with the reserved attribute cio_subscription_preferences (more on that below).


A change is logged when:
- your customer updates a subscription preference from the subscription preferences page.
- you can manually change a subscription preference from the Customer.io UI.
- an automation with an Update or Create Profile workflow action updates a subscription preference.
- you update a profile’s subscription preferences via CSV, Track API, web SDK, or a reverse ETL sync.
Subscription preferences in the API
When you look up a person using our API, or export a person, we include a person’s subscription preferences and their computed subscription preferences.
The cio_subscription_preferences attribute contains preferences that a person set through the subscription center—or attributes you otherwise applied to a person. This includes both topic and channel preferences. However, a person might not have set preferences, or you may have changed topics or channels since the last time a person set their preferences.
For these cases, we also include a _cio_subscription_preferences_computed attribute containing all of a profile’s subscription preferences, including defaults for topics and channels a profile hasn’t set preferences for yet. For example, if you have an opt-in topic that a profile hasn’t set a preference for, that topic would show false—even though a profile doesn’t have that attribute on their profile. The same applies to channel preferences.
This is an example of what we show when you look up a profile’s attributes.
Use reporting webhooks to track preference changes
{
"customer": {
"id": "1",
"attributes": {
"\_last_emailed": "1528932553",
"created_at": "1489014595",
"email": "test@example.com",
"id": "1",
"cio_id": "03000001",
"cio_subscription_preferences": "{\"topics\":{\"topic_7\":false,\"topic_8\":false},\"channels\":{\"email\":true,\"push\":false}}",
"\_cio_subscription_preferences_computed": "{\"topics\":{\"topic_6\":false,\"topic_7\":false,\"topic_8\":false},\"channels\":{\"email\":true,\"sms\":true,\"push\":false}}"
},
"timestamps": {
"cio_id": 1489014595,
"\_last_emailed": 1528932553,
"created_at": 1489014595,
"email": 1508932553,
"id": 1489014595,
"\_cio_subscription_preferences_computed": 0,
"cio_subscription_preferences": 1673987303
},
"unsubscribed": false,
}
}Filter by subscription preferences
On the People page, you can filter by subscription preferences. Filtering works the same way for both topic and channel preferences—you set conditions based on the corresponding attribute path.
- Topics: use the attribute
cio_subscription_preferences.topics.topic_<id>. For example, to find people who unsubscribed from a topic, filter wherecio_subscription_preferences.topics.topic_<id>is equal toFALSE. You can also create data-driven segments to track topic subscription trends over time. - Channels: use the attribute
cio_subscription_preferences.channels.<channel>. For example, to find people who have opted out of push notifications, filter wherecio_subscription_preferences.channels.pushis equal toFALSE.
