Adobe Analytics (Processing Rules)

580580

Table of Contents

  1. Overview
  2. How does it work?
  3. What events does Branch send to Adobe Analytics
  4. What does it look like?
  5. Integration Guide
  6. Migrating from Data Connectors Integration
  7. Advanced
  8. Support

Overview

With the Adobe Analytics Data Integration, you can send Branch data to your Adobe Analytics dashboard, helping you understand the power of Branch as an acquisition pathway.

How does it work?

Once the Branch SDK is integrated into the mobile app, Branch can detect which links are leading to installs, opens, and downstream app events. Enabling this Data Integration and providing your Adobe Analytics information will result in Branch automatically forwarding referred events to Adobe Analytics through server-to-server integration.

What events does Branch send to Adobe Analytics?

Branch will send referred installs and opens, as well as any custom and commerce events you track with Branch. Non-referred events, clicks, web session starts, and pageviews will be excluded. Branch also sends all the analytics tags that are attached to the link that drove the referred event. This will allow you to analyze which campaigns, channels, etc. are helping you acquire and engage users.

What does it look like?

The data that appears in Adobe Analytics is based on how you configure your reports/workspaces stemming from the Processing Rules.

40604060

Integration Guide

🚧

Prerequisites

Branch

Adobe Analytics

Data Connector

  • If you currently have the Data Connector Integration enabled and are satisfied with the data & reporting in Adobe Analytics, you do not need to enabled this integration.

  • If you wish to migrate from the Data Connector Integration to this Processing Rules Integration, please carefully read the Migrating from Data Connectors Integration section before moving forward with the following integration steps.

1. Configure the Branch Dashboard

Retrieve your Adobe Analytics Information

  1. Before navigating to the Branch Dashboard, in your Adobe Analytics Dashboard, navigate to the Mobile Marking UI and find your app.

  2. Navigate to Manage App Settings, scroll down to SDK Analytics Options

14891489
  1. Find the following data:

Branch Field

Adobe Field Value

Protocol

Use HTTPS

Analytics Server Domain

Tracking Server

Report Suite ID

Report Suite ID

Offline Tracking

Offline Tracking

📘

Adobe Experience Cloud Debugger

You can also use Adobe Experience Cloud Debugger to find the information about your SDK Analytics Configuration. Here is a link to the help guide Network Information | Adobe Data Collection

If you're still not sure about SDK Analytics Configuration please reach out to the Adobe Support team.

Enter Adobe Analytics Information

  1. Log in to the Branch Dashboard and navigate to the Data Integrations page within Data Feeds.
  2. Locate Adobe Analytics (Processing Rules) from the list.
  3. Enter your Adobe Analytics information
    • For Tracking Server/Analytics Server Domain, do not include http or https. If your value for this is https://test.com, simply put test.com.
  4. Click Enable/Save
14341434

2. Pass Adobe IDs to Branch

🚧

Adobe Launch

This step is not required if the Branch SDK is implemented using the Adobe Launch plugin.
If this step is not completed, the events that Branch sends to Adobe Analytics will not appear, and it will not connect to other data already tracked by Adobe Analytics.

You'll need to pass through all user IDs configured with Adobe, to the Branch SDKs (There are three possible Adobe IDs this integration can track). First, figure out which ID you use by asking your Adobe Consultant/Account Manager, and then pass that value to Branch by calling the setRequestMetadata methods (iOS | Android) of the Branch SDK, BEFORE initializing the session on the Branch SDK.

For example, if your Adobe integration uses the Marketing Cloud Visitor ID or Experience Cloud ID, retrieve the ID from Adobe's SDK, and pass it to Branch's SDK with a key called $marketing_cloud_visitor_id. Sample snippets for all ID types below:

Marketing Cloud Visitor ID / Experience Cloud ID

Value sent to Branch using $marketing_cloud_visitor_id key. Value sent to Adobe as mid.
Check to see if a cloud id is present, if not, initialize Branch within the callback to utilize the returned cloud id, otherwise initialize Branch outside of the Adobe callback. The best practice is to store the cloud id and then reuse it for subsequent app launches

//Inside *didFinishLaunchingWithOptions*
Branch *branch = [Branch getInstance];
if (experienceCloudId == nil) {
    [ACPIdentity getExperienceCloudId:^(NSString * _Nullable retrievedCloudId) {
        [branch setRequestMetadataKey:@"$marketing_cloud_visitor_id" value:[retrievedCloudId]];
        ...
        [branch initSessionWithLaunchOptions...];
    }];
} else {
    [branch setRequestMetadataKey:@"$marketing_cloud_visitor_id" value:[experienceCloudId]];
    ...
    [branch initSessionWithLaunchOptions...];  
}
//Inside *didFinishLaunchingWithOptions*
if let branch = Branch.getInstance() {
  if experienceCloudId == nil {
    ACPIdentity.getExperienceCloudId { (retrievedCloudId) in branch.setRequestMetadataKey("$marketing_cloud_visitor_id", value:retrievedCloudId)
    ...
    branch.initSession(...)  
  } else {
    branch.setRequestMetadataKey("$marketing_cloud_visitor_id", value:experienceCloudId)
    ...
    branch.initSession(...)
  }
}
//Before you initialize the session.
if (experienceCloudId == null) {
  Identity.getExperienceCloudId(new AdobeCallback<String>() {    
    @Override    
    public void call(String id) {
      Branch branch = Branch.getInstance();
      branch.setRequestMetadata("$marketing_cloud_visitor_id", id);
      ...  
      branch.sessionBuilder(this)…init();
    }
  });
} else {
  Branch branch = Branch.getInstance();
  branch.setRequestMetadata("$marketing_cloud_visitor_id", experienceCloudId);
  ...
  branch.sessionBuilder(this)…init();
}

Analytics Custom Visitor ID

Value sent to Branch using the $analytics_visitor_id key. Value sent to Adobe as vid. This is a custom user ID that can be set using the Adobe SDK.

//Inside *didFinishLaunchingWithOptions*
//Setting the Identifier with Adobe
[ADBMobile setUserIdentifier:@"Whipple"];
//Passing the Identifier to Branch
Branch *branch = [Branch getInstance];
[branch setRequestMetadataKey:@"$analytics_visitor_id" value:[ADBMobile userIdentifier]]
...
[branch initSessionWithLaunchOptions...]
//Inside *didFinishLaunchingWithOptions*
//Setting the Identifier with Adobe
ADBMobile.setUserIdentifier("Whipple")
//Passing the Identifier to Branch
if let branch = Branch.getInstance() {
    branch.setRequestMetadataKey("$analytics_visitor_id", value:ADBMobile.userIdentifier())
    ...
    branch.initSession(...);
}
//Before you initialize the session.
//Setting the Identifier with Adobe
Config.setUserIdentifier(""Whipple"");
//Passing the Identifier to Branch
Branch branch = Branch.getInstance();
Branch.getInstance().setRequestMetadata(""$analytics_visitor_id"", Config.getUserIdentifier());
...
Branch.sessionBuilder(this)...init();

Analytics Visitor ID

Value sent to Branch using the $adobe_visitor_id key. Value sent to Adobe as aid.

//Inside *didFinishLaunchingWithOptions*
Branch *branch = [Branch getInstance];
[branch setRequestMetadataKey:@"$adobe_visitor_id" value:[ADBMobile trackingIdentifier]];
...
[branch initSessionWithLaunchOptions...]
//Inside *didFinishLaunchingWithOptions*
if let branch = Branch.getInstance() {
    branch.setRequestMetadataKey("$adobe_visitor_id", value:ADBMobile.trackingIdentifier());
    ...
    branch.initSession(...);
}
//Before you initialize the session.
Branch branch = Branch.getInstance();
branch.setRequestMetadata(""$adobe_visitor_id"", Analytics.getTrackingIdentifier());
...
Branch.sessionBuilder(this)...init();

3. Configure the Adobe Analytics Dashboard

Configure Processing Rules

  1. Open the Report Suite where the data is being sent.
  2. Navigate to the Report suites under the Admin tab.
512512
  1. Select a Report Suite from the list.
16001600
  1. Navigate to Edit Settings > General > Processing Rules.
16001600
  1. Create new Data Processing Rules using the Processing Rules Dashboard.
    If you are already sending Branch events to Adobe Analytics, you should see a list of Context Variables in the list of available parameters. If you don't see them there, we recommend sending some data and waiting for the list to be updated before configuring the data mapping.
    Configure Branch data mapping to Adobe Analytics variables.
22602260

For additional assistance on configuring Processing Rules, please visit the Processing Rules documentation.

  1. Save the rules.

Migrating from Data Connectors Integration

If you are currently using the Adobe Analytics (Data Connector) Integration and are looking to use this Processing Rules Integration there are a few things we need to do to ensure proper migration.

🚧

Data Pause

There will be a brief pause in data being sent from Branch to Adobe Analytics until the Data Connector Integration can be disabled and the Processing Rules Integration can be enabled.

Before enabling Processing Rules

You must disable the Data Connector Integration first before enabling the Processing Rules Integration unless you are using a different Report Suite ID.

  1. Go to the Data Integrations tab in the Branch Dashboard
  2. Search for "Adobe Analytics (Data Connector)" and click the Disable button
993993
  1. Follow the instructions in the integration guide to complete the Processing Rules Integration.

Advanced

Android Latency

If you're concerned about the additional latency, you can call expectDelayedSessionInitialization conditionally

LauncherActivity.onStart() {
  ...
  Branch.expectDelayedSessionInitialization()
}

asyncOperationCallback() {
  Branch.sessionBuilder(activity).withCallback(callback)...init();
}

Support

Example Data Mapping

You are free to set your own data mapping when configuring the Processing Rules. Here is an example of a classification rule set that may be usable for your use case and Adobe configuration:

Adobe Classification

Branch Analytics Tag

Source

Channel

Campaign

Campaign

Medium

Feature

Action

Branch Event Name

Action Property

Branch Tags

Custom

Custom Data

Action Property

Event Timestamp

Data isn't appearing after simulating an event

With the Adobe Analytics Dashboard, it may take up to ~2 hours for data to appear. We'd recommend you simulate 10-15 events in one testing session, and validate that they show up two hours later so that feedback is transparent and obvious.

If you're not seeing an Adobe ID appended to the Branch events in Adobe's dashboard, you can call enable logging (iOS | Android) on the Branch SDK and inspect the requests to v1/open in-app to confirm the ID is being sent. The key you want to find in this request payload is either $adobe_visitor_id, $marketing_cloud_visitor_id, or $analytics_visitor_id.

What is Context Data and where does Branch provide it to Adobe?

When sending server-to-server calls to Adobe, Context Data is the part in-between &c. and &.c in the server call. This call cannot be seen via the client (for example, it is not available via Charles Proxy). To see the detailed Branch server calls, please reach out to your Branch Account Manager. In general, values sent in Context Data can be visualized in the Adobe dashboard, and values outside of Context Data cannot. Values like the user identity (e.g. vid, mid or aid) are sent to Adobe, but not in Context Data, so they can’t be visualized in the Adobe Report Suite. However, they are appropriately formatted for Adobe to log events for that user in Adobe.