Skip to main content
Notification preferences let your users choose which notifications they get and on which channels. A user can opt in or out of categories like marketing, or product updates. Required notifications like security alerts cannot be opted out of. Users can pick channels per category, and subscribe to digests. Courier checks these preferences on every send and skips anything the user opted out of, by topic or by channel. You write no routing logic for it. Mapping a notification to a subscription topic is enough.
Courier hosted preference center showing subscription topics with per-channel opt-in toggles for email, SMS, and push

When to Use Notification Preferences

Use preferences when you need to:
  • Let users manage their own subscriptions. Recipients choose which notification categories they get, instead of you guessing.
  • Handle unsubscribes. One-click opt-out and preference pages that satisfy CAN-SPAM and similar requirements.
  • Give users channel and frequency control. Users pick channels (email, SMS, push, and more) and digest schedules.

Hosted vs. Embedded Preference Centers

You have two ways to put preferences in front of users. Both use the same preference data, so a change in one shows up in the other.

Hosted Preference Center

A Courier-hosted page where users manage their preferences, with no frontend code. Style and brand it from the Courier UI, then add a link in your notifications or brand footer. Users get a responsive page with unsubscribe handling and optional per-channel selection.

Embedded Preferences

Preference UI you drop into your own app with React or web components. Best when preferences should live inside your product, like an account or settings screen. You keep full control over layout and styling.

What You Can Do with Preferences

Configure topics and sections

Define subscription topics, group them into sections, set each topic’s default to opt-in, opt-out, or required, and map notification templates to topics so every send respects the user’s choices.

Offer channel and digest choices

Let users choose channels per topic and subscribe to digests. Set channel labels and digest schedules in the Preferences Editor and the automations Digest node.

Track and query preferences

See preference change history in the dashboard, and read current preferences through the User Preferences API for analytics or downstream systems.

FAQ

When you send a notification mapped to a subscription topic, Courier checks the recipient’s preferences first. If the user opted out of that topic or that channel, Courier skips the send for that channel. No extra logic in your code. Mapping a template to a topic is enough.
Yes. Courier still checks the user_id’s preferences to route the send, so it counts toward usage even when the result is unsubscribed. To skip a channel or notification before any routing runs, use send conditions.
Yes. In the Preferences Editor, each topic has a default status of OPTED_IN, OPTED_OUT, or REQUIRED. New users inherit these defaults until they make their own choices. You can also set tenant-level defaults that override workspace defaults for users in that tenant.
The hosted preference center is a Courier-hosted page you link to from emails or your app, with no frontend code required. Embedded preferences use React or web components you drop into your own UI for full control over layout and styling. Both read and write the same preference data.
Yes, if you enable channel routing on a topic in the Preferences Editor. Users can then select which channels (email, SMS, push, and more) they want for that topic.
Use the User Preferences API. You can read a user’s current preferences and update topic-level opt-in and opt-out status, channel choices, and custom routing. See the API tutorial for curl, Node, and Python examples.

What’s next

Preferences Editor

Configure subscription topics, sections, and channel options

Hosted Preference Center

Deploy turnkey hosted preference pages with branding and unsubscribe

Embedding Preferences

Integrate preference components into your application

User Preference Logs

Audit preference changes and query preferences via API