The Reporting service contains the operations that you use to submit report requests and poll for their status. The reports provide detailed statistics about Bing Ads accounts, campaigns, and ad groups. The information can help you track finances, measure ad performance, and adjust settings to optimize your budget or campaign. For example, you can use the keyword performance report to see which keywords are performing well and those that are not.
When submitting a report request, you choose the Report Attributes and Performance Statistics to determine the contents of the report. For example, you may want to include impressions, clicks, and click-through rate. The report uses the column names as the column headers. The report includes the columns in the same order that you include them in the
Columns element of the report request. For information about how columns affect data output, see Columns that Group the Data below. For information about restrictions on column combinations in the same report request, see Column Restrictions below.
You will also specify the report parameters that restrict or limit the returned data set. For example, you can set the aggregation level to group the data by day or month; specify the time period of the data to include in the report by using specific dates or predefined date ranges, such as today or the last seven days; specify the scope of the data by identifying the accounts, campaigns, and ad groups to include in the report; and set filter criteria to filter the report data. For information about time periods that you can specify for each aggregation value, see Aggregation and Time below.
For information about how to request and download a report, see Request and Download a Report. When the report completes successfully, you can download the report from the URL that the service returns. The report file is compressed, so you must unzip the file to read the report. There is no limit to the number of reports that the system can store; however, the length of time that the reports are stored is undefined. The service does not check for duplicate report requests.
For information about how the campaign’s time zone affects the time period that you specify, see Time Zones in Reporting below.
For information about when the books are closed for reporting, see Determining When the Books Close below.
The attribute columns that you include in a report affects the values within the statistics columns as well as the number or rows. For example, if you request a summary report that includes only
Clicks, the clicks column will contain the number of clicks on all ads in the account. If you then include the
CampaignId column, the report will contain a row for each unique combination of account and campaign values, and the value in the clicks column is broken down by campaign and account. For more information about each type of available columns, see Report Attributes and Performance Statistics.
TimePeriod attribute is required for most reports, so you should also consider that specifying a more granular aggregation period, for example monthly in the report request's
Aggregation element, would further break down the click data by month. The report will contain a row for each unique combination of account, campaign, and month. For example, if the time period spans three months, the report will include three rows for each account and campaign combination, and the click data will be the total number of times that an ad from that campaign was clicked in that month. The row is included only for months that contain clicks.
For reports that include impression share performance statistics columns you should not include the following attributes in the same report request. Likewise if you include any of the following attribute columns, you should exclude all of the impression share performance statistics columns.
|Attributes||Impression Share Performance Statistics|
In the Bing Ads web application, users are not allowed to select the restricted column combinations. Using the Bing Ads API the report submission will not fail, for example if you include BidMatchType and ImpressionLostToBidPercent; however, the fields returned in the downloaded report will be 0 (zero) in place of any meaningful data.
If you include the
TimePeriod column, the column label in the downloaded report depends on the aggregation level that you specify in the report request. For example, if the aggregation level is Daily, the report uses GregorianDate as the column label. The following are the column labels that the report uses based on the specified aggregation level.
|Aggregation||Downloaded Column Label||Description|
|Daily||GregorianDate||Each row of the report identifies the month, day, and year when the transaction occurred. The report data will be aggregated by each day. The report will include a column named GregorianDate that contains the day formatted as mm/dd/yyyy.|
|DayOfWeek||DayOfWeek||Each row of the report identifies the day of the week when the transaction occurred. The report data will be aggregated by each of the seven days in a week. The report will include a column named DayOfWeek, and the possible values are 1 - 7 where 1 represents Sunday and 7 represents Saturday. If the report time spans multiple weeks, then the performance data across all weeks for a given day of the week will be aggregated in one row. For example if Campaign A has 5 impressions every Monday (day 2) throughout each of the 3 weeks included in the report time range, then the report will include one row with DayOfWeek set to 2 and impressions in that row totaling 15.|
Note: The report will not include a column named GregorianDate. If you want data by date, you can use Daily or Hourly aggregation.
|Each row of the report identifies the hour when the transaction occurred. The report data will be aggregated by each hour of the day. The report will include a column named Hour, and the possible values are 0 - 23. The report will also include a column named GregorianDate that contains the date formatted as mm/dd/yyyy. If the report time spans multiple days, then the performance data for a given hour will be provided separately across multiple rows i.e. the report will include one row for each unique day and hour. For example if Campaign A has 5 impressions during Hour 7 on each of the 3 days included in the report time range, then the report will include three rows each with 5 impressions for Hour 7.|
|HourOfDay||HourOfDay||Each row of the report identifies the hour of the day when the transaction occurred. The report data will be aggregated by each of the 24 hours across all days. The report will include a column named HourOfDay, and the possible values are 0 - 23. If the report time spans multiple days, then the performance data across all days for a given hour will be aggregated in one row. For example if Campaign A has 5 impressions during hour 7 on each of the 3 days included in the report time range, then the report will include one row with impressions for HourOfDay totaling 15.|
|Monthly||MonthStartDate||Each row of the report identifies the month when the transaction occurred. The report data will be aggregated by each month. The report will include a column named MonthStartDate that contains the first day of the month formatted as mm/dd/yyyy.|
|Weekly||WeekStartDate||Each row of the report identifies the week when the transaction occurred. The report data will be aggregated by each week. The report will include a column named WeekStartDate that contains the date of the Sunday for each week formatted as mm/dd/yyyy.|
|Yearly||Year||Each row of the report identifies the year when the transaction occurred. The report data will be aggregated by each year. The report will include a column named Year that contains the year formatted as yyyy.|
For most report requests you must set the
Time elements. The following are the time periods that you can specify for each aggregation value.
|Aggregation Value||Time Periods|
Custom date range
Custom date range
Custom date range
Custom date range
Custom date range
Custom date range
The downloaded report will not include performance data for entities that had zero (0) ad impressions during the specified time period. For example if you specified a time period of last week, and Ad Group #1 has been paused since last month, then the ad group performance report will not include any row for Ad Group #1. You can use the Bulk Service or Campaign Management Service to get all entities in your account, regardless of whether or not they have any associated performance data.
When you create a report request, specify the date range time period based on the time zone of the campaign. If the report request spans multiple campaigns, the report will include the report data in the time zone of each respective campaign (the data is not reported in the local time zone of the user that clicked the data). If the report request spans multiple accounts (for example, an account performance report), the service selects one of the campaigns at random from each of the accounts and uses that campaign's time zone. Because the selection of the campaign time zone is random, you should not rely on the time zone being accurate for these types of reports.
The report data is stored in the time zone of the campaign (taking into account daylight saving time for those time zones that support daylight saving time). For example, if the time zone of the campaign is Pacific Time and a click occurs at noon Eastern Time, the time of the click is recorded as 9:00 AM. If you request a report for the campaign using hourly aggregation, the report data will include a click that occurred at 9:00 AM (the report data is not adjusted based on the local time zone of the user). If your report request specifies multiple campaigns in different time zones, the clicks that occurred in each campaign are summed for each hour relative to their respective time zones.
Note that when a user clicks an ad, it can take up to four hours for the system to process the click and make it available for reporting. If you schedule a report that requires the previous full day of data, you should consider the three-to-four hour rolling window and the time zone of the campaign before making your request. For example, if the time zone of the campaign is set to Pacific Time (UTC-08:00), consider running the report at 5:00 AM Pacific Time (four hours for the rolling window plus a one-hour buffer).
When a user clicks an ad, it can take up to four hours for the system to process the click and make it available for reporting. When all clicks for the previous day have been processed and made available for reporting, this state is referred to as Books Closed. If you schedule a report that requires the previous full day of data, you should consider the three-to-four hour rolling window and the time zone of the campaign before making your request. For time zone related details, see Time Zones in Reporting above.
Data is generally considered complete with books closed after 4 hours. In some exception cases due to invalid traffic, there could be unexpected adjustments that might take a week or more to resolve.
For example, if an advertiser complaint identifies invalid click activity that escaped the automated filtration system, the Traffic Quality and support teams will process a credit to the advertiser’s account, and will partner with internal teams to determine whether they can update automated systems in order to improve detection in the future. For more information, please see Traffic Quality Center Network Protection.
If you request a report that includes campaigns that span multiple time zones, the data is considered complete only after all of the click data is processed for the campaign that has the westernmost time zone. For example, say you request a report that includes Campaign A (which specifies the PST time zone), and Campaign B (which specifies the EST time zone), the data is not complete until all of the click data for Campaign A has processed for the specified time period.
Each report request includes the
ReturnOnlyCompleteData element that you can set to specify whether you want the service to generate the report only if all the data has been processed and is available based on the aggregation, scope, and time period values that you specify. If true, the request fails if the system has not finished processing all the data based on your criteria. However, if false, the request succeeds but the report will contain only the data that the system has finished processing at the time of the request, and there is no indication as to whether the data is complete. The default value is false.