@trycourier/courier-ui-preferences
v1.0.2
Published
Preferences components for the Courier web UI
Readme
Courier Preferences Web Components
Embed a customizable notification preferences center in your web app using Web Components. Courier Preferences provides the <courier-preferences> element that works with any JavaScript framework or vanilla JS. It lets your users manage which topics they're subscribed to and how each is delivered.
Using React? Check out the Courier React SDK for React-native components and hooks.
Installation
npm install @trycourier/courier-ui-preferencesWorks with any JavaScript build system; no additional build configuration required.
Quick Start
<body>
<courier-preferences id="preferences"></courier-preferences>
<script type="module">
import { Courier } from "@trycourier/courier-ui-preferences";
// Generate a JWT for your user on your backend server
const jwt = "your-jwt-token";
// Authenticate the user
Courier.shared.signIn({
userId: "your-user-id",
jwt: jwt,
});
</script>
</body>Authentication
The SDK requires a JWT (JSON Web Token) for authentication. Always generate JWTs on your backend server, never in client-side code.
If you've already set up authentication for Courier Inbox, you can reuse the same authentication mechanism; just make sure the token includes the preferences scopes below.
- Your client calls your backend to request a token.
- Your backend calls the Courier Issue Token endpoint using your API key.
- Your backend returns the JWT to your client and passes it to the SDK.
curl --request POST \
--url https://api.courier.com/auth/issue-token \
--header 'Authorization: Bearer $YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"scope": "user_id:$YOUR_USER_ID read:preferences write:preferences",
"expires_in": "1 day"
}'Features
- Topics and Sections — preferences are grouped into sections of topics your users can opt in and out of
- Channel Routing — let users choose which channels (email, push, SMS, and more) deliver each topic
- Digest Scheduling — configurable digest delivery schedules per topic
- Theming — full light/dark theme support with
setLightTheme(),setDarkTheme(), andsetMode() - Custom Labels — rename channels in the UI with
setChannelLabels()
Documentation
Full documentation: courier.com/docs/sdk-libraries/courier-ui-preferences-web
Share feedback with Courier
Have an idea or feedback about our SDKs? Let us know!
Open an issue: Courier Web Issues
