Search specific term/phrase surrounded by double quotes. e.g. “deep linking”
Exclude records that contain a specific term prefixed with a minus. e.g. Android -Firebase

Adobe Analytics (Data Connector)

🚧

Data Connector Update

On August 1, 2021, Adobe will no longer support the Data Connectors. To support these changes, Branch has built out a new integration called Adobe Analytics (Processing Rules).

If you are currently using this integration and are satisfied with the data being sent from Branch to Adobe Analytics, then no action is needed; however, if you would like to configure the data manually, you may migrate to the new Processing Rules Integration.

Overview

With a push of a button, you can send your 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 an app, Branch can detect which links are leading to installs, re-opens, and users' actions. Enabling this integration and providing your Adobe Analytics Information will result in Branch automatically forwarding referred events to Adobe Analytics through a server to server integration.

What events does Branch send?

Branch will send referred installs and opens, reinstalls, 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?

Branch events will appear on the Adobe Analytics dashboard through Reports > Custom Conversion > Branch eVar. Note, this will automatically appear once the Branch Data Connector is enabled through the Adobe Analytics dashboard.

You'll have the flexibility to analyze data as needed in the Adobe Analytics platform, as the data Branch sends maps in Adobe Analytics to a top level eVar. This eVar contains campaign, channel, target, event name, and action property, which are your analytics tags.

1172 1498

Branch events are similar to Adobe Analytics events in that they can be used to build custom reports and are tracked on the various pages and dashboards. However, unlike normal events, Branch events contain valuable information about how users ended up in your app in the first place.

1. Complete Data Integration Prerequisites

🚧

Prerequisites

BRANCH

Adobe Analytics

2. Activate the Branch Data Connecter in Adobe

  1. In your Adobe Analytics dashboard, under the Admin tab, find Data Connectors.
1432
  1. Click +Add New, search for "Branch," and click Activate.
1312

3. Configure the Branch Data Connector

Integration Settings

These are automatically configured when you activate the Data Connector.

Variable Mappings

Map your Branch events to your chosen eVar. In the example below, it will be mapped to Custom eVar 1, renamed to the SiteCatalyst metric Branch.

2424

Data Settings

Branch has provided a default classification rule set for the Branch data that will be ingested. This maps Branch analytics data to Adobe classifications as follows. You can change this classification rule set if you would like to, but editing is not required. We also include Branch tags so you can create a new rule that further segments your analytics data for advanced visibility.

Adobe ClassificationBranch Analytics Tag
SourceChannel
CampaignCampaign
MediumFeature
ActionBranch Event Name
Action PropertyBranch Tags
2410

Review Summary

Finally, review the integration, scroll to the bottom of the screen and click Activate Now to enable the integration.

738

3. Configure the Branch Dashboard

Retrieve your Adobe Analytics Information

Before navigating to Branch, in your Adobe Analytics dashboard, navigate to the Mobile Marketing UI and find your app.

Under Manage App Setting -> SDK Analytics Options, find the following data:

Branch fieldAdobe field value
ProtocolUse HTTPS Check Box (if checked, select HTTPS)
Analytics Server DomainTracking Server
Omniture iOS/Android Server KeyReport Suite ID for that app
TimestampOffline Tracking

For Analytics Server Domain, please do not include http or https. If your value for this is http://test.com, simply put in test.com. This means no extra slashes and no protocol.

Enter Adobe Analytics Information

  1. On the Branch Dashboard (dashboard.branch.io), navigate to the Data Integrations page.
  2. Locate Adobe Analytics and choose Enable.
  • If you have not yet entered billing information, please do so now.
  1. Enter your Adobe Analytics information and hit Save.

4. Pass Adobe IDs to Branch

🚧

Adobe IDs

This step is not required if the Branch SDK is implemented using Adobe Launch
If this step is not completed, events Branch sends to your Adobe Report Suite will not reliably appear, and 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, and then pass that value to Branch by calling setRequestMetadataKey (iOS) or .setRequestMetadata (Android) on the Branch SDK, BEFORE calling initializing 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 callback to utilize the returned cloud id, else initialize branch outside of the Adobe callback. The best practice is to store the cloud id and then reuse for subsequent app launches

  • iOS - Objective C
//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...];  
                        }
  • iOS - Swift
//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(...)
				}
			}
  • Android
//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();
			}

If you're concerned about the additional latency, the call to expectDelayedSessionInitialization can be called conditionally on start.


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

                        asyncOperationCallback() {
                            Branch.sessionBuilder(activity).withCallback(callback)...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.

  • iOS - Objective C
//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...]
  • iOS - Swift
//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(...);
}
  • Android
//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.

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

Advanced

What Branch Sends to Adobe Analytics

Branch sends the following values from Branch link data in the Adobe Context Data:

Adobe ClassificationBranch Analytics TagExample
SourceChannelOur Website
CampaignCampaignJourneys Test Campaign
MediumFeatureJourneys
ActionBranch Event NameInstall
Action PropertyBranch Tagstag=bar&tag2=1234
CustomBranch Custom Datakey=value

If you create a Quick Link and specify analytics, those analytics will appear in the Adobe Analytics reporting suite.

Support

There are common strategies to take while troubleshooting.

Data isn't appearing after simulating an event

With 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 setDebug 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.