# Impression Level Data

DT Exchange enables you to access detailed information for each impression through the impressions callback APIs. The information includes, for example, which demand source served the ad and its expected or exact revenue.&#x20;

The following table describes Impression Level Data attributes.

| Property Name      | Description                                                                                                                                                                                                                                                                                                                |
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `advertiserDomain` | A unique identifier for a set of campaigns for the same advertiser.                                                                                                                                                                                                                                                        |
| `campaignId`       | A unique identifier that represents a Campaign.                                                                                                                                                                                                                                                                            |
| `creativeId`       | <p>A unique identifier that represents the creative in the bid response.<br>This can be useful when a particular creative causes user experience issues.</p>                                                                                                                                                               |
| `country`          | Identifier of the country of the ad impression (in ISO country code).                                                                                                                                                                                                                                                      |
| `impressionId`     | A unique identifier for a specific impression.                                                                                                                                                                                                                                                                             |
| `demandSource`     | <p>Identifies the demand source name of the buy-side/demand-side entity that purchased the impression:<br></p><ul><li>When mediated networks win an impression, the mediated network's name appears.</li><li>When a DSP buying through the programmatic marketplace wins the impression, the DSP's name appears.</li></ul> |
| `pricing`          | Object includes two properties about the impression's pricing, net payout value, and currency type.                                                                                                                                                                                                                        |
| `Pricing.value`    | The impression's net payout value.                                                                                                                                                                                                                                                                                         |
| `Pricing.currency` | The impression's currency type.                                                                                                                                                                                                                                                                                            |
| `video`            | <p>Object includes two properties about the video: duration and skippable.<br>The object is null for non-video impressions.</p>                                                                                                                                                                                            |
| `Video.skippable`  | An indication of whether the video is skippable or not. Possible values: `true`, `false`.                                                                                                                                                                                                                                  |
| `Video.duration`   | The duration of the video in seconds, for example, 15 seconds.                                                                                                                                                                                                                                                             |

## Receiving Per-Ad Impression Data <a href="#h_01jydrqmq277e0sctsz1x24rkh" id="h_01jydrqmq277e0sctsz1x24rkh"></a>

All unit controllers allow you to access the `ImpressionData` object through their callback APIs, using an `Event Listener` subclass with a suffix of `WithImpressionData`.&#x20;

The example below showcases how you can access these data on a full screen placement integration

### InneractiveAdViewUnitController <a href="#h_01jye40q7mgyzfzb1c3fjv1sz5" id="h_01jye40q7mgyzfzb1c3fjv1sz5"></a>

{% code title="Java" %}

```java
InneractiveAdViewUnitController controller = 
    (InneractiveAdViewUnitController) bannerSpot.getSelectedUnitController();

controller.setEventsListener(
    new InneractiveAdViewEventsListenerWithImpressionData() {
        @Override
        public void onAdImpression(InneractiveAdSpot adSpot, ImpressionData impressionData) {
            Log.v("ImpressionData", impressionData.toString());
        }

        // … all other callbacks and methods
    }
);
```

{% endcode %}

### InneractiveFullscreenUnitController <a href="#h_01jye445d5kmwpsv7vhh6vjbh9" id="h_01jye445d5kmwpsv7vhh6vjbh9"></a>

{% code title="Java" %}

```java
InneractiveFullscreenUnitController fullscreenUnitController = 
    (InneractiveFullscreenUnitController) fullScreenSpot.getSelectedUnitController();

fullscreenUnitController.setEventsListener(
    new InneractiveFullscreenAdEventsListenerWithImpressionData() {
        
        @Override
        public void onAdImpression(InneractiveAdSpot adSpot, ImpressionData impressionData) {    
            Log.v("ImpressionData", impressionData.toString());
        }
        
        // … all other callbacks and methods

    }
);
```

{% endcode %}

## Receiving Impression Data Globally <a href="#h_01jydrqmq2he82mchdd1mhr25w" id="h_01jydrqmq2he82mchdd1mhr25w"></a>

In addition to the per-ad callback, this listener also contains details about the relevant Placement ID (spot ID) and Unit ID.

{% code title="Java" %}

```java
void OnGlobalImpressionDataListener.onImpression(
    String spotId, 
    String unitId, 
    ImpressionData impressionData
);
```

{% endcode %}

{% hint style="warning" %}
The static impression data listener holds a hard reference, which might cause memory leaks if you use it incorrectly.

DT recommends using the relevant `InneractiveAdManager.clearImpressionDataListener()` method when global ad impression data is no longer required.

{% code title="Java" %}

```java
InneractiveAdManager.setImpressionDataListener(new OnGlobalImpressionDataListener() {
    @Override
    public void onImpression(String spotId, String unitId, ImpressionData impressionData) {
        Log.v("impressionStaticData", 
              "spotId: " + spotId + 
              ", unitId: " + unitId + 
              ", impressionData: " + impressionData);
    }
});
```

{% endcode %}
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.digitalturbine.com/dt-exchange/publishers/sdk-configuration/integrating-the-android-sdk/impression-level-data.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
