Adobe Analytics

Overview

Adobe Analytics provides behavioral analytics and content performance measurement for websites and mobile apps. Airship Real-Time Data StreamingA service that delivers engagement events in real time via the Data Streaming API or an Airship partner integration. (RTDS) 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.

Additionally, Airship augments Adobe’s device reporting with information on in-app behavior defined by the Airship SDK. Airship events can tell you when a Message Center message was delivered, read, and deleted. They can also describe what happened to an in-app notification — whether it was displayed or expired, and what happened to it after it was displayed. Did the user dismiss it, interact with it, or allow it to resolve itself?

Set Up an Integration

There are three major steps to setting up this integration. You will need help from your developers (iOS and Android) and your Adobe Analytics and Airship administrators:

Add Client Code

Fetch the Adobe Analytics visitor ID for your user, then associate it with the 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();

Set Up an Adobe Analytics Event Stream

  1. Go to Settings » Real-Time Data Streaming.

  2. Under Real-Time Data Streaming, click Adobe Analytics.

     Tip

    Previously configured integrations are listed under Enabled Integrations.

  3. Configure a new Adobe Analytics integration:

    • Enter a user-friendly name and description.

    • Enter your Adobe Analytics Report Suite ID and Tracking Server URL. If you do not have these, contact your iOS or Android developer.

       Important

      Make sure to surround the value found in your s.trackingServer with the protocol (http://) and the path (b/ss//6) to form the full URL, e.g., http://mysite.com.omtrdc.net/b/ss//6.

    • Enter your Adobe Analytics Tracking Server URL.

    • Select the Event Types that you want to want to send into Adobe.
       Note

      If you set up your integration before March 11, 2020, you must create a new Adobe Analytics integration to take advantage of the full list of events below.

      • Opens
      • Sends
      • Control
      • Custom Events
      • First Opens
      • First Opt-In
      • In-App Message Expiration, Resolution, and Display Events
      • Location
      • Region
      • Message Center Read, Delivery, and Delete Events
      • Send Rejected
      • Tag Changes
      • Uninstalls
  4. Click Save.

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

Recommended Attribute Mapping

 Important

If you set up your integration before March 11, 2020, your event fields will not belong to a global airship object. You must create a new integration to use the airship. namespace.

In Adobe Analytics, you capture the data that is valuable to you using context data and processing rules. Airship uses Adobe’s Data Insertion API to send data to Adobe Analytics. Airship uses the contextData field so that you can include every piece of relevant data from an Airship event without consuming the limited number of variables and properties that Adobe Analytics supports.

You can set the Adobe Analytics processing rules so that every field in an Airship event maps to an Adobe Analytics concept. After your Adobe Analytics administrator sets up your processing rules, you can view Airship event data in your Adobe Analytics dashboard.

We derive contextData keys from the original Data Streaming events using JSON notation, and use airship to represent the global parent for all Airship event properties. For example, this is the push identifier of a notification that caused an event:

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

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

 Note

The above JSON represents a partial event object. Actual JSON objects coming from the Real-Time Data Streaming API are more complex.

To see all the available fields, read the Data Streaming API Reference.

Set Up Adobe Analytics Processing Rules

You or your Adobe administrator must set up processing rules in the Adobe Analytics Admin Console to enable Adobe Analytics to capture events from Airship. These processing rules assign contextData variables to Adobe Analytics variables or increment events (counters) accordingly.

  1. In the Adobe Analytics interface, go to the Admin Console located in the header of the page, and navigate to the Report Suites section.

  2. Select the Report Suite that Airship is sending data to and then go to Edit Settings » General » Processing Rules.

  3. Click Add Rule.

  4. Give the new rule a Title, e.g., Airship to Adobe Analytics Integration.

  5. Click Add Action.

  6. If you need to setup an sProp or eVar to capture a dimension (e.g., Event Type), select Overwrite Value Of and then select the sProp or eVar that you want to set. After the With label, select the contextData variable that you want to set the sProp or eVar with.

  7. If you need to set up an Event to capture the number of times something occurred, e.g., the number of Opens, select Set Event and then select the Adobe Analytics Event you want to set. Select Custom Value, and set the value to 1. You will then set a condition for when you want to set this event.

    Continuing with the Opens example, you would set up a condition where the If is for the same type contextData variable, and the condition would be equals OPEN. This will increment the Open Event each time the Data Streaming Event Type is set to OPEN.

This is just one example of how you can set up a variable and an event. The same concept applies for each Airship event type and dimension that you want to capture in Adobe.

Below are some recommendations on different ways that you can get started mapping the Airship concepts to Adobe Analytics concepts.

This table provides example contextData variable keys and the recommended Adobe Analytics variable type to capture information from incoming Airship event information. See our Real-time Data Streaming documentation for information on events and fields that aren’t listed below. Use JSON object notation to reach nested properties (in the format airship.property.sub-property). In Adobe analytics, all variables are preceded by airship..

Airship ConceptRecommended Adobe Analytics Mapping ContextData Variable
Data Streaming 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 varianteVarairship.body.push_id, airship.body.group_id, airship.body.variant, airship.body.triggering_push.push_id, airship.body.triggering_push.group_id, airship.body.triggering_push.variant, airship.body.last_delivered.push_id, airship.body.last_delivered.group_id, airship.body.last_delivered.variant, airship.body.replacing_push.push_id, airship.body.replacing_push.group_id, airship.body.replacing_push.variant
Device Identifiers (e.g., named user, Airship channel ID)eVarairship.device.ios_channel, airship.device.android_channel, airship.device.named_user, airship.device.identifiers.com.urbanairship.idfa
In-App Message Resolution TypesProp AND eVarairship.body.type
(and type is IN_APP_MESSAGE_RESOLUTION)
In-App Message Expiration TypesProp AND eVarairship.body.type (and type is IN_APP_MESSAGE_EXPIRATION)
In-App Message Button identifierssPropairship.body.button_id, airship.body.button_group, button.button_description
Adobe visitorId (via associated identifiers)eVarairship.device.identifiers.AA_visitorID
Other Data Streaming informationVariesYou can determine what the context variable name will be based on the Data Streaming event 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 Airship Support.

 Important

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>