Setting up multi-store Android attribution

At a glance: Attribute your apps in multiple Android stores and view the data in a single app dashboard or in an app dashboard per store. 

Multi-store Android attribution 

AppsFlyer attributes apps, irrespective of the app store. Meaning Google Play store and third-party Android app stores like Amazon, Opera, GetJar, Baidu, and Huawei. (AKA out-of-market stores or alternate Android app stores.) App owners, who market the app via multiple stores, can choose between a single dashboard having the data of all stores together or a dashboard per store. 

 Note

DashboardType_us-en-new.jpg

Single dashboard vs. dashboard per store

  • Single dashboard: One dashboard that combines data from all stores, including Google Play Store
  • Dashboard per store: Multiple dashboards—each store has its own dashboard. This means you have as many dashboards as stores providing the app.
 

Single dashboard
[Best practice]

 Dashboard per store
Android package name Use the same (identical) package name irrespective of the option selected. 
Channel name Nothing to set
  • When adding the App in the AppsFlyer dashboard using the Android Out-of-Store APK option, set the channel.
  • The channel identifies the store. 
  • The combination of Android package name and channel uniquely identifies each AppsFlyer dashboard. 
  • Example: The Android package name is com.abc.def and the channel is xyzdevicestore. The unique dashboard identifier is com.abc.def-xyzdevicestore. 
  • If the APK has a channel setting but there is no app with this setting, traffic is attributed to the default app, being the app with a blank channel setting being Google Play Store. 
Populating the install_app_store field
  • Uniquely identifies the store providing the app by download.
  • In the case of Google Play Store, this is blank. 
  • The store name is set in the manifest/APK.

N/A

OneLink template When working with OneLink this method is recommended.  N/A 
Measurement/Attribution links 
  • Links are the same irrespective of the store.
  • To redirect to the correct store, use af_r to set the redirect URL
  • A unique link is required for each store.
  • Create these using the Active integrations page.
  • The app ID is the channel name appended to the android package name. Ex: com.abc.def-def_store.
    Hence the attribution links will be different.
Reporting options available having install_app_store field

Raw data reports always contain this field. For Overview and Cohort, reach out to your CSM asking them to add the necessary feature. 

N/A 

Considerations

  • Attribution accuracy: Re-installs from different stores don't result in inflated install numbers. 
  • Organic installs will reflect organic installs of APKs from all stores under one dashboard.
  • Reporting options, broken down per store,  are limited to Overview, Cohort, and raw data at present.
  • Attribution accuracy: Re-installs are counted, which results in less accurate attribution.
  • View organic and non-organic installs and in-app event data per store (channel) on separate app dashboards in AppsFlyer.
  • Use Cohort to display combined reports of all stores together
  • Make sure the partners you're working with are active (Activate partner is turned on) in all dashboards. This is to avoid discrepancies (more common when comparing data with SRNs).

Set-up tasks

The workflow that follows lists the activities required to set up the desired option. The tasks are divided between the marketer and developer. 

For the Dashboard-per-store option repeat the tasks for each store. 

Before you begin:

  • Decide on the naming convention for the channel and install_app_store parameters.
  • Use the naming table that follows to map the channels and stores.
  • The table is used by the developer to prepare the APKs.
Parameter

Instruction

Single dashboard
[Best practice]

Dashboard per store
Android package name The identical package name for all dashboard options If the app is already in Google Play Store use the existing package name. Example: comb.abc.def
Channel name A unique value for each store.

Not set. Leave blank. 

Unique for each store. Set the value in the individual APK prepared for the store and when adding the app in AppsFlyer. 

Don't set a channel for the Google Play Store APK. 

Install app store AF_STORE A unique value identifying the store

Unique for each store. Set in the APK through the manifest. Each store has its own APK. 

 Not set

Tasks

Step

Responsibility

Single dashboard

Dashboard per store
1 Developer APK preparation APK preparation

Marketer

No action required. The assumption is that the app is already active in AppsFlyer. 

Add the app in AppsFlyer. 
3 Marketer

Prepare attribution links 

 

Prepare attribution links with the app ID combined with the channel name. Do so via the Active integrations page in the usual manner.

4 Developer and marketer

Testing

Testing

Procedures

Single dashboard—APK preparation

The Android package name determines which dashboard will contain the attribution data. In the single dashboard method, all stores have identical Android package names. There is no concept of a channel parameter here.

The identification of the download store is by way of the AF_STORE parameter set in the SDK, as described in this section.  The AF_STORE parameter isn't case-sensitive. For example, ABC, abc, Abc.  

To prepare the APK:

  1. Create a copy of the App build. Note: Don't change the Android package name. 
  2. To identify the individual store use one of the following methods:
    • Manifest method: Add the following within the <application> tag of the AndroidManifest.xml to identify the store. Set the AF_STORE parameter to the app store name.
      <application>
         ...
         <meta-data android:name="AF_STORE" android:value="EnterStoreNameHere"/>
         ...
      </application>
      --OR--
    • API method: Prepare a separate APK for each alternative app store. Call the setOutOfStore API to set the AF_STORE value. Set a unique value for each store.
      AppsFlyerLib.getInstance().setOutOfStore("EnterStoreNameHere")

The value set here appears in AppsFlyer raw data install_app_store field. This field is available in:

  • Overview dashboard
  • Cohort dashboard
  • Raw data reports (Raw data reports are an AppsFlyer premium feature)

Single dashboard—attribution links

  1. In AppsFlyer, from the side menu, select Collaborate > Active Integrations
  2. Choose the ad network.
  3. In the Attribution Link tab, set the Out-of-store URL parameter. This populates the af_r macro on the attribution link to redirect users to the correct app store landing page. For example, &af_r=http://www.destinationurl.com The default URL is set in the App Settings page. If the option isn't available in the App Settings page, ask your CSM to enable it for you. 
  4. Populate the af_r macro with the store landing page URL.
  5. Set additional attribution link parameters.
  6. Out-of-store media sources make use of ID matching for attribution and the AppsFlyer Probabilistic modeling serves as a fallback method.
  7. Add one or more user ID placeholders to the link URL:
    • android_id
    • advertising_id
    • oaid
  8. Copy the attribution link and give it to the ad network partner.

Dashboard per store—APK preparation

The Android package name combined with the channel parameter set in the manifest determines which store dashboard will contain the attribution data. 

To prepare a separate APK/manifest for each store:

  • Add the following within the <application> tag of the AndroidManifest.xml to identify the store. Set CHANNEL parameter to the app store name. 
    <application>
         ...
         <meta-data android:name="CHANNEL" android:value="EnterStoreNameHere"/>
         ...
    </application>
    Note: Parameters are case-sensitive. For the channel name you must use upper or lower-case letters only (a-z or A-Z). No other characters, such as hyphen (-) or underscore (_), are permitted.

Dashboard per store—adding the app

Add a dashboard (app) identified by the combination of the Android package name and channel set in the APK/manifest. Example: Android package name is com.myapp and the channel name is abcstore then the unique dashboard name is com.myapp—abcstore. 

To add a dashboard per store in AppsFlyer:

  1. In AppsFlyer, from the side menu, select Settings > My apps, and click Add app.
  2. Select Android > In 3rd-party store.
  3. Complete:
    • Android package name: The package name is exactly as it displays in the app package. 
    • Channel name: Unique identifier (store name) to differentiate between dashboards having the same package name. Verify that you use the same value in the APK prepared for the store.
      Note: For the channel name you must use upper or lower-case letters only (a-z or A-Z). No other characters, such as hyphen (-) or underscore (_), are permitted.
    • App URL:
      • Contains the default URL download address that populates the af_r macro in attribution links. Enter the URL where the APK is hosted or its landing page URL. 
      • You can change this per attribution link when you create them. 
      • If you leave this field blank, you won't be able to set the default page in the future.
  4. Click Next
  5. Follow the instructions in the interface to complete adding the app. 

Testing—both dashboard options

Non-organic installs

To test non-organic installs:

  1. Use an Android device that does not have your app installed or register the device.
  2. Generate a test attribution link using a OneLink link. Use test as the Media source name ("&pid=test").
  3. Add an advertising ID being GAID, OAID, or Android ID to the click URL.
    http://app.appsflyer.com/com.greatapp?pid=test
    &af_r=http://www.destinationurl.com&advertising_id=b5a3-78d9b5-0f12345-xxxx
    Send the attribution link to yourself via email and click on it. Once redirected, do not install from the store. Instead, install the updated beta version app with AppsFlyer attribution SDK embedded and launch it.

Single dashboard 

Dashboard per store
  1. Check your app installation raw-data report on the Export Data page.
  2. You should see one install conversion with the test media source. Under the column titled Install App Store, you should see the name of the store as it appears on the manifest.xml file.
  3. You can also see the param "af_installstore": "STORE_NAME" in the install logs. 
  1. Go to the necessary app per store dashboard.
  2. Check the app's installs raw-data report under the Export Data page or look at the overview page of the app.
  3. You should see one installation conversion with the “test” media source.

Organic installs

To test organic installs:

  1. Use an Android device that does not have your app installed or that is registered.
  2. Install the updated beta version app with AppsFlyer attribution SDK embedded and launch it.
  3. Check the results:

Expected results

Single dashboard 

Dashboard per store
Check the overview page for a new organic install (under the “organic” media source). At present, with the single app method, there is no indication as to the origin of organic installs.
  1. Go to the dashboard and overview page of the app that is specific to the tested store.
  2. You should see one installation conversion under “organic” media source.

Additional features

Migrating from Dashboard per store to single dashboard

To migrate from multi dashboard to single dashboard:
    Prepare new APKs for the stores by using the single dashboard method instructions contained in this article.

Driving users from Facebook to the Amazon app store 

  1. Configure a URL link to the app in your Meta app settings, under the Android section.
  2. Log in to Meta as the app admin, go to https://developers.facebook.com/apps/, and choose the app.
  3. Go to settings and find your Android settings, or if you have not already configured Android, add the platform.
  4. Fill out the required details, including the Amazon app store URL specific to your app.

    outofstore_1.png
  5. In the AppsFlyer dashboard, under Active Integrations, select Meta ads, and enter the same Facebook App ID you use when recording Meta In-Store Mobile App Install Ads with AppsFlyer.

Getting the data - Additional AppsFlyer reports

In addition to the Overview dashboard, you can use the following reporting methods in AppsFlyer.

  • Cohort:
    • Combine multiple dashboards (apps) in a single report
    • View the performance of each dashboard by breaking it down by install_app_store
  • Pull API (for single app method): Pull API installs raw data does not contain the Install App Store by default. To include the column add the following to the Pull API call: &additional_fields=install_app_store
  • Custom dashboard (for multiple apps method): If you use the multi-dashboard approach, use the custom dashboard to combine performance data from several apps in one place. 

Referrer implementation—third-party Android app stores

  • Referrer attribution is supported in relation to Google Play and the third-party stores listed here. 
  • For most third-party app stores, no other setting or configuration is required. For Xiaomi, an extra dependency needs to be configured. Learn more
  • Attribution by third-party store referrer is reflected in raw data reports as follows:
    • Match type: the name of the third-party store attributed. For example, huawei_referrer.
    • Contributor: If the user engaged with multiple app stores before installing the app, AppsFlyer considers these engagements as contributors. The install is awarded to the last-click engagement. Example:
      • A user clicks on an ad served by Google and is redirected to the Play Store. The user doesn't download the app.
      • The user clicks on another ad and is redirected to the Samsung Galaxy store. The user downloads and installs the app.
      • Attribution is awarded to the ad network causing the user to be redirected to the Samsung Galaxy store; Google is recognized as a contributor. 

Third-party Android stores having referrer attribution integrations with AppsFlyer

Third-party app store Starting from SDK version
Huawei App Store July 2020 6.14.0 +
Samsung Galaxy Store December 2020 6.1.1 +
Xiaomi GetApps Store September 2022 6.9.0 +

Troubleshooting

Installs attributed to the default app

If you create an app APK with a channel setting but don't create a dashboard for it in the AppsFlyer account: Installs are attributed to the default app, usually the Google Play Store app in your account. If there is no default app no data is recorded for the app. 

Traits and limitations

Trait Remarks
OneLink redirection to multiple app stores

Multiple app stores can be set on the OneLink template if the app package name is the same for all app stores and you implement the single dashboard option. 

Install app store

This parameter isn't available for agencies or ad networks.

OneLink redirection to a third-party store

If your Android app is available exclusively through a third-party store, you must set its Google Play status to Published out of store when adding the app. Choosing any other status will prevent redirection to the third-party store and will result in an error message.

Ad revenue 

af_ad_revenue values cannot be grouped by install_app_store values.