Digital Platform API - Engagement Metrics report
The Engagement Metrics report provides information about ad viewability, as well as indicating any problems that might be preventing Xandr from measuring an impression's viewability. This report is only available for Xandr Publisher Adserver customers.
Time frame
All dates and times are given in UTC.
Time ranges
Time ranges define the time period of the data extracted for the report. The following is a complete list of time ranges available for reports. However, all time ranges are not available for every report.
- custom
- current_hour
- last_available_day
- last_hour
- today
- last_24_hours
- last_48_hours
- yesterday
- last_2_days
- last_7_days
- last_7_available_days
- last_14_days
- last_14_available_days
- last_30_days
- last_30_available_days
- last_month
- last_100_days
- last_365_days
- quarter_to_date
- month_to_date
- month_to_yesterday
- lifetime
Intervals
Intervals determine how your data is grouped together into rows in the report response. The following is a complete list of intervals available for reports. However, all intervals are not available for every report.
- Hourly: Data is grouped into rows by the hour.
- Daily: Data is grouped into rows by the day.
- Monthly: Data is grouped into rows by the month.
- Cumulative: Data is grouped together in one figure, covering the entire selected time range.
Note
For more information about how quickly report data is processed, see Availability of Reporting Data.
Dimensions
Column | Type | Filter? | Example | Description |
---|---|---|---|---|
advertiser |
string | no | "Verizon Wireless (789)" |
The advertiser whose creative is served on impression. |
publisher |
string | no | "Publisher XYZ 347967" |
The publisher on whose inventory this impression has occurred. |
placement |
string | no | "FP 728x90 (567)" |
A placement is an open slot on a publisher website where an advertiser creative with matching specifications can serve. |
insertion_order |
string | no | "InsertionOrderABC648359" |
The insertion order under which this impression was purchased. The buy-side hierarchy is Insertion Order > Line Item > Campaign. |
line_item |
string | no | "LineItemDEF947764" |
The line item under which this impression was purchased. The buy-side hierarchy is Line Item > Campaign. |
campaign |
string | no | Campaign |
The campaign which purchased this impression. |
creative |
string | no | "Q1 2010 - 728x90 (554)" |
The creative served for the impression. |
media_type |
string | no | "Banner" , "Pop" , "Interstitial" , "Video" , "Text" , "Expandable" , "Skin" |
The media type associated with the creative that served on this impression. |
impression_type |
string | yes | "External Impression" |
See Impression Types for definitions of the different types of impressions. |
device_type |
string | yes | "Mobile Phones" |
The type of device on which the impression was served. Possible values: - Desktops & Laptops - Tablets - Mobile Phones - TV - Game Consoles - Set Top Box - Media Players - Other Devices |
operating_system_family |
string | yes | "Android" |
The name of the operating system family associated with the device the impression was served on. |
buyer |
string | no | The name of the buyer associate with the impression. | |
seller |
string | no | The name of the seller associated with the impression. | |
minimum_impressions |
int | yes | The minimum number of impressions you'd like to filter by. For example, you may want to see only impressions and unique from members whose volume exceeds 100,000 impressions over the selected time range. |
Metrics
Note
When values of a metric are displayed as percentages in the UI, they will be displayed as decimals when you export the report.
Column | Type | Example | Formula | Description |
---|---|---|---|---|
imps |
int | 75000 |
imps | The total number of impressions (served and resold). |
measurable_imps |
int | 6500 |
The total number of impressions that were measured for viewability. | |
viewed_imps |
int | 1872 |
viewed_impsview_non_measurable_reason | The number of measured impressions that were viewable according to the IAB Viewability definition, which states that an impression is viewable if 50% of the pixels are in view for 1 continuous second. |
viewability_measurement_rate |
double | 45 % |
View Measured Imps / Imps | The percentage of impressions measured for viewability out of the total number of impressions. (View Measured Imps / Imps). |
viewability_rate |
double | 58% |
Viewed Imps / View Measured Imps | The percentage of impressions that were viewable out of the total number of impressions measured for viewability. (Viewed Imps / View Measured Imps). |
in_view_duration |
time | 35 |
not applicable | The average in_view duration (in seconds) measured for which impressions met the IAB Viewability definition. |
not_measured_imps (unsupported_cross-domain_iframe ) |
int | 115 |
not applicable | The number of impressions not measured because the creative cannot be measured because the ad was served in a cross-domain iframe and the browser was not supported. All modern browsers are supported but certain old versions may not be supported. |
not_measured_imps (creative_not_found ) |
int | 85 |
not applicable | The number of impressions not measured because the creative could not be found by the viewability script on the page. For example, this could occur if the div is being replaced or the creative isn't located within five seconds. |
not_measured_imps (script_not_initialized ) |
int | 35 |
not applicable | The number of impressions not measured because the measurement script did not initialize. This could occur for very short sessions when a user leaves a page before the other component (like the OS in mobile apps) can provide feedback on viewability. |
not_measured_imps (no_script_callback ) |
int | 200 |
not applicable | The number of impressions not measured because no callback was received from the measurement script. For example, this could occur if the script hasn't executed. |
not_measured_imps (unsupported_in-app_SDK ) |
int | 175 |
not applicable | The number of impressions not measured because the in-app SDK for the specific inventory is not supported. Please visit the Viewability FAQ to learn about supported in-app SDKs. |
not_measured_imps (unsupported_native_integration ) |
int | 200 |
The number of impressions not measured because the specific type of native inventory is not supported. Please visit the Viewability FAQ to learn about supported native supply. | |
not_measured_imps (unsupported_media_type ) |
int | 135 |
not applicable | The number of impressions not measured because the media type is not supported. Please visit the Viewability FAQ to learn about supported media types. |
not_measured_imps (unsupported_supply_type ) |
int | 120 |
not applicable | The number of impressions not measured because the supply type is not supported. Please visit the Viewability FAQ to learn about supported supply types. |
not_measured_imps (unsupported_impression_type ) |
int | 145 |
not applicable | The number of impressions not measured because the imp type is not supported. Please visit the Viewability FAQ to learn about supported impression types. |
not_measured_imps (unknown ) |
int | 115 |
not applicable | The number of impressions not measured because of an unknown reason. |
not_viewed_imps (creative_not_loaded ) |
int | 125 |
not applicable | The number of impressions not viewed because the creative did not load before the web page was closed. For example, when a user leaves the web page within one second of the creative being loaded. |
not_viewed_imps (not_visible_per_SDK ) |
int | 80 |
not applicable | The number of impressions not viewed because in-app SDK responded with not visible signal. For example, the Open Measurement Software Development Kit (OM SDK) reported the ad as non-viewable. |
not_viewed_imps (hidden_browser ) |
int | 60 |
not applicable | The number of impressions not viewed because either the browser was not in focus, or the browser tab was hidden. |
not_viewed_imps (creative_hidden_by _css/html ) |
int | 125 |
not applicable | The number of impressions not viewed because the creative was explicitly hidden by CSS or HTML on the webpage. For more details, check your ads' recent style changes. |
not_viewed_imps (out_of_viewport ) |
int | 95 |
not applicable | The number of impressions not viewed because the creative was outside the visible area of a webpage on a display device. Ensure that the creative is visible and not at the bottom of the page. |
not_viewed_imps (insufficient_surface_area ) |
int | 100 |
not applicable | The number of impressions not viewed because the surface threshold based on IAB definition was not met. |
not_viewed_imps (insufficient_duration ) |
int | 50 |
not applicable | The number of impressions not viewed because time threshold based on IAB definition was not met. |
not_viewed_imps (unknown ) |
int | 75 |
not applicable | The number of impressions not viewed because of an unknown reason. |
in_view_duration (greater_than_0%_pixels ) |
time | 10 |
not applicable | The average duration (in seconds) for which impressions displaying greater than 0% of the pixels in the creative remained in view. |
in_view_duration (greater_than_25%_pixels ) |
time | 15 |
not applicable | The average duration (in seconds) for which impressions displaying greater than 25% of the pixels in the creative remained in view. |
in_view_duration (greater_than_50%_pixels ) |
time | 35 |
not applicable | The average duration (in seconds) for which impressions displaying greater than 50% of the pixels in the creative remained in view. |
in_view_duration (greater_than_75%_pixels ) |
time | 20 |
not applicable | The average duration (in seconds) for which impressions displaying greater than 75% of the pixels in the creative remained in view. |
in_view_duration (equal_to_100%_pixels ) |
time | 40 |
not applicable | The average duration (in seconds) for which impressions displaying 100% of the pixels in the creative remained in view. |
Example
Create a JSON-formatted report request
The JSON file should include the report_type
of "engagement_metrics_network"
, as well as the columns (dimensions and metrics) and report_interval
that you want to retrieve. You can also filter for specific dimensions, define granularity (year
, month
, day
), and specify the format in which the data should be returned ("csv"
, "excel"
, or "html"
). For a full explanation of fields that can be included in the JSON file, see the Report Service.
$ cat engagement_metrics_network
{
"report":
{
"report_type":"engagement_metrics_network",
"columns":[
"advertiser",
"insertion_order",
"creative",
"device_type",
"imps",
"in_view_duration",
"viewability_rate"
],
"report_interval":"last_7_days",
"format":"csv"
}
}
POST
the request to the reporting service
$ curl -b cookies -X POST -d @engagement_metrics_network 'https://api.appnexus.com/report'
{
"response":{
"status":"OK",
"report_id":"097f59fc3ab7d02c5d60db42081d9b69"
}
}
GET
the report status from the report service
Make a GET
call with the Report ID to retrieve the status of the report. Continue making this GET
call until the execution_status
is "ready"
. Then use the report-download service to save the report data to a file, as described in the next step.
$ curl -b cookies 'https://api.appnexus.com/report?id=097f59fc3ab7d02c5d60db42081d9b69'
{
"response":{
"status":"OK",
"report":{
"name":null,
"created_on":"2010-05-25 19:19:53",
"json_request":"{\"report\":{\"report_type\":\"engagement_metrics_network\",\"columns\":[\"advertiser\",
\"insertion_order\",\"creative\",\"device_type\",\"imps\",\"in_view_duration\",\"viewability_rate\"],
\"report_interval\":\"last_7_days\"}}",
"url": "report-download?id=b97897a7864dd8f34e7457226c7af592"
},
"execution_status":"ready"
}
}
GET
the report data from the report download service
To download the report data to a file, make another GET
call with the Report ID, but this time to the report-download service. You can find the service and Report ID in the url
field of the previous GET
response. When identifying the file that you want to save to, be sure to use the file extension of the "format"
that you specified in your initial POST
.
Note
If an error occurs during download, the response header will include an HTTP error code and message. Use -i
or -v
in your call to expose the response header.
$ curl -b cookies 'https://api.appnexus.com/report-download?id=b97897a7864dd8f34e7457226c7af592' > /tmp/engagement_metrics_network.csv
Note
There is a limit of 100,000 rows per report when you download them as XLSX and Excel file.