Pre-Install Analytics

Attribute your app's install when it's already installed on the device through a wireless carrier.


Many mobile devices come pre-installed with apps already installed, which is great for the user experience because users do not need to launch an app store to download and install these pre-loaded apps. But how do you attribute the pre-loaded app install when there is no ad click to use for attributing the install (to the appropriate advertising partner)?

Branch solves this problem by allowing you to set all of the relevant partner/publisher information in the app itself, which we then collect during the install request on Android only.

How does it work?

  1. You have agreed with a wireless carrier/OEM (ex. AT&T) to pre-install your mobile app on their devices. In this case, the wireless carrier/OEM is the advertising partner.
  2. The ad partner's information is supplied to the app via the Branch SDK.
  3. On the app's first open, the Branch SDK collects the advertiser's information and uses it to attribute the app install and downstream app events (ex. COMPLETE_REGISTRATION) to the partner.
    • Events occurring in the first launch of the app will be attributed back to the partner (even if a Branch Link was clicked before the app was first opened). If there is then a later click, that will become the new most recent last touch, and future events will be attributed to that link click.


Attribution Priority

All Preload Attribution Methods take priority over other attribution sources such as clicks and impressions. Preload Attribution Windows adhere to those set within the Branch Dashboard.

How to view Pre-Install Data in Branch

Regardless of your Pre-Install Analytics Method, Branch will hardcode channel to preinstall.

While in the Ads Analytics section of the Branch Dashboard, filter first for channel=preinstall and continue to segment your data further by adding additional parameters within the compare by.


In order to attribute pre-installs, you need to have completed the following:

  • Implement the Branch Android SDK v4.0.0+


Specific Partner Guides

There are specific partner guides available for Pre-Install attribution. Visit them here:

Default Pre-Install Analytics

By default, the Android SDK will utilize the Google Play Store Install Referrer API to evaluate specific indicators that would require Branch related handling. In terms of preload attribution, we specifically look for the value play-auto-install. This value indicates that the app was pre-installed on the device at the carrier or OEM level and even with a hard reset of the device, the app will still be present.

This play-auto-install value comes in this format: utm_source=play-auto-installs&utm_medium=preload&utm_campaign={Campaign set by advertiser} from the referrer API.

We then map the utm_medium and utm_campaign to ~channel and ~campaign.

Enable Advanced Pre-Install Analytics (Two Options)


Preload Partner Values

When setting pre-loaded partner data, you must use Branch's $3p value for the partner's name and it will override the system props data. Follow our guide on how to find a partner's $3p value.

Option 1 - Set Data in the Pre-Loaded APK

After loading the Branch SDK in the Application class as per the docs here, call the setters to set the data in the APK:

// Branch object initialization
Branch.getInstance().setPreinstallCampaign("My Campaign Name");
Branch.getInstance().setPreinstallPartner("Branch $3p Parameter Value");

Measuring the logs, the request should look like this:

  preinstall_campaign: “My Campaign Name”
  preinstall_partner: “Branch $3p Parameter Value”


Multiple Partners Pre-Installing Your App

If multiple partners are pre-installing your mobile app, then you can create a partner-specific build of your app for distribution to each publishing partner (where each build includes different partner settings, respective to the particular partner). The partner-specific build is what the partner pre-installs onto the desired devices.

Option 2 - Read the Pre-Loaded Data from Device

Once the data is set, you need to read the pre-loaded data from the Android System Properties.

  1. Create a JSON file pre_install_apps.branch as follows:
    "apps": {
        "": {
            "preinstall_partner": "Branch $3p Parameter Value",
            "preinstall_campaign": "campaign_to_attribute"
  1. Ask the device manufacturer to add the file in the OS level file system.
  2. Set the file path in the build.props as below:
  3. The SDK checks if the APK has the pre-install data.