There are several mechanisms Branch makes available for customers to pass data through to the app and attribute app sessions back to the source (where customers determine that such use is consistent with applicable law and relevant platform policies). We always use the method with the highest confidence rate. When we are 100% confident, the deep link data will contain the variable
Sensitive use cases
When implementing data-sensitive use cases (ie auto-login, PNR visualization), the mobile app logic should parse the flag
+match_guaranteedfrom the SDK initialization callback and deep link users only when its value is true
+match_guaranteedwill usually be false on install events, unless users opt-in to IDFA collection.
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.
With the introduction of iOS 15 & iCloud+ Private Relay, Branch released deferred deep linking via the iOS pasteboard. By enabling NativeLink™, you will be able to guarantee deferred deep linking to work with 100% accuracy (
+match_guaranteed=true). Users will be presented with a Deepview that enables users to continue their user experience in an app by clicking on the main CTA.
To implement iOS NativeLink™, follow the instructions in our developer documentation.
An Install Referrer is a mechanism to support deterministic matching/attribution on Android devices downloading apps in specific app stores.
Branch Android SDK
- Advertiser integrates with App Stores (Google Play, Huawei, Samsung, & Xiaomi) and releases the app.
- Advertiser delivers an app download ad with an install referrer on the specific App Store.
- Publisher app requests and displays the ad.
- User clicks the ad in the app and can choose to download and install the advertiser's app.
- The App Store writes the install referrer to an API
- The Branch SDK initializes and collects the referrer from the App Store via API
- The app install event is reported in Branch's attribution system.
Google Play Store
Samsung Galaxy Store
As users engage with apps and websites where the Branch SDK is integrated, Branch’s attribution engine algorithm is improved where it makes connections between browser cookies that are collected upon Branch link click and device identifiers collected upon the user’s engagement with the app.
When a user clicks a Branch link to open an app that uses the Branch SDK, Branch is able to deterministically attribute that user if we've previously seen that user on our platform click a Branch link and 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.
As hundreds of millions of users of apps that use Branch click Branch links, and our platform continues to make more browser-app connections, you can benefit from improved attribution accuracy through our attribution engine that is optimized each time it connects end users between browser to app..
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:
|Custom User Logins||Branch'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 integrations||Branch 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.|
|SKAdNetwork||Branch 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.|
When a user clicks a Branch link to open an app that uses the Branch SDK, it's possible our attribution engine has paired their Branch browser cookie to their device ID to attribute the user deterministically. 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 to attribute the user probabilistically.
As hundreds of millions of users of apps using Branch click Branch links, we can use these connections to power our predictive modeling engine that can provide greater attribution accuracy when connecting app behaviors back to browser touches.
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.
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
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.
The Branch Web SDK is used for web-to-app use cases and attribution for conversions that happen on mobile web.
Note: Be sure to implement the Web SDK on multiple pages (homepage, product detail pages, etc.) to ensure proper user experience and measurement.
When a user lands on a page with the Branch Web SDK initialized, the SDK makes a request to specific Branch endpoints (
Additionally, the Web SDK can utilize the same deterministic matching technique of custom user login for matching.
Using Branch's Predictive Modeling (PREM), the Web SDK can create a match between a link click and an event that happens on web. On link click, PREM observes characteristics like IP, User Agent, etc., in order to best match the click to the web session that contains the Branch Web SDK-captured characteristics like IP. Subsequent events tracked by the user on web will also be tied to what PREM is able to probabilistically match.
Branch's Web SDK does use localstorage and sessionstorage to store some data that are important to how we do attribution for Safari users. If this data gets wiped on a particular user’s Safari browser Branch maybe be forced to create a new browser ID for that user, resulting in fragmentation. The impact of ITP is minimal because the Branch Link Graph is based on first-party interactions with deep links, and is able to reconnect these identity fragments in a privacy-friendly way as ITP creates them. Even with the most recent update, which blocks all third-party cookies and puts a 7-day cap on all script-writable storage, the impact is minimal.
Updated 3 months ago