Mike Miller
June 04, 2026

You can now drop a full notification preferences center into any web app with a single HTML element. The new @trycourier/courier-ui-preferences package (v1.0.2) ships a <courier-preferences> Web Component that lets your users opt in and out of topics, pick which channels deliver each one, and set digest schedules, all without you building or maintaining the preference UI yourself.
The component renders a complete preferences center backed by your Courier configuration. It handles:

It reuses your existing Courier Inbox auth. If you already have Inbox running, you add the read:preferences and write:preferences scopes and you're set. No second auth flow to wire up.
Install it from npm:
Copied!
npm install @trycourier/courier-ui-preferences
Add the <courier-preferences> element to your markup, and authenticate it the same way you authenticate Inbox by passing a userId and a jwt. That's the whole integration. The element fetches the user's topics, renders the sections, and writes changes back to Courier as the user toggles them.
From there, a few things you can modify on the element to make it yours:
If you're on React, the preferences UI is bundled into @trycourier/courier-react as of v9.2.0, so you don't install @trycourier/courier-ui-preferences separately. Grab the React package:
Copied!
npm install @trycourier/courier-react
Then import the CourierPreferences component directly and you get the same topics, channels, digests, and theming, exposed as a React component with props instead of element methods.
A preferences center is what keeps users from reaching for the global unsubscribe button. When the only control you give someone is "all notifications on" or "all notifications off," people who are mildly annoyed by one type of message opt out of everything, including the messages they'd actually want. Topic-level and channel-level control lets them turn down the noise without going dark, which is the practical fix for alert fatigue.

This matters more because Courier handles all three kinds of messages a product sends: transactional (password resets, receipts), product (mentions, status changes, activity), and marketing (announcements, nurtures). Those streams have very different value to a user, so a single preference switch is the wrong tool. A good preferences center lets someone keep their transactional and product notifications while dialing marketing down to a weekly digest, instead of bailing on everything at once.
It matters even more when your customers have multiple lines of business. A marketplace has sellers and buyers, and the same person can be both. The notifications a seller wants (a new order, a payout) are not the notifications a buyer wants (shipping updates, price drops), so their preferences need to be scoped to the role and organization they're acting in, not flattened into one global profile. Courier's tenant model handles exactly this. See how it fits together for marketplaces and in our guide on building multi-tenant customer messaging, where tenant-scoped preferences, branding, and routing all line up.
Building that UI yourself is more work than it looks. You need to model topics, persist per-user and per-channel state, handle digest scheduling, keep the UI in sync with sends, and theme it to match your product. This package handles that surface so you can spend the time on your actual notifications. You can read more about the broader approach on the User Preferences page.
There's a live demo you can poke at, including the theming controls:
Grab the package that fits your stack:
Expanded docs are on the way, and a hosted preference page is under construction for teams who'd rather not embed anything at all. More to come.
Ready to try it? Start sending for free and drop the component into your app. If you're working through preferences across multiple lines of business or multi-tenant setups, request a demo and we'll walk through how tenant-scoped preferences and user preferences fit your product.

What we shipped this month: May 2026 Edition
Courier shipped five launches in May 2026: AI Agent in Journeys (GA), the new Journeys API for code-driven flows, Custom Environments, Design Studio styling controls, and Courier Console v3. Each one closes a gap between writing software and shipping the messages that go with it.
By Kyle Seyler
May 20, 2026

Courier Console v3: Redesigned From the Ground Up
Courier Console v3 is rolling out now with a faster, cleaner interface, improved navigation, and a more consistent experience across every workflow.
By Thomas Schiavone
May 19, 2026

Customer Journeys Then and Now
Most customer journey platforms don't use product data. They use marketing data. Open rates. Click-throughs. Maybe a segment based on what plan someone's on. That's not a journey. That's a drip campaign with extra steps. I spent years building behavior-based lifecycle programs at Yahoo. The decisioning was sophisticated. The organizational overhead to ship it was not. The infrastructure layer has finally caught up. Here's what behavior-based journeys looked like then, what most teams settled for, and what's actually possible now.
By Kyle Seyler
March 19, 2026
© 2026 Courier. All rights reserved.