Impression Level revenue data (ILRD)

With Impression Level revenue data (ILRD), you can process detailed revenue data. Starting with the Mobile Ads SDK 5.0.0, the SDK provides you with revenue information for each ad impression and information about the advertising network (if mobile mediation is used) that served the ad. This information is provided in real time on the device in the publisher's app. You can handle this data directly or transfer it to a third-party analytics provider.

What data can be obtained

The following data is available to publishers:

Field

Type

Description

ad_unit_id

string

Unique ad unit ID.

adType

string

Ad type:

  • Banner ads
  • Interstitial ads
  • Native ads
  • Rewarded ads

currency

string

Ad network currency.

revenue

string

Revenue per impression in the ad network currency. The currency field value is used.

revenue_USD

string

Revenue per impression converted to USD.

precision

string

Accuracy of the revenue value. Acceptable values:

  • publisher_defined: The value taking into account the CPM floor from the mediation interface.
  • estimated: The value based on auto strategies.

network.name

string

Name of the network that served the ad (for Yandex mediation).

network.ad_unit_id

string

Unique ad unit ID in the network that served the ad (for Yandex mediation).

Enabling ILRD

  1. Integrate Mobile Ads SDK version 5.0.0 or higher by following the instructions (YAN: iOS, Mobile Mediation: iOS).

  2. Implement client-side interfaces/protocols for event tracking.

    When implementing the protocols AdViewDelegate, InterstitialAdDelegate, NativeAdDelegate, and RewardedAdDelegate, use the didTrackImpressionWithData method with the ImpressionData parameter. The didTrackImpressionWithData method is called when an impression is counted. The ImpressionData object has a single property, rawData, which returns a JSON string with ILRD.

      extension ViewController: AdViewDelegate {
      // ...
    
          func adView(_ adView: AdView, didTrackImpressionWith impressionData: ImpressionData?)
              {
                  guard let rawData = impressionData?.rawData else { return }
                  // parsing rawData
    
              }
          // ...
    
      }