Admob impression-level ad revenue reporting by SDK

At a glance: The AppsFlyer ad revenue SDK enables the Admob SDK to report ad revenue using impression-level granularity.


Impression-level ad revenue reporting by SDK

Ad revenue reporting options

Ad revenue is reported to AppsFlyer by Admob by either aggregate or impression-level granularity. Impression-level granularity is superior, as revenue is aggregated on the device level in a more precise manner, and then attributed to the original user acquisition (UA) media source. This, in turn, improves the precision of the LTV/ROI data available in the platform. 

Admob is able to provide impression-level data to AppsFlyer by SDK. This document details how to send impression-level ad revenue provided by Admob in the app, to AppsFlyer. 

Reporting ad revenue using the SDK

SDK principles of operation

The Admob SDK sends impression revenue data to the AppsFlyer SDK. An ad revenue event, af_ad_revenue, is generated within the platform. The event is recorded with the revenue attributed to the original UA source.

In the platform, a batch process extracts the attribution for each device, and revenue attribution is performed.

Data display

The af_ad_revenue event is used to identify ad revenue. This event is used throughout the platform, including the dashboard and data delivery tools.

Considerations when migrating from API to SDK

If you currently receive ad revenue by API, from integrated partners that mediate using Admob, you need to disable integration with these partners when you implement the Admob monetization SDK. If you don't, ad revenue attribution may be duplicated. 

If you currently send ad revenue in-app events (without revenue) you can continue sending them or disable them. In any event, they don't impact the allocation of impression-level revenue in the dashboard.

Note: Some time can pass from the time you release the app version containing the ad revenue SDK to the app stores until your app users download the updated version. As such, leave the SDK module dormant and activate it after most of the users have updated the app. When you activate the module:

  • Simultaneously disable the ad revenue integration of partners who mediate through Admob
  • In AppsFlyer, select impression level in the Admob ad revenue tab.

Implementing AppsFlyer ad revenue SDK

Implementing ad revenue SDK with Admob

Ad revenue SDK implementation workflow
Step Action required

Ask your Admob account manager to enable Admob impression-level LTV (iLTV).

2 Verify that you use Admob SDK 8.12.0 or higher and that the version supports iLTV.
3 Enable SDK-level ad revenue in AppsFlyer. Note: This needs to be done for each app individually.
4 Integrate the AppsFlyer ad revenue SDK using the instructions in the following section. The integration for iOS and Android is somewhat different, so make sure you follow the separate instructions.

To switch (migrate) from API ad revenue reporting to SDK ad revenue reporting, see considerations when migrating from API to SDK in this article.

Ad revenue SDK module for developers


Currently, the ad revenue SDK only supports integration with Admob and Mopub.


  • Enable iLTV for your Admob account
  • Use AppsFlyer SDK version 6.4.2+. You can find the latest version here.
  • Integrate Admob SDK version 8.12.0+ into the app:
Android iOS

Import the Android ad revenue SDK

  1. Add the code below to Module-level /app/build.gradle before dependencies:
    repositories { 
  2. Add com.appsflyer:adrevenue:6.4.2 as a dependency:
    dependencies {
        implementation 'com.appsflyer:adrevenue:6.4.2'
  3. Sync the project to retrieve the dependencies.

Initialize the Android ad revenue SDK

The following takes place inside the app global application class.

  • In the app global class, inside the onCreate method, place the following code:
    public class MyApplication extends Application {
        public void onCreate() {
            AppsFlyerAdRevenue.Builder afRevenueBuilder = new AppsFlyerAdRevenue.Builder(Application: this);     
            afRevenueBuilder.adEventListener(new Consumer() {
                public void accept(AppsFlyerAdEvent appsFlyerAdEvent) {
    AppsFlyerAdMobWrapper afAdRevenueGoogle = AppsFlyerAdRevenue.adMobWrapper();
    // Per each ad object (i.e Banner, Interstitial, Native, AppOpen etc)
    ad.setAdListener(new AdListener() {
        public void onAdLoaded() {
            ad.setOnPaidEventListener(adValue ->
                    afAdRevenueGoogle.recordImpression(adView, adValue));
Was this article helpful?