Adobe Analytics

See the influence of push notifications on in-app actions. Adobe Analytics provides behavioral analytics and content performance measurement for websites and mobile apps. Urban Airship Connect provides a live view into your application, adding the “messaging perspective” to your Adobe Analytics information. This integration enables a complete view of the user experience by combining Adobe Analytics data with user-specific interactions such as push sends, direct and indirect opens, and uninstalls.

Via the Connect data stream, Urban Airship provides exclusive mobile engagement data that is not otherwise available from the Adobe Analytics SDK, including:

  • Send Events: A device was sent a notification. Includes the push ID and the user that push ID was sent to.
  • Control Events: A device, targeted as part of an A/B Test, was sorted into the control group. It received no notification, helping you answer the question: “What would have happened had you not sent a notification?”
  • Direct and Indirect Opens: Opens that were either caused by a notification, or which occurred within 12 hours of a notification.
  • In-App Message Events: Displays, resolutions (timeout or user action), expiration.
  • Message Center Events: Delivery, read, deleted.
  • Uninstall Events: The user uninstalled the application.

You can also export users from Adobe Analytics and send messages to them in Urban Airship.

In addition, we augment Adobe’s device reporting with information on in-app behavior defined by the Urban Airship SDK. In particular, we provide information pertaining to our Message Center and In-App Messaging products. We can tell you when a Message Center message was delivered (which happens via a different mechanism than the push notification), read, and deleted. We can also describe what happened to an in-app notification: whether it was displayed or expired before it could be, and what happened to it after it was displayed—did the user dismiss it, interact with it, or allow it to resolve itself?

Setup

Client Code

Fetch the Adobe Analytics visitor ID for your user, then associate it with the Urban Airship channel ID. See ID Matching for details about this feature.

iOS

// Get the Adobe visitor ID
let visitorID = ADBMobile.visitorMarketingCloudID()

// Add the visitor ID to the current associated identifiers
let identifiers = UAirship.shared().analytics.currentAssociatedDeviceIdentifiers()
identifiers.setIdentifier(visitorID, forKey:"AA_visitorID")

// Associate the identifiers
UAirship.shared().analytics.associateDeviceIdentifiers(identifiers)
// Get the Adobe visitor ID
NSString *visitorID = [ADBMobile visitorMarketingCloudID];

// Add the visitor ID to the current associated identifiers
UAAssociatedIdentifiers *identifiers = [[UAirship shared].analytics currentAssociatedDeviceIdentifiers];
[identifiers setIdentifier:visitorID forKey:@"AA_visitorID"];

// Associate the identifiers
[[UAirship shared].analytics associateDeviceIdentifiers:identifiers];

Android

// Get the Adobe visitor ID
String visitorId = Visitor.getMarketingCloudId();

// Add the visitor ID to the current associated identifiers
UAirship.shared().getAnalytics()
    .editAssociatedIdentifiers()
    .addIdentifier("AA_visitorID", visitorId)
    .apply();

Connect Dashboard

  1. From within the Urban Airship dashboard, with your app selected, click Connect in the navigation header. Click the Adobe Analytics integration option to begin setup.
  2. Name and configure a new Adobe Analytics integration:
    • Enter a user-friendly name and description.
    • Enter your Adobe Analytics Report Suite ID. If you do not have this, contact your iOS or Android developer.
    • Choose one or more event type:

      • Opens
      • Sends
      • Control
      • Uninstalls
      • Message Center Read, Delivery, and Delete Events
      • In-App Message Expiration, Resolution, and Display Events
  3. Click the Save button.


Now that you have configured your app and your Connect integration, you can create event-based Segments in Adobe Analytics. See Recommended Attribute Mapping for recommended mapping of Connect events to Adobe Analytics events.

Recommended Attribute Mapping

Capture what data is valuable to you by using Adobe Analytics context data and processing rules. Urban Airship uses the Data Insertion API to send data to Adobe Analytics. Urban Airship uses the contextData field so that we can include every piece of relevant data without taking up the limited number of variables and properties Adobe Analytics supports. In Adobe Analytics you can set processing rules so that every field on a Connect event maps to an Adobe Analytics concept. Once your Adobe Analytics administrator has set up the processing rules, you can view Urban Airship connect data in your Adobe Analytics dashboard.

We derive contextData keys from the original Connect events by flattening the JSON objects. For example, the push identifier of the notification that caused an open is triply nested:

{
   "body": {
      "triggering_push": {
         "push_id": "d99bd842-f816-4560-bc59-b057f7c0e164"
      }
   }
}

This field would be available for mapping as body.triggering_push.push_id. When mapped to a variable (sProp, eVar, event, or other Adobe Analytics concept), the variable’s value would be d99bd842-f816-4560-bc59-b057f7c0e164.

The above JSON example is a partial object. Actual JSON objects coming from Connect are much more complex.

To see all the available fields, read the Connect API Reference.

Urban Airship Concept Recommended Adobe Analytics Mapping Context Data Variable
Connect event type (e.g., send, direct open, indirect open) Custom event (one for each type), and an sProp for segmentation (all the people who received a message, or opened etc.) type
Unique push id, group id, or variant eVar body.push_id, body.group_id, body.variant, body.triggering_push.push_id, body.triggering_push.group_id, body.triggering_push.variant, body.last_delivered.push_id, body.last_delivered.group_id, body.last_delivered.variant, body.replacing_push.push_id, body.replacing_push.group_id, body.replacing_push.variant
Device Identifiers (e.g., named user, Urban Airship channel ID) eVar device.ios_channel, device.android_channel, device.named_user, device.identifiers.com.urbanairship.idfa
In-App Message Resolution Type sProp AND eVar body.type (and type is IN_APP_MESSAGE_RESOLUTION)
In-App Message Expiration Type sProp AND eVar body.type (and type is IN_APP_MESSAGE_EXPIRATION)
In-App Message Button identifiers sProp body.button_id, body.button_group, button.button_description
Adobe visitorId (via associated identifiers) eVar device.identifiers.AA_visitorID
Other Connect information Varies You can determine what the context variable name will be based on the Connect data. Inner properties are joined with outer properties via a period.

contextData can take a long time to appear in the Adobe Analytics dashboard. Please allow at least one hour before contacting support.

Known issue: If no processing rules have been defined, no contextData variables will be available for Mapping.

As a workaround until Adobe Analytics fixes this issue, add a trivial rule that does nothing, then proceed establishing your mapping as normal.

Sample Data sent to Adobe

<?xml version="1.0"?>
<request>
  <reportSuiteID>your-report-suite-id</reportSuiteID>
  <scXmlVer>1.0</scXmlVer>
  <pageName>OPEN-ios</pageName>
  <timestamp>2016-05-19T22:42:36.946Z</timestamp>
  <contextData>
    <id>03f13497-1e13-11e6-bc8d-001018948f58</id>
    <offset>444449</offset>
    <occurred>2016-05-19T22:42:36.946Z</occurred>
    <processed>2016-05-19T22:42:51.511Z</processed>
    <device.ios_channel>ec2816a3-72c7-4b9b-9ee6-ae31229f28bd</device.ios_channel>
    <device.named_user_id>mtr1234</device.named_user_id>
    <device.identifiers.com.urbanairship.limited_ad_tracking_enabled>true</device.identifiers.com.urbanairship.limited_ad_tracking_enabled>
    <device.identifiers.session_id>72153D08-B6A2-4900-9045-6776734B183B</device.identifiers.session_id>
    <device.identifiers.com.urbanairship.idfa>E51089C4-DD2D-44AA-BCD0-092DD6A16085</device.identifiers.com.urbanairship.idfa>
    <device.identifiers.com.urbanairship.vendor>DFEF1B87-2253-423C-97D4-003AA36F5C25</device.identifiers.com.urbanairship.vendor>
    <device.attributes.locale_variant/>
    <device.attributes.app_version>215</device.attributes.app_version>
    <device.attributes.device_model>iPhone6,1</device.attributes.device_model>
    <device.attributes.connection_type>CELL</device.attributes.connection_type>
    <device.attributes.app_package_name>com.urbanairship.internalsampleapp</device.attributes.app_package_name>
    <device.attributes.iana_timezone>America/Los_Angeles</device.attributes.iana_timezone>
    <device.attributes.push_opt_in>true</device.attributes.push_opt_in>
    <device.attributes.locale_country_code>US</device.attributes.locale_country_code>
    <device.attributes.device_os>9.3.2</device.attributes.device_os>
    <device.attributes.locale_timezone>-25200</device.attributes.locale_timezone>
    <device.attributes.carrier>T-Mobile</device.attributes.carrier>
    <device.attributes.locale_language_code>en</device.attributes.locale_language_code>
    <device.attributes.location_enabled>false</device.attributes.location_enabled>
    <device.attributes.background_push_enabled>true</device.attributes.background_push_enabled>
    <device.attributes.ua_sdk_version>7.1.0</device.attributes.ua_sdk_version>
    <device.attributes.location_permission>UNPROMPTED</device.attributes.location_permission>
    <body.session_id>787bf679-4732-4722-b761-bcd9b1e7a1eb</body.session_id>
    <body.last_delivered.push_id>685783c0-68b1-4d05-bc94-98e90d943fd1</body.last_delivered.push_id>
    <body.last_delivered.variant_id>1</body.last_delivered.variant_id>
    <body.last_delivered.time>2016-05-19T18:04:40.049Z</body.last_delivered.time>
    <type>OPEN</type>
  </contextData>
  <visitorID>ec2816a372c74b9b9ee6ae31229f28bd</visitorID>
</request>