Predictive Churn

At Urban Airship, we provide our customers with tools for every step of the customer lifecycle, from user acquisition to conversion to engagement to retention. This topic guide focuses on user retention, specifically, identifying the risk factors in your user base that lead to attrition, or churn.

Churn is a natural component of mobile engagement ebb and flow, and while a certain amount of churn is normal and healthy, there are ways to identify churn risk factors and mitigate the erosion of your user base with corrective action.

With Predictive Churn, you can identify users by their likelihood to churn, based on risk profiles that we generate via machine learning, using gradient boosted decision tree methodology. Our churn prediction model is trained to detect the most relevant risk factors for a churn outcome, and assigns either a high, medium, or low churn factor to each user.

Risk factors are updated weekly and exposed as tags for segmentation via Engage, analysis via Insight, and data export via Connect.

Also in Engage, you can select a specific risk profile when defining your message audience in the Message and A/B Test composers, as well as trigger an Automated message based on risk profile change.

Overview

The Predictive Model

Predictive Churn is the first release in Urban Airship’s new Predictive suite of products, which uses machine learning to predict user behaviors and optimize engagement strategy for customer lifecycle marketers.

The Predictive Churn model is trained on recency and frequency of notification sends and app opens for a cross-section of anonymized apps. By including your app key as an input, the model tailors its predictions to your audience based on your app’s feature usage (recency, frequency, etc.).

Terminology

The terms in this section are defined as they relate to Urban Airship’s Predictive Churn feature.

  • churn

A churn outcome is one in which a user goes from active to inactive, inactive meaning that we have not seen any app activity (measured by app opens) in a 30-day period. Push opt-in status is not a factor, so it is possible to have an active user that is opted out of notifications but still active. Note: a churned user is not the same as an uninstalled user.

  • active user

A user in your audience with at least one app open within last 30 days.

  • inactive user

A user that has become inactive, i.e., a) Had a predictive tag of high, medium or low at a given point and b) has become inactive, showing no activity for 30 days.

  • features

Recency, frequency of app opens, message sends.

  • Churn Risk

Predictive Churn makes a prediction about the likelihood of a future churn outcome, meaning that a user will go inactive. We assign one of three measures of risk for such an outcome as follows:

  • High — Users most likely to become inactive

  • Medium — Users who exhibit signs of potentially becoming inactive

  • Low — Users least likely to become inactive

Using Predictive Churn

Video Tutorials

Before diving into the user documentation, have a look at these short overview videos:

Engage

Engage UI

There are many ways to target users via the Engage suite of products. Once your account is enabled for Predictive Churn, start by enabling the feature in Settings » Configuration » Predictive. Then you can select the High, Medium, or Low risk profile when:

Use Cases

  • Target users with offers before they churn.

  • Run an A/B Test with a single variant and control group to measure the message’s impact on churn.

  • Trigger an automated message based on a user change in risk category.

  • Create an audience Segment that blends the risk levels based on the type of messaging and your goals.

Engage API

In the Urban Airship Push API, you may target churn tags using Tag Groups via the reserved ua_churn_prediction tag group to target high, medium or low risk users.

You cannot target predictive tags via the Dashboard UI as explained in the Tag Groups Walkthrough. Predictive Tags are a separate audience selector.

Example Request:

A notification to users of all device types whose current churn prediction is medium:

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

{
   "audience": {
      "tag": "medium",
      "group": "ua_churn_prediction"
   },
   "notification": {
        "alert": "me·di·um, n., an agency or means of doing something."
    },
    "device_types": "all"
}

See Pushing to a Tag Group in our Tag Groups Walkthrough for more information about pushing to tag groups.

Insight

Insight customers now have access to a new dashboard: Predictive. For an overview of the available Insight reports for Predictive Churn, see Predictive in the Insight Dashboards and Reports documentation.

Insight Predictive Dashboard

With Insight you can explore users by churn risk factor and monitor trends over time, e.g., tracking the flow of users from low churn risk to medium, high to inactive, etc.

Churn flow over time

Example use cases:

  • Predictive tags added or removed can be explored.

  • User behavior can be sliced by churn risk tag.

  • Export ad IDs, named users, and channel IDs based on their risk category.

  • Export named users and ad IDs based on app opens, uninstalls, and risk category.

  • Find churn cohorts and slice by the users’ current tags.

  • Find churn cohorts, filter, then analyze a funnel of past behavior.

Connect

As a Connect customer, you can look for TAG_CHANGE events when a user has a change in churn risk status. See the Connect API Reference for details on Connect tag change events.

Predictive Churn Connect Events

Predictive Churn events appear in the Connect stream as TAG_CHANGE events. There are three possible scenarios for churn prediction Connect events:

  • Add prediction: Provide current (added) prediction.

  • Prediction change: Add new prediction, remove old prediction, provide current (added) prediction.

  • Remove prediction: Provide current (null) prediction.

Churn Event JSON Parameters:

  • add— adds the current churn prediction tag, provided there is a change from the previous state.

  • remove— removes the prior churn prediction tag, provided that a) a churn prediction tag was previously present for the user and b) the prior churn prediction is different from the one being added.

  • current— the current prediction tag for this user. The value of the current churn prediction tag will always be the same as that of the add churn prediction tag in a TAG_CHANGE event.

Not all devices begin with a churn prediction, but after the predictive churn model is run, active users will be assigned a prediction.

Example 1: Add Prediction

A prediction is made for a channel for the first time, OR the channel already had a prediction, went inactive (so it was removed), and then became active again and received a new prediction.

{
   "id": "e1559cd7-af96-45ab-bb74-a22cd99a01d5",
   "offset": "1422600",
   "occurred": "2017-01-15T09:26:30.362Z",
   "processed": "2017-01-15T16:15:30.048Z",
   "device": {
      "android_channel": "d5ec96e3-5ced-47b0-a4dd-1b2b6bda442e",
      "named_user_id": "job.bob@gamil.com",
      "attributes": {
         "locale_variant": "",
         "app_version": "312",
         "device_model": "LG-H811",
         "connection_type": "WIFI",
         "app_package_name": "com.company.app",
         "iana_timezone": "America/Los_Angeles",
         "push_opt_in": "true",
         "locale_country_code": "US",
         "device_os": "6.0",
         "locale_timezone": "-28800",
         "carrier": "T-Mobile",
         "locale_language_code": "en",
         "location_enabled": "true",
         "background_push_enabled": "true",
         "ua_sdk_version": "6.1.2",
         "location_permission": "ALWAYS_ALLOWED"
      }
   },
   "body": {
      "add": {
         "ua_churn_prediction": [
         "medium"
         ]
      },
      "current": {
         "ua_churn_prediction": [
         "medium"
         ]
      }
   },
   "type": "TAG_CHANGE"
   }

Example 2: Prediction Change

A channel already had a prediction, but based on recent behavior, it is being updated to a different risk category.

{
   "id": "e1559cd7-af96-45ab-bb74-a22cd99a01d5",
   "offset": "1422600",
   "occurred": "2017-01-15T09:26:30.362Z",
   "processed": "2017-01-15T16:15:30.048Z",
   "device": {
      "android_channel": "d5ec96e3-5ced-47b0-a4dd-1b2b6bda442e",
      "named_user_id": "job.bob@gamil.com",
      "attributes": {
         "locale_variant": "",
         "app_version": "312",
         "device_model": "LG-H811",
         "connection_type": "WIFI",
         "app_package_name": "com.company.app",
         "iana_timezone": "America/Los_Angeles",
         "push_opt_in": "true",
         "locale_country_code": "US",
         "device_os": "6.0",
         "locale_timezone": "-28800",
         "carrier": "T-Mobile",
         "locale_language_code": "en",
         "location_enabled": "true",
         "background_push_enabled": "true",
         "ua_sdk_version": "6.1.2",
         "location_permission": "ALWAYS_ALLOWED"
      }
   },
   "body": {
      "add": {
         "ua_churn_prediction": [
         "medium"
         ]
      },
      "remove": {
         "ua_churn_prediction": [
         "high"
         ]
      },
      "current": {
         "ua_churn_prediction": [
         "medium"
         ]
      }
   },
   "type": "TAG_CHANGE"
   }

Example 3: Remove Prediction

The user already had a prediction but became inactive, so the prediction is removed, and the current prediction becomes null.

{
   "id": "e1559cd7-af96-45ab-bb74-a22cd99a01d5",
   "offset": "1422600",
   "occurred": "2017-01-15T09:26:30.362Z",
   "processed": "2017-01-15T16:15:30.048Z",
   "device": {
      "android_channel": "d5ec96e3-5ced-47b0-a4dd-1b2b6bda442e",
      "named_user_id": "job.bob@gamil.com",
      "attributes": {
         "locale_variant": "",
         "app_version": "312",
         "device_model": "LG-H811",
         "connection_type": "WIFI",
         "app_package_name": "com.company.app",
         "iana_timezone": "America/Los_Angeles",
         "push_opt_in": "true",
         "locale_country_code": "US",
         "device_os": "6.0",
         "locale_timezone": "-28800",
         "carrier": "T-Mobile",
         "locale_language_code": "en",
         "location_enabled": "true",
         "background_push_enabled": "true",
         "ua_sdk_version": "6.1.2",
         "location_permission": "ALWAYS_ALLOWED"
      }
   },
   "body": {
      "remove": {
         "ua_churn_prediction": [
         "medium"
         ]
      },
      "current": {
         "ua_churn_prediction": []
      }
   },
   "type": "TAG_CHANGE"
   }