Smart Channel Routing

Learn when and how to use smart channel routing for delivery in workflow

Smart Channel Routing is an optimal way of sending multi-channel notifications without bombarding your users. In case of smart routing, you send notification sequentially on channels with a delay rather than bombarding users on all channels at once. Example, If you have a template with 4 channels, the delivery on rest of the channels are skipped if the user sees or interacts with the message on 1 channel. This way, you can achieve the uptick in engagement (delivery, seen and interaction rate) without unnecessary noise and also save cost of paid notification channels.

The content of the notification is designed with templates. In SuprSend, you can design the content of multiple channels within a single template group.

How Smart Channel Routing node is executed?

  1. The First step is to identify applicable channels for delivery in user profile. Applicable channels are the subset of
  • Active channels on template - Active channels are published and live channels in the template. For WhatsApp and SMS (Indian vendors), templates become live upon approval by the respective provider.

  • Active channels in user profile - Available channels in user profile which are not marked inactive. A set channel becomes inactive in case the channel is removed or unset using SDK or API or it is marked inactive by SuprSend.


    SuprSend marks the user channel identity inactive for email and whatsapp in case of hard errors from vendor end, such as bounced email addresses, unregistered whatsapp numbers. This is done to safeguard your email domain authority or whatsapp rating if you continue to send notifications to users who have reported or marked your email or messages as spam. Additionally, this helps in whatsapp cost saving, as vendor charges for every processed request. Inactive marking period by SuprSend is 15 days for whatsapp and 90 days for email.

  • Channels where user preference is set as opt-in - If you are using SuprSend preference centre to take user preferences, check if the user preference is opt-in for the given channel and notification category (defined in workflow settings). You can check user preference using get user preference API.

  1. Next, the order of the channel is defined using routing rule. Currently, the order of channel is defined to optimize on cost (channels are tried from low to high cost). We'll also be introducing options to optimize on engagement so that notifications is sent on the channel with higher chances of open and click first.

  2. Now, the notification will be delivered on each channel in the order with time-interval of [time_to_live / (number_of_channels - 1)] apart. For example, if you have 3 active channels with time to live of 1 hour, notification will be delivered to each channel at 20 minutes apart till the success metric is not achieved.

  3. Once success metric is achieved, notification delivery on further channels is skipped.

Setting Routing Rules

Routing rules define how the notifications will be routed across channels.

Optimize on

This is used to define the order of channels based on the metric that you want to optimize. For example, if you want to optimize on cost, SuprSend will internally set the order of channel in the ascending order of cost where the lowest cost channel is tried first.

We'll be introducing the option to manually set the channel order and optimize on other metrics like engagement.

Time to live

Time to live defines the delay in delivery between 2 subsequent channels. Notification will be delivered on each channel in the order with time-interval of [time_to_live / (number_of_channels - 1)] apart. For example, if you 3 channels with time to live of 1 hour, notification will be delivered to each channel at 20 minutes apart till the success metric is achieved.

Must send to

These are the channels on which notification has to be sent immediately, irrespective of the channel order.

Success Metric

Success metric can be any event which defines the target user activity that you want to drive with your sent notification. In case of channel routing, it stops delivery on further channels when success metric is achieved. You can define 2 types of success metrics:

  1. Notification Status - Success metric can be notification status (delivery, seen, interaction / click) of any of the sent channels. For example, if the target of your notification is user opening the notification, you can set your success metric as Notification Status - Seen.
  2. Custom Event - It can be any other custom event that you want your user to perform on the platform in response to the sent notification. For example, in case of payment reminder notification, you can set the success metric as Invoice Paid.

Override Channels

You can use this field to pass channel list dynamically using data in your event property. This feature comes in handy when user channels are dynamically defined at the user level for each workflow. For instance, when booking an appointment, your users are dynamically defining their preferred channel to receive booking updates for each appointment.

For more consistent channel preferences, like user wanting to receive all communication via email only, or defininf preferred communication channel for a notifications category (like booking updates), we recommend updating it using user preferences.

To override channels, include the channels array in event property and add the corresponding key in the override channels field on SuprSend workflow form.

The expected channel value in the array is:

Channelkey to be passed in property array
Android pushandroidpush
iOS pushiospush
Web pushwebpush
App Inboxinbox
MS Teamsms_teams

You can add channel array as a JQ-expression. So, in case your channel values do not match with the one mentioned in the above table, you can transform it using the JQ-expression. Below are some examples of how to add duration key in JQ format:

  1. General format for duration key at parent level is .channels
  2. If channel is a nested event property key like shown below, enter it in the format .user.channels.
properties = {													  
  "user": {
    "name": "Steve",
    "channels": ["email","inbox]


When the channel key specified is missing, or resolves to an invalid value, workflow execution will stop and corresponding error will be logged in the logs

Frequently asked questions

  1. How channel routing works when a user has multiple identities of the same channel. For example, if there are multiple email ids in a user profile?

Routing happens at channel identity level. So, if there are multiple email ids, notification will be sent to one email id and then on another after a delay.

  1. How does channel routing work if I have vendor routing enabled as well?

Vendor routing is independent of channel routing and doesn't add to the delay in channel routing.

What’s Next

Once configured, go ahead and trigger your workflow