Cross-Promotion Tracking

  • Advertisers
  • Developers


Question - What is the best source of traffic you can get for your new app/s?

Answer - your own users from your other apps! After all, your users already know and (hopefully) love your brand and apps. 

Using cross-promotion campaigns with these users should get you high conversion and retention rates compared with most other sources of traffic. Let's also not forget that this traffic is 100% free of media source charges.

However, to avoid misuse or overuse of this precious resource of existing active users, it is highly recommended to track these campaigns carefully.

AppsFlyer allows you to track and attribute installs originating from cross promotion campaigns of your existing apps. Afterwards, you can optimize on your cross-promotion traffic to get even better results.


Cross Promotion Tracking is available on AppsFlyer's SDK versions 4.8.0 and above.

How Does it Work?

    1. User is exposed to the cross-promo ad on your app. The ad's creative can be a banner, video or any clickable object.
    2. [optional] SDK sends cross-promo impression for the user.
    3. User clicks on the ad.
    4. The SDK's trackAndOpenStore method tracks the click and "redirects" the user to the app store's page for the promoted app.
    5. After the promoted app is installed and launched, the AppsFlyer dashboard shows the newly acquired user under the media source af_cross_promotion. The app driving the install appears as a site_id of this media source. 



Regular tracked mobile ads activate a URL when clicked. Cross Promotion mobile ads don't have a link, but instead they activate AppsFlyer's SDK trackAndOpenStore method.

Tracking Cross Promotions

Tracking both impressions and clicks of cross promotion campaigns is very useful. It enables you to calculate the impressions to clicks conversion rate, or even impressions to installs conversion rates, and optimize accordingly.


In cross promotion campaigns the impressions to installs conversion rate is actually an affinity score between your apps. The higher is the rate the closer are the apps in terms of attractiveness to your users.

Tracking cross-promotion clicks and impressions is performed by using two separate API calls as described below. Each API call can also be passed a Map of key values, which can be anything that fits your cross promotion tracking use case. In addition, any AppsFlyer tracking parameter can be passed as part of this Map.

With the first launch of the promoted app all the original parameters can be accessed via the SDK's conversion data API, for Android or iOS.

Tracking Cross Promotion Clicks

Use the following code to track the click and launch the app store's app page.

Android iOS Unity - Android Unity - iOS
 /*void trackAndOpenStore(Context context, String promoted_app_id, String campaign, Map<String,String> user_params);*/ 
String campaign = “Cross Promo Campaign”; 
Map<String, String> parameters = new HashMap(); 
parameters.put(“af_sub1”, “val”);
 parameters.put(“custom_param”, “val2”); 
CrossPromotionHelper.trackAndOpenStore(this, "", campaign, parameters);

Tracking Cross Promotion Impressions

To track an impression use the following API call. Make sure to use the promoted App ID as it appears within the AppsFlyer dashboard.

Android iOS Unity
/* void trackCrossPromoteImpression(Context context, String promoted_app_id, String campaign); */
CrossPromotionHelper.trackCrossPromoteImpression(this, "", "<CAMPAIGN_NAME>");

Tracking Cross Promotion with Non-Native Platforms

Currently the Cross-Promotion tracking APIs are available only for native Android and iOS SDKs. However, non-native platforms can perform cross-promotions tracking just as effectively. These include platforms such as Unity, Adobe air, Cordova, Xamarin, React native, Marmalade etc. 

To do this you need to build a tracking link, which is invoked when the user clicks on the cross-promotion ad. The link MUST contain the media source name af_cross_promotion and the site ID of the promoting app. 

Clicks cross-promotion URL format:{PROMOTED APP ID}?pid=af_cross_promotion&

Impressions cross-promotion URL format:{PROMOTED APP ID}?pid=af_cross_promotion&


1. We recommend building a short URL via the Link Management dashboard page. Doing this would enable you to add or change any parameters on the cross-promotion tracking link without changing the app's code.
2. You can use multi-platform link (OneLink) via the Link Management dashboard page in case your code is shared between iOS and Android, as with Unity platform.  

Viewing the Results

Promoted App View

As with any other media source, you can see on your promoted app's dashboard the traffic coming from cross-promotion campaigns:

1. Select the af_cross_promotion media source

2. Group by site ID to compare the traffic from the promoting apps


3. The apps (site IDs) with the best conversion rates have the best affinity with the promoted app, and their users are most likely to install it

Promoting Apps View

While the dashboard of the receiving app enables seeing which apps send the best traffic to it, you may want to see things from the perspective of the contributing apps. This is not possible to see on the promoting apps dashboard, as it shows incoming traffic and the said traffic is outgoing for them. However, Custom dashboards enable watching information from several of your apps in one place, including the cross-promotion traffic.

This is very useful for viewing installs, clicks, impressions and ultimately conversion data rates from several apps promoting any single app. This enables comparing the affinity between each of the promoting apps and the promoted app, and to optimize your cross-promotion campaigns accordingly.

Below is an example Custom Dashboard widget that performs this:


Was this article helpful?
1 out of 2 found this helpful