Available providers
Apple APNs
Firebase FCM
Expo
OneSignal
Airship
Amazon SNS
Pusher Beams
Pusher
MagicBell
Pushbullet
Beamer
NowPush
Channel overrides
covers the two levels and which one wins. These are the fields a push channel override accepts, whichever provider sends.Tracking
Courier attaches atrackingUrl to every push request. Posting to it updates the notification’s state. The do this for you. To do it manually:
Example message
Example request
event is DELIVERED or CLICKED.
Provider-specific tracking
Each provider puts thetrackingUrl somewhere different in the payload your app receives:
Targeting specific devices
If a user has tokens from more than one app, target a subset at send time. Use it for per-platform notifications, or when several apps share one provider project. The already tag every token they register with the app’s own identifier, the bundle id on iOS and the package name on Android. Nothing to set up, so the only thing you write is the filter.Filter tokens at send time
PassfilterByBundleId and bundleId in the provider override to send only to tokens whose device.app_id matches:
com.acme-corp.app above. If bundleId matches none of the user’s tokens, the message is not delivered to that provider.
The same override structure works for any push provider:
Filtering reads the tokens Courier manages, whether an SDK registered them or your backend did. A token passed inline in
to, such as firebaseToken or apn.token, carries no device record and bypasses the filter.device.app_id yourself on the write. has that call.
Custom data not reaching the device?
data maps into the push payload by default. covers the v1 template setting that can stop it.
