Request Reporting



To get started with Request Reporting, contact your account manager.

Important To get request metrics in your reports, you must generate your report in the default timezone (UTC)

The Request Reporting feature adds additional columns to your Kevel reports. In addition to impressions, clicks, events, and revenue etc., you can view data from the requests received in the time period.

  • A request is is a single HTTP request to one of Kevel's ad serving engines. This can be placed by ados.js ad tags or from the Decision API. Each request may contain multiple decisions.
  • The ad serving engine makes a decision from the request as to which ad (if any) to return in the response. Every placement sent in the request will receive its own decision, so one request could generate ten decisions if there are ten placements.
  • Candidates are ads that are eligible to serve after the ad serving engine applies targeting filters on the decision.
  • If the engine chooses to serve a candidate, this ad is the selection returned in the response, such as in the JSON response object in the Decision API or in the ados.js response.
  • Blanks are decisions for which no ads are selected.
  • If the impression pixel associated with a selection is hit, an impression is recorded in Kevel reporting.



The "Requests" column currently displays selections and blanks as described above.

The Fill Rate shows you the difference between selections and blanks and how many impressions were counted.

Fill Rate = (Impressions / (Selections + Blanks))

For example, if impressions are recorded on every selection, that site will have a 100% Fill Rate in reporting. If impressions are recorded half the time (or if impressions are recorded 100% of the time but half the decisions are blanks) that site will have a 50% Fill Rate.



You can have multiple decisions associated with the same request (if there are multiple placements) and multiple selections associated with the same decision (such as with multi-winner placements or AdChain decisions).

Request Reporting Columns

The following columns are added when Request Reporting is turned on for your account:

Selection RequestsTotal of Selections and Blanks
Ad Decision Requests (ADRs)Requests multiplied by the number of placements
Valid User Agent Requests(optional) Selections and Blanks that were made with a valid user agent when bot filtering was on.
Invalid User Agent Requests(optional) Selections and Blanks that were made with an invalid user agent when bot filtering was on.
Bot Filtering Disabled Requests(optional) Selections and Blanks that were made when bot filtering was disabled (i.e. it was explicitly set to false on the Request) User agent is thus irrelevant.
RTB Bid Responses(optional) Out of RTB Bid Requests, number of times Kevel received a bid from an RTB partner.
Passback Requests(optional) Number of Selections from flights enabled for passbacks, i.e. the cumulative length of adChains.
RTB Bid Requests(optional) Number of times Kevel sent a bid request to an RTB partner.
RTB Matched Bid Requests(optional) Out of RTB Bid Requests, number of times a user was synced (matched) with an RTB partner.
Fill RateImpressions divided by Selections and Blanks as a percentage.

Running Request Reports

To see request data in a report, you will need to run an Inventory Report. An Inventory Report is a report that:

  • Includes no GroupBys or Filters, OR
  • Groups By or Filters by: Site, Zone, Country, Metro, Region, City, Ad Type, or Keyword*, AND
  • Does not Group By or Filter by: Advertiser, Campaign, Flight, Creative, Priority, Channel, or Device dimensions (Model Name, Brand Name, OS Major/Minor Version, Browser Major/Minor Version and Form Factor)
  • Does not have a specific Time Zone selected.

(Additionally, a report that filters by an RTB ad will also show RTB Request data.)

All performance reports (i.e. reports that Group By or Filter by Advertiser, Campaign, Flight, Priority, Channel, or Device dimensions) will not contain request data.



If you Group By Keyword in an Inventory Report, the report will contain request keywords, i.e. keywords that were present on the request but not necessarily matched to an ad via keyword targeting.

Keyword in Inventory Reports only returns selection request counts, not ADR counts.



If there are more than 5 adTypeIds or zoneIds passed in an ad request, we will only report requests for the the first 5 ad types or zones listed on the request.

When multiple ad type, site or zone values are passed on the request they will be separated onto individual rows in a report. i.e. if a request comes through with 3 sites, the report will contain 3 rows, one for each unique value in the request and a count towards the relevant request metrics. This can lead the ADR counts in custom reports to be larger than the counts found on the Ad Decision Requests reports page.



Impression data loads faster than request data. If you run a report for the current day, you may see impression data without request data. This is normal - re-running the report later will include the requests.