Channel coordination

Channel coordination is a group of strategies you can use to target users where they are most likely to receive your message.

Several tools and strategies are supported to maximize engagement with users opted in to multiple notification channels. For example, a user may be opted in for notifications via their web browser, app, and an open channel.

The coordination of your multi-channel messaging relies on a number of our channel features, depending on the message type, its level of urgency, and the particular use case. The various channel coordination strategies can be employed to further personalize the mode of messaging delivery, each using a different mix of messaging features.

 Tip

You can use channel coordination for Cross-channel RetargetingA method for sending messages in a Sequence to selected channels based on behavior in a different channel..

How Channel Coordination Works

We leverage two powerful Airship platform features to make channel coordination work:

Event Listeners
Airship listens for activity such as opens, custom events, and uninstalls in order to determine Priority ChannelA channel coordination strategy that targets a Named User on the first channel they are opted in to, of the priority order you set. and Last ActiveA channel coordination strategy that targets a Named User on the opted-in channel they used most recently. status.
Tag Groups
A tag group is an array of tags that you can associate with both channels and Named Users. When we configure your project for channel coordination, we use tag groups and the reserved ua:orchestration namespace.

Channel coordination requires implementing Named UserA customer-provided identifier used for mapping multiple devices and channels to a specific individual.. Named users are by definition an essential prerequisite for channel coordination, as they are required to map a user’s different channels to your internal identifier. If you are using User PreferenceA channel coordination strategy that targets a Named User on their preferred channel., you will also need to set user preference tags on the named user. Follow the steps in Associating Channels with Named Users.

Once your project is configured for channel coordination, you can target users via the API or dashboard as you would target any other audience.

 Note

Caveats for accounts enabled for channel coordination and sequences:

  • Fan out is the default behavior when targeting named users.
  • For sequences, Originating channel is used for all accounts not enabled for channel coordination.

Fan Out

Fan Out is a channel coordination strategy that targets a Named User on all the channels they are opted in to, maximizing the chances they receive your message. This strategy is suitable for highly urgent messages, where the user will not be sensitive to over-messaging. This is the default strategy when a Sequence does not have a triggering channel, e.g., a message sent as a result of a Named User Custom Event or tag change, which equally applies to all channels.

Composer: Message or A/B Test

In the Audience step of the Message and A/B Test composers:

  1. Select the channels to include in your audience.
  2. Select Target Specific Users.
  3. Search for a named user and select from the listed results.
Composer: Sequence

For sequences, you select and configure channel coordination when adding each message. After clicking Add message content:

  1. Select Fan Out and the channels you want to send the message to.
  2. Click Save and continue.
API

In the API, you will enumerate all configured messaging platforms using the device_types selector:

POST /api/push HTTP/1.1
Authorization: Basic <master authorization string>
Content-Type: application/json
Accept: application/vnd.urbanairship+json; version=3

{
   "audience": {
      "named_user": "ozymandias"
   },
   "notification": {
        "alert": "Look upon which works now?"
    },
    "device_types": [
       "ios",
       "android",
       "sms",
       "web"
    ]
}

Last Active

Last Active is a channel coordination strategy that targets a Named User on the opted-in channel they used most recently. In many cases user recency is the best indicator of preference.

Last Active for each channel is based on the following events:

ChannelEvents
AppApp open
WebWeb session
EmailEmail open, Email click

A device that is opted-in will have higher priority than an opted-out device even if the opted-out device was active more recently. For example, if the named user has two devices, iOS and Android, and the iOS device is opted-in while the Android device is opted-out, even if the Android device’s app is opened more recently than the iOS device’s app has been used, the iOS device will remain the “last active” because it is the only one that is still opted-in.

For example, when a user clicks a link in an email:

  • If they are directed to a web page and are registered for web push, Last Active will be Web. Otherwise, it will be Email.
  • If they are directed through a deep link to an app and are registered for mobile push notifications, Last Active will be App. Otherwise, it will be Email.

If there is more than one opted-in device for a particular named user, the device that has most recently had activity will receive any push targeted to the last active device. Examples of possible activities are a registration event, opt-in event, open event, or a custom event.

 Note

Last Active is supported for App, Web, and Email channels only. Email channel support is limited to Sequences.

Composer: Message or A/B Test

In the Audience step of the Message and A/B Test composers:

  1. Select the channels to include in your audience.
  2. Select Target Specific Users.
  3. Search for and select the Orchestration tag group
  4. Search for tag last_active within the tag group.
  5. Set the True operator to include users for whom the condition is true.
Composer: Sequence

For sequences, you select and configure channel coordination when adding each message. After clicking Add message content:

  1. Select Last Active and the channels you want to send the message to.
  2. Click Save and continue.
API

In the API, use the last_active tag in the ua:orchestration tag group:

POST /api/push HTTP/1.1
Authorization: Basic <master authorization string>
Content-Type: application/json
Accept: application/vnd.urbanairship+json; version=3

{
   "audience": {
      "tag": "last_active",
      "group": "ua:orchestration"
   },
   "notification": {
      "alert": "Hi, last active!"
   },
    "device_types": [
       "ios",
       "android",
       "sms",
       "web"
    ]
}

Example Response:

HTTP/1.1 202 Accepted
Content-Type: application/json; charset=utf-8
Data-Attribute: push_ids

{
   "ok": true,
   "operation_id": "df6a6b50-9843-0304-d5a5-743f246a4946",
   "push_ids": [
      "9d78a53b-b16a-c58f-b78d-181d5e242078"
   ]
}

Originating Channel

Originating Channel is a channel coordination strategy that targets a Named User on the channel that triggered the Sequence. Messaging users on the channels they use to engage your brand can help ensure a consistent user experience. This strategy is used for all accounts not enabled for channel coordination.
 Warning

Originating Channel will not work if the triggering behavior is a custom event applied to the named user. In that case, there is no channel associated with the behavior; Airship will instead use the Fan Out strategy for delivery.

Composer: Sequence

For sequences, you select and configure channel coordination when adding each message. After clicking Add message content:

  1. Select Originating Channel and the channels you want to send the message to.
  2. Click Save and continue.

Priority Channel With Fallback

Priority Channel is a channel coordination strategy that targets a Named User on the first channel they are opted in to, of the priority order you set.

Drive engagement toward one strategic channel, for example, directing users to the app to save SMS or email cost. For when you want to define a priority for channel for users to engage with, e.g., 1) App, 2) Web, 3) Email.

Our priority channel system actively monitors events from your audience such as app opens and opt-in status changes to maintain as accurate a picture as possible of where your audience is reachable for messaging. This picture is only as accurate as the signals we get back from apps or the service providers we work with, however, and in some cases, due to platform limitations, we do not receive messaging channel state changes in real time.

The iOS and Android platforms suffer from this limitation when a user uninstalls an app in that the push providers, e.g., APNs, do not send out any signals or display any status about an uninstall in real time. Only when we attempt to send a push notification to it does Apple (APNs) or Google (FCM) let us know the app has been uninstalled.

Since this is a key use case for app messaging, we have enhanced our system to automatically redirect the message to the next available channel in the priority list when we detect an uninstall event on iOS or Android, in real time.

This messaging fallback behavior follows the same logic we use when determining where to assign the priority_platform tag, and, in fact, we also reassign the priority_platform tag at the same time we detect the uninstall.

Before you can target users based on channel priority, you must set the priority order in your project. You must have at least two channels configured and enabled. This setting is not used for sequences. For sequences, you set the priority when you create the message.

Configure Channel Priority Order

Set the priority order of your project’s configured and enabled channels:

  1. Go to Settings » Project Settings and click Manage for Channel Priority.
  2. Check the Enable box next to any channel you would like to include, and click the arrows to change their order.
  3. Click Save.
 Note

 Note

Additional processing time may be required to set the priority_platform tag for larger audiences. The priority_platform tag will be available for use after several minutes for smaller audiences and up to several hours for audiences of 1 million or more.

Composer: Message or A/B Test

In the Audience step of the Message and A/B Test composers:

  1. Select the channels to include in your audience.
  2. Select Target Specific Users.
  3. Search for and select the Orchestration tag group
  4. Search for tag priority_platform within the tag group.
  5. Set the True operator to include users for whom the condition is true.
Composer: Sequence

For sequences, you select and configure channel coordination when adding each message. After clicking Add message content:

  1. Select Channel Priority and the channels you want to send the message to.
  2. Drag your selected channels into priority order.
  3. Click Save and continue.
API

In the API, use the priority_platform tag in the ua:orchestration tag group:

POST /api/push HTTP/1.1
Authorization: Basic <master authorization string>
Content-Type: application/json
Accept: application/vnd.urbanairship+json; version=3

{
   "audience": {
      "tag": "priority_platform",
      "group": "ua:orchestration"
   },
   "notification": {
      "alert": "Hi, priority channel!"
   },
   "device_types": [
      "ios",
      "android",
      "sms",
      "web"
   ]
}

Example Response:

HTTP/1.1 202 Accepted
Content-Type: application/json; charset=utf-8
Data-Attribute: push_ids

{
   "ok": true,
   "operation_id": "df6a6b50-9843-0304-d5a5-743f246a4946",
   "push_ids": [
      "9d78a53b-b16a-c58f-b78d-181d5e242078"
   ]
}

User Preference

User Preference is a channel coordination strategy that targets a Named User on their preferred channel. This is understood to provide the optimal customer experience.

In order to set a preferred channel for a user, they must be opted in on at least two messaging channels, e.g., iOS and web. Before you can target users based on a their channel preference, you first need to set tags expressing that preference.

For a user that is opted in on multiple channels and has provided an explicit communication preference, first add a user_preferred tag to the preferred channel, then target that tag in your messaging.

Set User Preference Tags

You will set a "user_preferred" tag in the "ua:orchestration" tag group on one channel per named user.

  1. List all channels for your named user by using the Named User Lookup API.

  2. Once you parse the results to gather the Channel IDs, you maintain the "user_preferred" tag on each channel, using our Tags API:

POST /api/channels/tags HTTP/1.1
Authorization: Basic <master authorization string>
Accept: application/vnd.urbanairship+json; version=3
Content-Type: application/json

{
   "audience": {
      "ios_channel": "b8f9b663-0a3b-cf45-587a-be880946e881"
   },
   "add": {
      "ua:orchestration": [
         "user_preferred"
      ]
   }
}
Composer: Message or A/B Test

In the Audience step of the Message and A/B Test composers:

  1. Select the channels to include in your audience.
  2. Select Target Specific Users.
  3. Search for and select the Orchestration tag group
  4. Search for tag user_preferred within the tag group.
  5. Set the True operator to include users for whom the condition is true.
API

In the API, use the user_preferred tag in the ua:orchestration tag group:

POST /api/push HTTP/1.1
Authorization: Basic <master authorization string>
Content-Type: application/json
Accept: application/vnd.urbanairship+json; version=3

{
   "audience": {
      "tag": "user_preferred",
      "group": "ua:orchestration"
   },
   "notification": {
      "alert": "Hi, preferred channel!"
   },
   "device_types": [
      "ios",
      "android",
      "sms",
      "web"
   ]
}

Example Response:

HTTP/1.1 202 Accepted
Content-Type: application/json; charset=utf-8
Data-Attribute: push_ids

{
   "ok": true,
   "operation_id": "df6a6b50-9843-0304-d5a5-743f246a4946",
   "push_ids": [
      "9d78a53b-b16a-c58f-b78d-181d5e242078"
   ]
}

Include Channel Coordination Tags In an Audience Segment

You can include channel coordination tags for Last Active, Priority Channel, and User Preference in your SegmentsA grouping of audience members selected by unique or shared identifiers. Multiple identifiers can be combined within a Segment..

Follow the steps in the Segment Builder Tutorial to create a new segment, and include a channel coordination tag:

  1. Search for and select the Orchestration tag group.
  2. Search for tag last_active, priority_platform, or user_preferred within the tag group.
  3. Set the True operator to include users for whom the condition is true.