Skip to main content
Courier integrates with many different push providers. Each provider may have specific requirements for delivering a message to a recipient, such as device tokens or provider-specific profile fields.

Available Push Providers

Can’t find a provider? Open up a chat on the Courier site, or email support@courier.com

Push Channel Override

Push channel overrides allow you to set the body, clickAction, data, icon, and title of a push notification. Data structure for the push channel override:

Data Mapping

All push channels have the ability to explicitly turn on data mapping. Data mapping can be useful to help limit how much data is passed to the push provider. For example, you can either pass the entire data payload as
or explicitly choose which values to pass down:

Tracking

Courier will attach a trackingUrl for all push requests that allow the state of the push notification to be updated. This is automatically done via the Courier Mobile SDKs, but you can control it manually like this:

Example Message

Example Request

Provider-Specific Tracking

Different push providers include the trackingUrl in different parts of their payload:

Airship

Courier will send trackingUrl in global_attributes data bag when you receive push notification in your client application.

APN (Apple Push Notifications)

trackingUrl will be part of data attribute in incoming payload when you receive push notification in your client application.

Firebase

trackingUrl will be part of data attribute in incoming message payload when you receive push notification in your client application.

Expo

trackingUrl will be part of data attribute in incoming payload when you receive push notification in your client application.

Pusher

trackingUrl will be part of data attribute in the incoming payload when you receive push notification in your client application.

Targeting Specific Devices

If a user has multiple push tokens registered (e.g., a desktop app and a mobile app), you can target a subset of their tokens at send time. This is useful when you want to send different notifications to different platforms, or when multiple apps share the same push provider project. This requires two steps: tagging tokens with an app identifier when you register them, and filtering by that identifier when you send.

Tag tokens at registration

When you store a token via the Token Management API, set device.app_id to identify which app or platform the token belongs to:
Replace firebase-fcm with your provider key (apn, expo, or onesignal) as needed. The app_id value is an arbitrary string you define.

Filter tokens at send time

Pass filterByBundleId and bundleId in the provider override to send only to tokens whose device.app_id matches:
To target mobile tokens instead, change bundleId to "my-app-mobile". If bundleId doesn’t match any of the user’s tokens, the message won’t be delivered to that provider. The same override structure works for any push provider:
Token filtering only works with tokens stored via the Token Management API (PUT /users/{user_id}/tokens/{token}). Tokens set directly on the user profile (e.g., firebaseToken or apn.token in the to object) bypass this filter.