Get personalized optimization tips, understand your account health and set up completion on the improved "My AdMob page".

More about reports

Use impression-level ad revenue

Impression-level ad revenue helps you calculate more precise data on the lifetime value (LTV) of your app users. LTV is an important metric that can help guide your user acquisition and monetization strategy. 

When you enable impression-level ad revenue, AdMob sends back the ad revenue for each ad impression shown on the user's device. You can then use this data in your internal systems or other third-party tools to better understand your users’ activities.

Use the cohort report if you’d like AdMob to aggregate and analyze your LTV data.

How it works

When an ad impression is shown, the Google Mobile Ads SDK sends the revenue value of the ad, the currency, and the level of precision to your app.

Note: USD is the only currency used for impression-level ad revenue.

The following table includes the levels of precision available and what they mean. 

Level of precision What it means

The precise value paid for the ad. This is only available for the AdMob Network and your bidding ad sources. If AdMob cannot provide a precise value for the bidding ad source, the precision will be estimated.

Note: We expect discrepancies between the estimated ad revenues and the actual values to be within a 10% range.


An ad value estimated from aggregated data.

If you’ve entered the ad source credentials for your third-party ad sources in waterfall mediation, AdMob uses an average based on historical data to approximate the value.

Note: We expect discrepancies between the estimated ad revenues and the actual values to be within a 10% range.

Publisher provided

The manual CPM you entered for your waterfall ad source instance in a mediation group.

If you haven’t entered the ad source’s credentials or ad unit mapping information, or AdMob cannot collect enough data to estimate the ad value for the third-party ad source, it will use the manual eCPM you’ve entered.


When there are no sources of data available for AdMob to calculate a revenue value.

This occurs for bidding ad sources for which AdMob provides an estimated revenue value, if there is not enough data to calculate it.

Note: The precision will be unknown for AdMob campaigns and house ads. AdMob returns a value of $0 for those cases.

Get started

To use impression-level ad revenue:

  1. Make sure you’re using the minimum required Google Mobile Ads SDK version:
  2. Turn on the setting for impression-level ad revenue in your AdMob account:
    1. Sign in to your AdMob account at
    2. Click Settings in the sidebar.
    3. Click the Account tab.
    4. In the Account controls section, click the Impression-level ad revenue toggle to turn on this setting.
  3. Implement the paid event handler in your app. Use the instructions for Android, iOS, or Unity.


Answers to some frequently asked questions about impression-level ad revenue. 

Expand all  Collapse all
How does impression-level ad revenue differ from AdMob reports and data from AdMob API?

Impression-level ad revenue is best used for more granular revenue data and for LTV calculation. Consider using impression-level ad revenue if you:

  • Need more granular LTV data
  • Calculate LTV or return on ad spend (ROAS) on your own
  • Use an internal system or third-party tool for data analysis and/or ROAS calculation
  • Have developer resources to implement impression-level ad revenue

Otherwise, you can use the cohort report.

Impression-level ad revenue is supported out of the box by a number of measurement and analytics companies. You can check the list of supported companies for Android, iOS, and Unity. If your company isn’t supported yet, you might be able to pass the impression-level ad revenue data directly to your third-party SDK.
How do I use impression-level ad revenue data?
Impression-level ad revenue provides you with total revenue and impressions. Total revenue is the sum of ad_value from all impression-level ad revenue events (also called paid events in the SDK API).
Based on what you collect from the SDK, you can view this data by ad source, ad unit, ad format, or more. 
Note: To determine which ad source served a specific paid event, use the MediationAdapterClassName() method on any of the ad formats. Learn more about testing with mediation for Android, iOS, and Unity.

The total impressions is the number of LTV pingback events. Make sure to include any events with zero ad_value to prevent underreporting.

Why do I have a discrepancy in the data? 

Some discrepancy is expected with impression-level ad revenue for AdMob and third party networks. Depending on your calculation, the comparison of the impression-level ad revenue data to your AdMob reports or another data source may vary.

Make sure you’re not filtering out any events when collecting impression-level ad revenue data and calculating LTV.

If you’re finding a discrepancy on values with estimated precision, this can be caused by:

  • Floor changes and eCPM fluctuations: Since values with estimated precision are calculated using an average based on historical data, ad unit floor changes or other CPM fluctuations can cause overestimation or underestimation.
  • New ad source instances: If optimization is enabled, AdMob may take up to 5 days to generate data for a new ad source instance. In the meantime, publisher provided precision will be used.

If there's a discrepancy on values with publisher-provided precision, this can be caused by a mismatch between the manual eCPM and the third-party ad unit floor.

If you use manual eCPM in the mediation waterfall, this eCPM value is used to calculate the impression-level ad revenue data. If this eCPM is used for ordering waterfall ad source instances or does not match the third-party ad unit floor, this can cause discrepancy, since the manual eCPM doesn't reflect the actual CPMs the third-party delivers.

You can enter the waterfall ad source credentials so AdMob can estimate the eCPM and reduce discrepancies.

AdMob may apply invalid traffic filtering after the impression has served. In those cases, you might notice discrepancies between what's shown in AdMob reporting and the data that was captured via the impression-level ad revenue data API before the filter was applied.

Can I integrate with a third-party App Attribution Partner (AAP)?
You can check the list of supported companies for Android, iOS, and Unity. If your company isn’t supported yet, you might still be able to pass the impression-level ad revenue data directly to your third-party SDK.
Why do I have ad_value = $0?

If AdMob doesn't have enough data to calculate the revenue for a bidding ad source, it will report a value of $0. It will also report Unknown for the precision level. This can happen if the ad source is an AdMob campaign.

I get null for the ad source from the LTV pingback. Why is this happening?

If you’re getting null for an ad source using our mediation adapter callback, it's likely due to an ad loading error:

  • iOS: Null if no ad was returned
  • Android: Null if the ad failed to load

Was this helpful?

How can we improve it?
Show your support to promote DEI in Gaming by turning intentions into action!

Check out the newly launched Diversity in Gaming website, where you can find video stories and written pledges from global gaming developers. This campaign centers on 3 pillars: diverse teams, diverse games and diverse audiences showing how diversity is not just good for gamers, but for business as well. Show your support by taking the pledge to promote DEI in Gaming and share it on social!

Learn More

Clear search
Close search
Google apps
Main menu