Network device analytics

The Network Device Analytics report enables you to retrieve buy-side and sell-side performance data based on devices where impressions were served. This is especially important for networks working with in-app advertisers who traffic creatives that encourage app installation and who therefore want confirmation that their creatives are targeting devices compatible with their apps. It also helps you answer the following questions:

  • How many impressions have you seen for specific device makes and models?
  • How many impressions have you seen for specific connection types (i.e., Wifi/Static or Carrier-based)?
  • How do certain types of devices perform relative to others (i.e., tablets vs. phones)?
  • How do certain makes and models of devices perform relative to others (i.e., Android vs. Apple)?
  • How do certain types of connections perform relative to others (i.e., Wifi/Static vs. Carrier-based)?

Time frame and time zone

The report_interval field can be set to one of the following:

  • today
  • yesterday
  • last_2_days
  • last_7_days
  • last_14_days
  • last_30_days
  • month_to_date
  • month_to_yesterday

Alternately, the start_date and end_date fields can be set to a range within the last 30 days. However, since hourly data is not available for this report, the start_date and end_date cannot be identical and must be formatted as "YYYY-MM-DD" rather than "YYYY-MM-DD HH:MM:SS". The timezone field in the JSON request can be set only to "UTC", but this is not necessary, as the timezone defaults to "UTC" if not specified.

Data retention period

Data in this report is retained for 428 days.

Dimensions

Column Type Filter? Example Description
month time Yes "2010-02" The month of the auction.
day time Yes "2010-02-01" The day of the auction.
device_make_id int Yes 1 The ID of the device make on which the impression was served. The make is generally the manufacturer of the device (i.e., Apple). To retrieve a complete list of device make IDs and names, use the Device Make Service.
device_make_name string No "4G Systems" The name of the device make on which the impression was served. The make is generally the manufacturer of the device (i.e., Apple).
device_make string No "4G Systems (1)" Deprecated.
device_model_id int Yes 15 The ID of the device model on which the impression was served. The model is generally the specific product (i.e., iPhone). To retrieve a complete list of device model IDs and names, use the Device Make Service.
device_model_name string No "DX650" The name of the device model on which the impression was served. The model is generally the specific product (i.e., IPhone).
device_model string No "DX650 (15)" Deprecated.
device_type string Yes "tablets" The type of device on which the impression was served. Possible values are:
- "desktops & laptops"
- "tablets"
- "mobile phones"
- "tv"
- "game consoles"
- "set top box"
- "media players"
- "other devices"
connection_type string Yes "Carrier-based" The type of internet connection at the time of the impression. Possible values:
- "Carrier-based"
- "Wifi or Static"
operating_system_id int Yes 24 The ID of the operating system of the device.
- Use Operating System Family service to obtain a list of operating system families.
- Use the Operating System Extended service to look up which operating system versions are within a given operating system family.
operating_system_name string Yes "Android 2.3.5 Gingerbread" The name of the operating system of the device.
- Use Operating System Family service to obtain a list of operating system families.
- Use the Operating System Extended service to look up which operating system versions are within a given operating system family.
operating_system_family_id int Yes 2 The ID of the operating system family associated with the device the impression was served on.
- Use Operating System Family service to obtain a list of operating system families.
- Use the Operating System Extended service to look up which operating system versions are within a given operating system family.
operating_system_family_name string Yes "Android" The name of the operating system family associated with the device the impression was served on.
- Use Operating System Family service to obtain a list of operating system families.
- Use the Operating System Extended service to look up which operating system versions are within a given operating system family.
browser_id int Yes The ID of the browser in which the impression was served. To retrieve a complete list of browser IDs and names, use the Browser Service.
browser_name string Yes The ID of the browser in which the impression was served.
browser string Yes Deprecated.
entity_member_id int Yes 123 If imp_type is:
1 (Blank)
2 (PSA)
3 (Default Error)
4 (Default)
6 (Resold)
8 (PSA Resulting from Default Error), the ID of the buying member; otherwise, the ID of the selling member.
buyer_member_id int Yes 123 The ID of the buying member. If the impression was not purchased, this field shows one of the following values:
229 = PSA
0 = Blank
319 = Default
buyer_member_name string No "My Network" The name of the buying member.
buyer_member string No "My Network (123)" Deprecated.
seller_member_id int Yes 456 The ID of the selling member.
seller_member_name string No "That Seller" The name of the selling member.
seller_member string No "That Seller (456)" Deprecated.
buyer_type string Yes "Real Time" The type of media purchased by the buyer member. Possible values: "Real Time" or "Direct".
seller_type string Yes "Real Time" The type of media sold by the seller member. Possible values: "Real Time" or "Direct".
advertiser_id int Yes 789 The ID of the advertiser. If the value is 0, either the impression was purchased by an external buyer or a default or PSA was shown.
advertiser_name string No "Mobile Zombies" The name of the advertiser.
advertiser string No "Mobile Zombies (789)" Deprecated.
advertiser_code string No "MZB1010" The custom code for the advertiser.
insertion_order_id int Yes 321 The ID of the insertion order.
insertion_order_name string No "Mobile Insertion Order" The name of the insertion order.
insertion_order string No "Mobile Insertion Order (321)" Deprecated.
insertion_order_code string No "Mobile Insertion Order Code" The custom code for the insertion order.
line_item_id int Yes 111 The ID of the line item.
line_item_name string No "Mobile Line Item" The name of the line item.
line_item string No "Mobile Line Item (111)" Deprecated.
line_item_code string No "Mobile Line Item Code" The custom code for the line item.
campaign_id int Yes 222 The ID of the campaign.
campaign_name string No "Mobile Campaign" The name of the campaign.
campaign string No "Mobile Campaign (222)" Deprecated.
campaign_code string No "Mobile Campaign Code" The custom code for the campaign.
deal_name string Yes "My New Deal" The name of the deal associated with the transaction for the impression.
split_id int Yes 342 The ID of the split that purchased the impressions in this data set. Splits are only applicable to augmented line items. For any reports that contain campaigns, the split_id (if included) will be null.
split_name string Yes "Mobile split A" The name of the split that purchased the impressions in this data set. Splits are only applicable to augmented line items. For any reports that contain campaigns, the split_name (if included) will be null.
deal_id int Yes 123 The ID of the deal associated with the transaction for the impression.
pixel_id int Yes 3849 The ID of the conversion pixel.
media_type string Yes "Banner" The media type of the creative. Possible values:
- "Banner"
- "Pop"
- "Interstitial"
- "Video"
- "Text"
- "Expandable"
- "Skin"
To retrieve a complete list of media types, use the Media Type Service.
mediatype_id int Yes 1 The ID of the media type of the creative.
size string Yes "728x90" The size of the placement/creative served.
geo_country string Yes "US" The code for the country.
geo_country_name string No "United States" The name of the country.
payment_type string Yes "cpm", "revshare" The type of payment to a broker.
revenue_type string No "CPA" The basis on which the advertiser pays the member.
revenue_type_id int Yes 4 The ID of the revenue type. Possible values:
-1 = No Payment
0 = Flat CPM
1 = Cost Plus CPM
2 = Cost Plus Margin
3 = CPC
4 = CPA
5 = Revshare
6 = Flat Fee
7 = Variable CPM
8 = Estimated CPM
publisher_name string No "AppSite" The name of the publisher.
publisher string Yes "AppSite (123)" The name of the publisher followed by the ID (Xandr format).
publisher_code string No "AS123" The custom code for the publisher.
pub_rule_name string No "Publisher Rule Name" The name of the publisher rule.
pub_rule string No "Publisher Rule Name (555)" The name of the publisher rule followed by the ID (Xandr format).
pub_rule_code string No "AppSitePR123" The custom code for the publisher rule.
bid_type string Yes "Manual" The optimization phase the node was in when it bid for the impression.

Note: The term "give up" is appended to the bid types below if the valuation for that impression falls below the venue's "give up price". Allowed values:
- "Manual": Applies when you are bidding with a CPM goal, whether it's Base, EAP, or ECP.
- "Learn": Applies when you are bidding with optimization (CPA, CPC, or margin) and we do not yet have enough data to bid optimized.
- "Optimized": Applies when you are bidding with optimization (CPA, CPC, or margin) and we have enough data to bid optimized.
- "Unknown": The node was in an unknown optimization phase.
- "Optimized give up"
- "Learn give up"
- "Manual give up"
imp_type_id int Yes 6 The ID for the type of impression. Possible values (associated types in parentheses):
1 ("Blank"): No creative served.
2 ("PSA"): A public service announcement served because there were no valid bids and no default creative was available.
3 ("Default Error"): A default creative served due to a timeout issue.
4 ("Default"): A default creative served because there were no valid bids.
5 ("Kept"): Your advertiser's creative served on your publisher's site.
6 ("Resold"): Your publisher's impression was sold to a third-party buyer.
7 ("RTB"): Your advertiser's creative served on third-party inventory.
8 ("PSA Error"): A public service announcement served due to a timeout issue or lack of a default creative.
9 ("External Impression"): An impression from an impression tracker.
10 ("External Click"): A click from a click tracker.
imp_type string Yes "Resold" The type of impression. For possible values, see imp_type_id.
venue string Yes "Venue Name" The name of the cluster of domain, site, tag, and user country that our optimization system uses to determine bid valuations. A campaign cannot target a venue explicitly.
operating_system_family_id int Yes 2 The ID of the operating system family associated with the device the impression was served on.
- Use Operating System Family service to obtain a list of operating system families.
- Use the Operating System Extended service to look up which operating system versions are within a given operating system family.
operating_system_family_name string Yes "Android" The name of the operating system family associated with the device the impression was served on.
- Use Operating System Family service to obtain a list of operating system families.
Use the Operating System Extended service to look up which operating system versions are within a given operating system family.

Metrics

Column Type Example Formula Description
imps int 2340 imps The total number of impressions (served and resold).
imps_blank int 3 imps_blank The number of impressions served with a blank.
imps_psa int 5 imps_psa The number of impressions that served a PSA.
imps_default_error int 0 imps_default_error The number of impressions that defaulted due to a timeout issue.
imps_default_bidder int 0 imps_default_bidder The number of impressions that defaulted because there were no valid bids.
imps_kept int 0 imps_kept The number of impressions your advertiser purchased from your publisher .
imps_resold int 0 imps_resold The number of impressions your publisher sold to a third party.
imps_rtb int 2332 imps_rtb The number of impressions your advertiser bought from a third party.
clicks int 1 clicks The total number of clicks across all impressions.
click_thru_pct double 1.12359550<br>561797% (clicks / imps) x 100 The rate of clicks to impressions as a percentage.
ctr double 0.00022187
7080097626
clicks / imps The rate of clicks to impressions.
total_convs int 1 total_convs The total number of post-view and post-click conversions.
post_view_convs int 15 post_view_convs The total number of recorded post-view conversions.
post_click_convs int 15 post_click_convs The total number of recorded post-click conversions.
convs_per_mm double 221.877080
097625
(total_convs / imps) x 1,000,000 The number of conversions per million impressions.
convs_rate double 0.00022187
7080097626
total_convs / imps The rate of conversions to impressions.
cost money 16.833378 cost The total amount of media cost for direct publisher and purchased third-party inventory.
cpm money 1.66051685
393258
(cost / imps) x 1000 The media cost per 1000 impressions.
revenue money 25.767257 booked_revenue + reseller_revenue The total revenue booked through direct advertisers (line item) and direct publishers (resold impressions).
booked_revenue money 25.767257 booked_revenue The total revenue booked through direct advertisers (line item).
reseller_revenue money 0 reseller_revenue The total revenue on resold impressions through direct publishers.
total_rpm money 2.60548314
606741
(revenue / imps) x 1000 The revenue per 1000 impressions. This value will be displayed in USD as well as potentially the Buying Currency and Selling Currency (if you've selected those dimensions).
profit money 0.084102 booked_revenue - total_cost Booked revenue minus total cost.
ppm money 0.94496629
2134831
(profit / imps) x 1000 To be deprecated. The profit per 1000 impressions.
total_publisher_rpm money 1.6605168
5393258
(cost / imps) x 1000 The cost per 1000 impressions paid to direct and third-party publishers, including errors.
sold_publisher_rpm double 147.786 (cost / imps) x 1000 ----- no errors The cost per 1000 impressions paid to direct and third-party publishers, not including errors.
sold_network_rpm double 231.888 (revenue / imps) x 1000 ----- no errors The revenue per 1000 impressions that were not errors.
total_cost money 123.45 total_cost = media_cost + data_costs + partner_fees + commissions + serving_fees + publisher_revenue The total amount of costs accrued over the reported period of time. This generally includes two types of costs, budgeted costs (media cost, data cost, partner fees, serving fees, commissions) and publisher revenue if you track publisher payouts on the platform.

Note: We have added logic to prevent double counting third-party fees during the breaking change period.
total_cost_ecpm money 123.45 (total_cost/imps) * 1,000 The total cost per 1,000 imps.
total_cost_ecpc money 123.45 total_cost/clicks The total cost per click.
total_cost_ecpa money 123.45 total_cost/conversions The total cost per conversion.
network_profit money 123.45 (booked_revenue + reseller_revenue) - total_cost The sum of booked revenue and reseller revenue minus total cost.
network_profit_ecpm money 123.45 (network_profit/imps) * 1,000 Network profit per 1,000 imps.
network_profit_ecpc money 123.45 network_profit/clicks Network profit per click.
network_profit_ecpa money 123.45 network_profit/conversions Network profit per conversion.
network_profit_margin money 123.45 network_profit/(booked_revenue + reseller_revenue) Network profit margin.
profit_ecpm money 123.45 ((booked_revenue - total_cost)/imps) * 1,000 Profit per 1,000 imps.
profit_ecpc money 123.45 (booked_revenue - total_cost)/clicks Profit per click.
profit_ecpa money 123.45 (booked_revenue - total_cost)/conversions Profit per conversion.
profit_margin money 123.45 (booked_revenue - total_cost)/booked_revenue Buyer profit margin.
device_type string Tablets,mobile phones This is the type of device being used.
convs_device_make string Apple (26) This is the device that the conversion occurred on. This can be compared against Device Make to determine what device the impression occurred on.
device_make string Apple (26) This is the brand name of the device.
convs_device_type string Tablets, mobile phones This can be compared against Device Type to determine what device the conversion occurred on.
video_skips int 10 The total number of times a user skipped the video. Use this metric for reporting when buying skippable inventory.
video_starts int 11 The total number of times the first segment of the video creative was downloaded and started.
video_25_pcts int 10 The total number of times the video creatives completed 25% of the entire duration.
video_50_pcts int 10 The total number of times the video creatives completed 50% of the entire duration.
video_75_pcts int 10 The total number of times the video creatives completed 75% of the entire duration.
video_completions int 12 The total number of times the video creatives played for the entire duration.
video_served int 10 The total number of video responses served to the player. An ad response occurs when the VAST document (XML) is served in response to a request. An ad response doesn't necessarily indicate a successful impression. For an impression, the first frame of the video must be served.
video_errors int 2 The total number of times a video error occurred.
revenue_per_video_complete money 25.76 The revenue per video completion.
cost_per_video_complete money 22.76 The cost per video completion.
video_completion_rate double 1.12359550561797% (video completions/total impressions) x 100 The ratio of video completions to impressions, expressed as a percentage.
video_start_rate double 1.12359550561797% The percentage of times the first segment of the video creative was downloaded and started.
video_skip_rate double 1.12359550561797% The percentage of times the user opted to skip the video.

Example

Create a JSON formatted report request

The JSON file should include the report_type "network_device_analytics", 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. In this example, we want to see performance data about US impressions for advertiser 1459 for each of the last 14 days. Specifically, for each combination of device make, device model, connection type, and impression type, we want the number of impressions, the number of clicks, the total money spent, the money spent per 1000 impressions, the money paid to us by the advertiser, and the total profit (money earned - money spent).

$ cat network_device_analytics

{
    "report": {
        "report_type": "network_device_analytics",
        "filters": [
            {
                "advertiser_id": 1459
            },
            {
                "geo_country": "US"
            }
        ],
        "columns": [
            "day",
            "connection_type",
            "imp_type",
            "imps",
            "clicks",
            "cost",
            "cpm",
            "booked_revenue",
            "profit"
        ],
        "report_interval": "last_14_days",
        "format": "csv",
    }
}

POST the request to the reporting service

POST the JSON request to get back a Report ID.

$ curl -b cookies -c cookies -X POST -d @network_device_analytics '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 -c cookies 'https://api.appnexus.com/report?id=097f59fc3ab7d02c5d60db42081d9b69'
{
   "response":{
      "status":"OK",
      "report":{
         "name":null,
         "created_on":"2013-02-01 12:19:53",
            "json_request": "{\"report\":{\"report_type\":\"network_device_analytics\",\"filters\":[{\"advertiser_id\":1459},
             {\"geo_country\":\"US\"}],\"columns\":[\"day\",\"device_make_id\",\"device_model_id\",\"connection_type\",
             \"imp_type\",\"imps\",\"clicks\",\"cost\",\"cpm\",\"booked_revenue\",\"profit\"],\"format\":\"csv\"]}}",
         "url": "report-download?id=b97897a7864dd8f34e7457226c7af592"
      },
      "execution_status":"ready"
   }
}

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 -c cookies 'https://api.appnexus.com/report?id=097f59fc3ab7d02c5d60db42081d9b69'
{
   "response":{
      "status":"OK",
      "report":{
         "name":null,
         "created_on":"2013-02-01 12:19:53",
            "json_request": "{\"report\":{\"report_type\":\"network_device_analytics\",\"filters\":[{\"advertiser_id\":1459},
             {\"geo_country\":\"US\"}],\"columns\":[\"day\",\"device_make_id\",\"device_model_id\",\"connection_type\",
             \"imp_type\",\"imps\",\"clicks\",\"cost\",\"cpm\",\"booked_revenue\",\"profit\"],\"format\":\"csv\"]}}",
         "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.

Tip

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 -c cookies 'https://api.appnexus.com/report-download?id=b97897a7864dd8f34e7457226c7af592' > /tmp/network_device_analytics.csv

Note

There is a limit of 100,000 rows per report when you download them as XLSX and Excel file.