Impression-Level Revenue Data (ILRD)

Understand ILRD

Impression-level revenue data (ILRD) enables you to process granular data. Starting with MoPub SDK v5.7.0, MoPub provides you with revenue information associated with each impression, as well as information about which demand source was able to fill and show an ad. We provide you the data in real time, on the device, within your publisher app. You then have the flexibility to augment the impression event data with your own proprietary data, and to either process the data directly, or pass it to a third-party analytics provider.

Ingest ILRD and use the resulting analytics to better understand your users’ activities, and to make more informed user acquisition decisions in attributing earned revenue back to your campaigns. Visit our blog on the MoPub site to learn more about using ILRD to optimize your user acquisition strategy.

The ILRD feature must be enabled for the ad responses to include impression revenue data. When the MoPub SDK in your app sends an ad request to our ad server, the MoPub ad server checks to see that ILRD is enabled for that app, and sends back a callback that includes a JSON object containing revenue data details. (If ILRD is not enabled, the JSON object is null.) We provide getter objects to fetch this data for each platform.

Impression-Level Revenue Data FLow


Publishers receive the following data for every ad impression:

  • Revenue data (revenue, currency)
  • Waterfall data: ad unit, ad format, and priority
  • Demand source: Direct-Sold, Network, or Marketplace-served ad
  • Precision level of the data: exact (if resulting price of a real-time auction), estimated (if price is obtained using MoPub’s Auto CPM calculations), publisher_defined (if price is the CPM manually input by the publisher), or undisclosed (if the resulting price is null)
Field Name                                   Datatype Description
adunit_id String Ad unit ID
adunit_name String Ad unit name
adunit_format String Format of the ad unit as defined in the MoPub UI.

- Banner

- Medium Rectangle

- Fullscreen

- Rewarded Video

- Custom
id String A unique ID for each impression
currency String Is always “USD”
publisher_revenue Double MoPub’s best understanding for the likely payout of an impression, this field is determined in one of three ways:

- the resulting price of a real-time auction (in this case, precision = ‘exact’)

- the price obtained by MoPub’s Auto CPM product (in this case, precision = ‘estimated’)

- the price assigned to the line item by the publisher (in this case, precision = ‘publisher_defined’)

- when we do not have permission to share the impression data. This value will be null. (in this case, precision = ‘undisclosed’)

Note: This value is provided in the units specified in the currency field
network_name String If impression served by a supported ad network, this includes the ad network’s name
network_placement_id String If impression served by a supported ad network, this includes the ad network’s placement/zone/etc ID
adgroup_id String Ad Group (line item) ID
adgroup_name String Ad Group (line item) name
adgroup_type String An enumeration of the possible ad group types
adgroup_priority Integer Priority of the line item
country String Country location of the user as resolved by MoPub
precision String The value passed here depends on the publisher_revenue value:

- ‘publisher_defined’ if publisher_revenue is the price assigned to the line item by the publisher

- ‘exact’ if publisher_revenue is the resulting price of a real-time auction

- ‘estimated’ if publisher_revenue is the price obtained by MoPub’s Auto CPM product

- ‘undisclosed’ if we do not have permission from the ad network to share impression-level data

We do not include data fields that can be retrieved from the device itself, or that constitute personally identifiable information. These include:

  • device make
  • device model
  • app version
  • IDFA
  • other identifiers

You can combine the data we send with additional fields, such as IDFA (provided you have the legal right to do so), before processing it. You can then feed this data to your internal BI tools or send it to third-party attribution or analytics vendors for further analysis. MoPub has collaborated with the following following third parties to support this new capability: Adjust, AppsFlyer, Branch, Kochava, Singular, Soomla, and Tenjin.

Enable ILRD

To enable ILRD:

  1. Integrate MoPub SDK v5.7.0 or higher. Refer to the SDK integration instructions:

  2. Contact your MoPub account representative and ask to enable ILRD for your account. Note that this feature is applicable only for MoPub’s full platform publishers.

  3. Integrate listeners in your app to ingest the new data provided by the SDK:


Q: Does ILRD contain any device id or user id to match your impression data with our users?

A: MoPub’s ILRD does not contain timestamp and device id information for privacy reasons. This data should be fetched client-side.

Q: How do I send additional data like IDFA and timestamp along with MoPub ILRD to the attribution partners?

A: Attributions partners already have access to the information like IDFA. You do not need to perform any extra steps to send the IDFA. For timestamp, publisher can gather the system time when capturing impression data and send it.

Q: Is there any MoPub server API where we could periodically fetch ILRD data?

A: MoPub only provides a client-side solution to share the impression level revenue data. MoPub does not store or provide any reporting to this data. So there is no server API available to publishers.

Q: How can I pipe ILRD to my own internal Analytics system or Google’s Firebase ?

A: Please refer the example implementations to read MoPub’s impression level data and store in your system or Google’s firebase

Android iOS Unity

Q: I am seeing null values in impression data JSON object. Why?

A: If an impression is not served by any of the supported networks listed here, then you can expect network_name and network_placement_id values to be empty. Note: If an impression is served by the marketplace, it can be fetched using adgroup_type data

Q: Sometimes I see revenue data as null. Why?

A: For certain Advanced Bidding network, we do not disclose the revenue information as of today. In those cases, publisher_revenue will be null and precision field will be “undisclosed”

Q: I am seeing data discrepancy when using MoPub’s impression data on Unity. Why?

A: We had an issue in the Unity SDK < 5.9.0 with parsing impression data when an ILRD field has a null value. This has been fixed in 5.9.0. Please make sure to be on SDK version 5.9.0 or higher when using ILRD on Unity.

Q. How do I parse MoPub’s impression data to collect ILRD for a specific ad format?

A: MoPub’s impression data is a JSON object blob. If the publisher wants to consume data for a specific ad format, you can do so by checking the adunit_format string value as follows.

 public void onImpression(@NonNull final String adUnitId, @Nullable final ImpressionData impressionData) {

If (impressionData.getAdUnitFormat().equalsIgnoreCase("Banner")) {
// Feed impression data for banner into internal tools or send to third-party analytics
} else if (impressionData.getAdUnitFormat().equalsIgnoreCase("Medium Rectangle")) {
// Feed impression data for Medium Rectangle into internal tools or send to third-party analytics
} else if (impressionData.getAdUnitFormat().equalsIgnoreCase("Fullscreen")) {
// Feed impression data for Fullscreen into internal tools or send to third-party analytics
} else if (impressionData.getAdUnitFormat().equalsIgnoreCase("Rewarded Video")) {
// Feed impression data for Rewarded Video into internal tools or send to third-party analytics
} else if (impressionData.getAdUnitFormat().equalsIgnoreCase("Custom"))
// Feed impression data for Custom into internal tools or send to third-party analytics

Q: How do I send MoPub’s impression data to Adjust?

A: - Register to impression callback as suggested in MoPub documentation

  • You can track ad revenue information with Adjust SDK by invoking the following method: iOS: [Adjust trackAdRevenue:source payload:payload]; Refer iOS integration details

Android: Adjust.trackAdRevenue(source, payload); Refer Android integration details

Unity: Adjust.trackAdRevenue(source, payload); Refer Unity integration details source - string object which indicates the source of ad revenue info. payload - string object which contains ad revenue JSON in string form.

Q: How do I send MoPub’s impression data to Tenjin?

A: Subscribe to MoPub impressions as soon as the app launches. In order to process MoPub’s impression data correctly, the publisher should only be using the tenjin.SubscribeMoPubImpressions() API provided by Tenjin. Ideally this is called as early as possible in the lifecycle of the application, so that Tenjin can receive ILRD events as soon as they are emitted. The minimum Tenjin SDK version required is 1.10.2.

Last updated March 04, 2020

TWITTER, MOPUB, and the Bird logo are trademarks of Twitter, Inc. or its affiliates. All third party logos and trademarks included are the property of their respective owners.

© 2020 MoPub (a division of Twitter, Inc.)