Network carrier analytics

The Network Carrier Analytics report enables you to retrieve buy-side and sell-side performance data based on carriers for devices. This is especially helpful for analyzing how carriers affect campaign performance and advertiser payment. Also, in cases where advertisers set up specific landing pages for each carrier, this report helps you identify the carriers that campaigns ran on.

For instructions on requesting and retrieving this report, see the Example below.

Time frame

The report_interval field can be set to one of the following (in UTC timezone):

  • today
  • yesterday
  • last_2_days
  • last_7_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 14 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 retention period for the report is 46 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.
carrier_id int Yes 20 The ID of the carrier for the device on which the impression was served. To retrieve a complete list of carrier IDs and names, use the Carrier Service.
carrier_name string No "Sprint - FR" The name of the carrier for the device on which the impression was served.
carrier string No "Sprint - FR (20)" 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" or "Wifi or Static".
entity_member_id int Yes 123 If imp_type is 1 (Blank), 2 (PSA), 3 (Default Error), 4 (Default), 6 (Resold), or 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.
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 2" 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.
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 "com", "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 string Yes "AppSite (123)" Deprecated.
publisher_code string No "Publisher Code" 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)" Deprecated.
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 that 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". For more information, see What is a Venue? and Give Up Price in the UI documentation.
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 Xandr's' optimization system uses to determine bid valuations. A campaign cannot targeted a venue explicitly.

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.12359550561797% (clicks / imps) x 100 The rate of clicks to impressions as a percentage.
ctr double 0.000221877080097626 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.877080097625 (total_convs / imps) x 1,000,000 The number of conversions per million impressions.
convs_rate double 0.000221877080097626 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.66051685393258 (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.
rpm money 2.60548314606741 (revenue / imps) x 1000 The revenue per 1000 impressions.
profit money 0.084102 booked_revenue - total_cost Booked revenue minus total cost.
ppm money 0.944966292134831 (profit / imps) x 1000 To be deprecated. The profit per 1000 impressions.
total_publisher_rpm money 1.66051685393258 (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.
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 of "network_carrier_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 how campaigns are performing on mobile phones and tablets across three specific carriers. Specifically, for each combination of carrier and device 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_carrier_analytics

{
    "report": {
        "report_type": "network_carrier_analytics",
        "filters": [
            {
                "carrier_id": [
                    345,
                    567,
                    837
                ]
            },
            {
                "device_type": [
                    "mobile phones",
                    "tablets"
                ]
            }
        ],
        "columns": [
            "day",
            "carrier_id",
            "device_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_carrier_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_carrier_analytics\",\"filters\":[{\"advertiser_id\":1459},
             {\"geo_country\":\"US\"}],\"columns\":[\"day\",\"carrier_id\",\"device_make\",\"device_model\",\"connection_type\",
             \"imp_type\",\"imps\",\"clicks\",\"cost\",\"cpm\",\"booked_revenue\",\"profit\"],\"format\":\"csv\"]}}",
         "url": "report-download?id=097f59fc3ab7d02c5d60db42081d9b69"
      },
      "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=097f59fc3ab7d02c5d60db42081d9b69' > /tmp/network_carrier_analytics.csv

Note

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