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

ILRD Data

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

- ‘undisclosed’ if we do not have permission from the ad networks to share the information.

network_placement_id String If impression served by a supported ad network, this includes the ad network’s placement/zone/etc ID

- ‘undisclosed’ if we do not have permission from the ad networks to share the information.

app_version String App Version (introduced in SDK v5.12.0 iOS, Android, Unity)
adgroup_id String Ad Group (line item) ID
adgroup_name String Ad Group (line item) name

- ‘undisclosed’ if we do not have permission from the ad networks to share the information.

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:

FAQ

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

MoPub’s ILRD does not contain timestamp or device ID information for privacy reasons. This data should be fetched client-side.

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

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

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

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

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

To read MoPub’s impression-level revenue data and store it in your system or in Google’s Firebase, refer to these sample implementations:

Why are there null values in the impression data JSON object?

If an impression is not served by any of our supported networks, you can expect network_name and network_placement_id values to be empty. If an impression is served by MoPub Marketplace, you can fetch it using adgroup_type data.

Why is revenue data sometimes null?

For certain Advanced Bidding networks, we do not disclose the revenue information at this time. In those cases, publisher_revenue is null, and the precision field is ‘undisclosed’.

Why are there data discrepancies when I use MoPub’s impression data on Unity?

The Unity SDK versions earlier than v5.9.0 present a problem parsing impression data when an ILRD field has a null value. This has been fixed in v5.9.0. Please make sure to be using Unity SDK v5.9.0 or higher when using ILRD on Unity.

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

MoPub’s impression data is a JSON object blob. To consume data for a specific ad format, check the adunit_format string value as follows:

 @Override
 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
}

How do I send MoPub’s impression data to third-party attribution and analytics providers for further analysis?

Last updated August 24, 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.)