---
metadata:
  - name: generator
    content: Diplodoc Platform v5.57.3
alternate:
  - https://ads.yandex.com/helpcenter/en/easy/integration/unity/advanced-settings/ilrd.md
  - https://ads.yandex.com/helpcenter/ru/easy/integration/unity/advanced-settings/ilrd.md
  - https://ads.yandex.com/helpcenter/zh/easy/integration/unity/advanced-settings/ilrd.md
  - href: en/easy/integration/unity/advanced-settings/ilrd.md
    type: text/markdown
    title: Markdown version
  - href: ../llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://ads.yandex.com/helpcenter/en/llms.txt

# ILRD

With **Impression Level revenue data (ILRD)**, you can track and collect ad data.

#|
||

**Parent class**

|

**Method**

||
||

InterstitialAdEventListener

|

`HandleImpression`

||
||

NativeAdEventListener

|

`HandleImpression`

||
||

RewardedAdEventListener

|

`HandleImpression`

||
||

BannerAdEventListener

|

`HandleImpression`

||
|#

Each of these methods has the `ImpressionData` parameter with a single method, `getRawData`. This method returns a JSON string with ILRD (see the [table below](#data)).

{% note info %}

The `HandleImpression` method is only triggered after the ad impression is counted.

{% endnote %}

```C#
[Serializable]
    public class ImpressionDataModel
    {
    public string ad_unit_id;
    public string adType;
    public string currency;
    public string revenue;
    public string revenueUSD;
    public string precision;
    public NetworkData network;
    }

[Serializable]
    public class NetworkData
    {
    public string name;
    public string ad_unit_id;
    }

    class ExampleBannerAdEventListener : BannerAdEventListener {
      // ...
      private void HandleImpression(object sender, ImpressionData impressionData) =>
        {
        var data = impressionData == null ? "null" : impressionData.rawData;

        try
        {
            var parsedData = Newtonsoft.Json.JsonConvert.DeserializeObject<ImpressionDataModel>(data);

            var adUnitId = parsedData.ad_unit_id;
            var adType = parsedData.adType;
            var currency = parsedData.currency;
            var revenue = parsedData.revenue;
            var revenueUSD = parsedData.revenueUSD;
            var precision = parsedData.precision;
            var networkName = parsedData.network.name;
            var networkAdUnitId = parsedData.network.ad_unit_id;
        }
        catch (Exception ex)
        {
            Debug.LogError($"Error parsing impression data: {ex.Message}");
        }
    }
}
```

#### Available data {#data}

You can parse `rawData` to obtain the following information:

#|
||

**Key**

|

**Type**

|

**Description**

||
||

`ad_unit_id`

|

string

|

A unique ad unit ID.

||
||

`adType`

|

string

|

The type of an ad:

- Inline or sticky banner.

- Interstitial ad.

- Rewarded ad.

- App open ad.

||
||

`currency`

|

string

|

The currency that an ad network uses.

||
||

`revenue`

|

string

|

Revenue from an impression in the ad network currency. The currency specified in the `currency` field is used.

||
||

`revenueUSD`

|

string

|

Revenue from an impression, converted to USD.

||
||

`precision`

|

string

|

The accuracy of the `revenue` value. Acceptable values:

- `publisher_defined`: The value that takes into account the CPM floor from the mediation interface.

- `estimated`: The value based on automatic strategies.

||
||

`network.name`

|

string

|

The name of the ad network that served the impression.

||
||

`network.ad_unit_id`

|

string

|

A unique ad unit ID in the network that served the ad.

||
|#
