Branch Methodology Overview


There are several mechanisms Branch uses to pass data through to the app and attribute app sessions back to the source. We always use the method with the highest confidence rate. When we are 100% confident, the deep link data will contain the variable +match_guaranteed=true.

Methods with 100% accuracy

Direct deep linking

If the app is currently installed on the phone, and you've configured your Branch links with your app's URI scheme (myapp://) or to use Universal or App Links, we will open the app immediately and pass a click identifier through to our native library. This click identifier is then sent to the Branch servers to retrieve the dictionary of data associated with the link.

For example, we'd call myapp://open?link_click_id=123456 to open the app immediately. The Branch native library parses out link_click_id: 123456 and passes it back to the Branch API to retrieve the data dictionary associated with that link click.

Device ID across the Branch Platform

When a user clicks a Branch link to open an app that uses the Branch SDK, and we've seen that user click a link for another app on our partner network, we've already paired their Branch browser cookie to their device ID. This means when they install the app, and a device ID is available, we know with 100% certainty that they're the same user that just clicked a Branch link on that device's browser.

We have a global network of apps with hundreds of millions of users clicking links, meaning you can benefit from crowd-sourced attribution accuracy, through our database of anonymous browser-app profiles.

Leveraging other techniques

We've built out custom deep linking mechanisms that are specific to each platform to ensure that deep linking is accurate. Here are some of those techniques we use:

MethodImplementation Details
Android Google Play referrerGoogle Play supports passing a referrer through the install process that we listen for. It's delivery of the referrer can be inconsistent, but we'll use it when available. Our basic SDK Integration ensures that we'll automatically leverage this API in Android, so no additional work is required to benefit from it.
Custom User LoginsBranch's mobile & web SDKs allow developers to assign their own custom user IDs to web & app events, which we can then use as an additional data point to attribute events back to the same user. Branch takes great care to educate all developers to never use personal identifiers in these fields, but when available, these allow us to augment our methodology with anonymous data specific to the app using them.
Platform integrationsBranch has direct integrations with Apple, Facebook, Google, Twitter, and Snap, where the platforms will directly confirm if a specific user engaged with an ad on their platform. Branch is then able to compare these touch points against all other user interactions sourced by Branch links, to enable a greater level of attribution accuracy across organic & paid platforms.
SKAdNetworkBranch supports Apple's SKAdNetwork framework for campaign-level attribution. While this doesn't allow the ability to surface user-level insights, because all app store installs are verified at the campaign level by Apple, these numbers are guaranteed at 100% certainty.

Methods without 100% accuracy

Predictive modeling engine across the Branch Platform

When a user clicks a Branch link to open an app that uses the Branch SDK, and we've seen that user click a link for another app on our partner network, it's possible we've paired their Branch browser cookie to their device ID. However, even if their device ID is unavailable, we're able to pair that browser cookie to other associated device metadata like IP addresses & User Agents.

As our global network of apps produces hundreds of millions of users clicking links, our database of anonymous browser-app connections continues to grow, and we can use this data to power our predictive modeling engine that can provide greater accuracy when connecting App Behaviors back to Browser touches.

Browser to app snapshot comparison

Branch collects anonymous information about devices when a user is in the browser -- via a click on a Branch link -- and then after they open the app. This includes IP Address (including v6), OS, OS version, device model, user agent and other parameters.

When no other mechanism is available, we compare the unique data collected in the app to the unique data collected in the browser, and if enough data points align within that specific moment in time, then we can say with a high probability that it's the same user.

Customize criteria

If you are concerned that different users may be conflated by having the same anonymous metadata, you can choose to have Branch do nothing if two identical sets of metadata are under consideration.

On the Dashboard's Link Settings page, under advanced options, you should set Match Type to Unique.


You can also modify the attribution windows for any integration by following these instructions in the dashboard. Attribution windows essentially define your acceptable timeframes for how long any downstream conversions can be attributed back to a corresponding link click or ad impression.

Updated 2 months ago

Branch Methodology Overview

Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.