Available on
GitHub.
Installation
1
Add the Jitpack repository
In your
settings.gradle or settings.gradle.kts:2
Add the dependency
3
Initialize the SDK
Call
Courier.initialize() in your Application class before using other SDK features. This gives Courier access to SharedPreferences to persist state across sessions.4
Use a Material theme
The prebuilt inbox and preference center only render correctly when your app theme extends
Theme.MaterialComponents. Set it in res/values/themes.xml.If you only use
CourierClient APIs directly, skip the initialize and theme steps.Authentication
Courier authenticates with a JWT that your backend mints with your Courier API key, never in client code. covers the token flow, scope strings, reading auth state, signing out, token refresh, and EU-hosted workspaces. Credentials persist across app sessions, so you sign in once per user rather than on every launch.Inbox
is the setup flow. These are the types it uses on Android.
Every callback and action these expose is documented per platform in .
Inbox theme
CourierInboxTheme is a constructor argument on the composable, and a property on the view. Light and dark themes are separate.


Default and styled Inbox on Android
Push notifications
is the setup flow, from connecting FCM to a device that receives push. It covers theFirebaseMessagingService and CourierActivity wiring, setToken, permission, and reading the payload on tap.
Firebase is a separate dependency. From Courier Android 6.x the SDK no longer bundles Firebase Messaging. Declare your own Firebase BoM and
firebase-messaging artifact so you can subclass FirebaseMessagingService.Push notifications require a physical device and a release build for reliable token registration and delivery. Emulators are best-effort.
Preferences
is the setup flow. These are the types it uses on Android.The composable renders the default channels mode. Set
mode on the XML view for topic mode.Topics and sections are configured in the . See for how preference enforcement works at send time.
Preferences theme
Light and dark themes are separate, and applies automatically when you supply abrandId.
Default and styled Preferences on Android
CourierClient
For advanced use cases,CourierClient is a low-level wrapper around the Courier API. Each client holds its own credentials, so you can spin up as many as you need.