# Manage subscription preferences

Learn 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](/journeys/subscription-center/), you can manage people’s subscription preferences in several ways.

## Set subscription preferences[](#set-subscription-preferences)

[Beyond people unsubscribing themselves from messages](/journeys/subscription-center/#what-people-see), you can also:

*   [manually set subscription preferences](#adjust-subscription-preferences-in-the-ui) in your workspace
*   [migrate people’s existing preferences](#backfill-preferences) from another service
*   [send out a campaign](#create-campaign-to-record-prefs) requesting they update their preferences
*   [track their preferences outside of the subscription center](#set-prefs-outside-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[](#adjust-subscription-preferences-in-the-ui)

After you enable your subscription center, you can view and change people’s preferences on their profiles:

[![A profile for a person named Glinda Witch is shown. On the Overview tab, the table in the top left reads Subscription Preferences. The top row shows that Glinda is subscribed to one topic called Feedback, and the row beneath shows that she is unsubscribed from two topics called News and programs and Offers.](https://docs.customer.io/images/profile.png)](#ebcd036a0db50db993ae98ce380f6419-lightbox)

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.

[![profile-sub-prefs-manage.png](https://docs.customer.io/images/profile-sub-prefs-manage.png)](#967ac58f11eb03db849dcbd5061d03fb-lightbox)

### Backfill or migrate preferences[](#backfill-preferences)

Before you enable subscription center topics, you might want to set or [migrate people’s subscription preferences](/journeys/migrate-subscription-prefs/). 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.](/journeys/attributes/). 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 people opt in or out of specific messaging channels, independent of their topic preferences.

When you send a message, a person must be subscribed to **both** the relevant topic and channel to receive the message.

```json
{
   "cio_subscription_preferences": {
      "topics": {
         "topic_1": true,
         "topic_2": false
      },
      "channels": {
         "email": true,
         "sms": true,
         "push": false
      }
   }
}
```

[![Within Workspace Settings, this subscription center has a table with 5 topics. Each topic has an ID followed by a name and the default status, not subscribed or subscribed.](https://docs.customer.io/images/subscription-preferences-topic-id-2025.png)](#eb274f13f261e81433fe17b5bad9409e-lightbox)

### Create a campaign to record preferences[](#create-campaign-to-record-prefs)

After your subscription center is [enabled](/journeys/subscription-center/#enable-sub-center), you can send a [campaignCampaigns are automated workflows you set up to send people messages and perform other actions when they meet your criteria.](/journeys/campaigns-in-customerio/) to customers to show them they now have the option to subscribe to topics and channels. You can prompt them to [manage their preferences](/journeys/subscriptions-overview/#unsubscribe-links) in the message.

### Set preferences outside of the subscription center[](#set-prefs-outside-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](/journeys/set-preferences-outside-center/#generate-a-subscription-center-link) 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](/journeys/set-preferences-outside-center/#create-a-custom-subscription-preferences-page), which gives you full control over their subscription experience.

### Resubscribe a person[](#resubscribe-a-person)

If a person accidentally unsubscribes from a topic or channel, they have the option to resubscribe.

[![resubscribe_topic_page.png](https://docs.customer.io/images/resubscribe_topic_page.png)](#27fbb59d3d0ccd588c2eb771bf9ce772-lightbox)

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[](#find-subscription-preferences)

After you set up your subscription center, you’ll find people’s subscription preferences when you select them on the **People** page. You can view and edit subscription preferences from the *Overview* tab of a person’s profile.

[![find your people's attributes](https://docs.customer.io/images/subs-center-attributes.png)](#fb51288b8bdcf29f842d030afdbcc154-lightbox)

### Track changes to preferences[](#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](#subscription-preferences-in-the-api)).

[![Within a person's profile, the Attributes tab is selected. On the right hand side under Recent Attribute Changes, you can see an item showing changes to cio_subscription_preferences.](https://docs.customer.io/images/sub-center-attributes-tab.png)](#5caad21d8b605df21faee1d27b5bc64f-lightbox)

A change is logged when:

*   your customer updates a subscription preference from the [subscription preferences page](/journeys/subscription-center/#what-people-see).
*   you/an admin manually change a subscription preference from the [Journeys UI](#find-subscription-preferences).
*   [a campaign with an **Update or Create Person** workflow action](/journeys/migrate-subscription-prefs/#migrate-subscription-preferences) updates a subscription preference.
*   you update a person’s subscription preferences via [CSV, Track API, web SDK, or a reverse ETL sync](#backfill-preferences).

### Subscription preferences in the API[](#subscription-preferences-in-the-api)

When you [look up a person using our API](/integrations/api/app/#operation/getPersonAttributes), or [export a person](/journeys/single-user-export/), 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 person’s subscription preferences, including defaults for topics and channels a person hasn’t set preferences for yet. For example, if you have an *opt-in* topic that a person hasn’t set a preference for, that topic would show `false`—even though a person 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 person’s attributes.

 Use reporting webhooks to track preference changes

If you capture your people’s attributes in an external CRM or another system, you can use [reporting webhooks](/journeys/subscription-metrics/#data-out-integrations) to get real-time events when people change their subscription preferences.

```json
{
"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[](#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 where `cio_subscription_preferences.topics.topic_<id>` is equal to `FALSE`. You can also [create data-driven segments](/journeys/subscription-metrics/#tracking-subscriptions-over-time) 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 where `cio_subscription_preferences.channels.push` is equal to `FALSE`.