Impression Level Data

DT FairBid 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 the expected or exact revenue associated with it. In addition, it contains granular details to allow you to analyze and ultimately, optimize both your ad monetization and user acquisition strategies. 

To enrich and elaborate the insights you can receive, this information can be called by two different APIs relating to different stages at the impression lifetime:

  • Once the ad is shown (OnShow) - starting from DT FairBid 2.3.0
  • Before the ad is shown, once there is a Fill – an ad is available to display (OnAvailable) - starting from DT FairBid 3.11.0
Property Name Type Description Examples
advertiserDomain String (nullable) Advertiser’s domain when available. Used as an identifier for a set of campaigns for the same advertiser
campaignId String (nullable) Campaign ID when available used as an identifier for a specific campaign of a certain advertiser



countryCode String (nullable) Country location of the ad impression(in ISO country code)


creativeId String (nullable) Creative ID when available. Used as an identifier for a specific creative of a certain campaign. This is particularly useful information when a certain creative is found to cause user experience issues 169493819
currency String Currency of the payout USD
demandSource String (nullable) Demand Source name is the name of the buy-side / demand-side entity that purchased the impression. When mediated networks win an impression, you’ll see the mediated network’s name. When a DSP buying through the programmatic marketplace wins the impression, you’ll see the DSP’s name. Examples:

Liftoff RTB
Facebook bidder
*Liftoff Monetize
impressionDepth Integer The amount of impressions in current session for the given Placement Type 1
impressionId String (nullable) A unique identifier for a specific impression 5699232551401720289
netPayout String
Net payout for an impression. The value accuracy is returned in the priceAccuracy field. The value is provided in units returned in the currency field. 0.0155
networkInstanceId String (nullable) The mediated ad network’s original Placement/Zone/Location/Ad Unit ID that you created in their dashboard. For ads shown by the DT Exchange, the networkInstanceId is the Placement ID you created in the DT Console. c38b236a7b613dc2
placementType enum

The Placement Type for the impression corresponds to your choice in the DT Console. Types available:
BANNER (includes MREC ads)

priceAccuracy enum

Accuracy of the netPayout value. May return one of the following:

PROGRAMMATIC - When netPayout is the exact and committed value of the impression, available when programmatic buyers win impressions.

NOTE: Even though the eCPM from Meta Bidder is categorized under programmatic accuracy, it is an estimated value rather than the exact price.

PREDICTED - When DT’s estimation of the impression value is based on historical data from non-programmatic mediated network’s reporting APIs
* UNDISCLOSED - When the demand source does not agree to disclose the payout of every impression - in such cases, the netPayout is ‘0.’

renderingSDK String (nullable) Name of the SDK in charge of rendering the ad DT
renderingSDKVersion String (nullable) Version of the SDK rendering the ad.
NOTE: When AdMob renders an impression, the renderingSDKVersion shows the Google Play Services version
toJsonString String

(Added from version 3.18.0)
A JSON representation of the data serialized to a String.

variantId String (Added from version 3.11.0) Waterfall variant Identifier. When running a multi-test experiment, this ID helps you identify which variant was delivered on the device. 123456

Impression Data Upon Showing the Ad

All ad formats (Interstitial, Rewarded, and Banner) provide you access to the ImpressionData object through their callback APIs:

void OnShow(string placementId, ImpressionData 

void OnShowFailure(string placementId, ImpressionData

The example below showcases how to access these data on an Interstitial integration. The integration for Rewarded and Banners is similar.

Interstitial.SetInterstitialListener(new MyInterstitialListener());

class MyInterstitialListener : InterstitialListener
public void OnShow(string placementId, ImpressionData
string netPayout = impressionData.netPayout;
string currency = impressionData.currency;
int impressionDepth = impressionData.impressionDepth;
ImpressionData.PriceAccuracy priceAccuracy =
Debug.Log($"Placement {placementId} has been shown with a
net payout of
{netPayout} {currency} with accuracy: {priceAccuracy} and
impression depth:

string placementId = "12345";
if (Interstitial.IsAvailable(placementId))

In this example, you can expect the log to appear as:

Placement 12345 has been shown with a net payout of 4.000000 USD 
with accuracy: PREDICTED and impression depth: 1

Impression Data Before Showing the Ad

Starting from SDK 3.11.0, for Interstitials and Rewarded ads, you can also access the same information before showing the ad:

This information is available once you have a fill for that placement. If the placement for which you request the impression data does not have a fill, the API returns null.

Calling this API at different times may result in different values for the impression depth field since impression depth is counted for the ad type, regardless of placement. More information is below.


public void OnAvailable(string placementId) {
  ImpressionData impressionData =



public void OnAvailable(string placementId) {
  ImpressionData impressionData =


Impression Depth

Impression depth represents the amount of impressions in a given session per ad format (Rewarded, Interstitial and Banner).

Impression depth can be directly accessed from each ad format class (access all code snippets here). Alternatively, it can be accessed through the ImpressionLevelData object as shown in the snippets above.

The impression depth for each ad format continues to increase throughout the session as more ads are displayed.

It is reset only when:

  • The session ends (app is killed)
  • SDK considers the session has “timed out”

Session Timeout

Session timeout or “session background timeout” represents the amount of time the user needs to spend with the app in the background before we consider them to be back to user engagement levels similar to a fresh new session. At this point, for all ad formats, the impression depth is reset to 0.

The Session timeout value is 30 minutes by default. 


The example below illustrates how you can access the impressionDepth value for all ad formats (Rewarded, Interstitial and Banner),

int impressionDepth = Banner.GetImpressionDepth();

int impressionDepth = Interstitial.GetImpressionDepth();

int impressionDepth = Rewarded.GetImpressionDepth();

Back to Top ⇧