-
Notifications
You must be signed in to change notification settings - Fork 143
Proposal for Viewability in OpenRTB
Sam Tingleff edited this page May 3, 2016
·
13 revisions
Per IAB, a viewable impression requires "a minimum of 50 percent of pixels in view for a minimum of 1 second".
Currently OpenRTB standard doesn’t explicitly address ad viewability.
At the time of bid request, it's unknown if impression will be in view after a second, so there are the following options:
- Provide historic viewability of the placement. Some exchanges already track this and certain 3d party platforms that perform viewability measurements provide an API to such data. Proposal: add a field in bid request that will provide the historic viewability.
- Pass "initial viewability", i.e. if the placement at the time of bid request has a minimum of 50 percent of pixels in view. OpenRTB section 5.4 already describes “Ad Position” (esp. “Above the Fold”, “Below the Fold”), but neither OpenRTB standard nor QAG defines what it means exactly (there is no "50% pixels" criteria). Proposal: a "50% pixels" criteria should be added to these definitions.
Actual viewability can be measured the following ways:
- Without IFRAMEs: by using JavaScript (can be implemented in ad markup)
- With IFRAMEs: by implementing IAB SafeFrame (requires exchange and publishers to support it) or by using 3d parties, who employ various browser tricks to understand if IFRAME is visible (can be implemented in ad markup)
- In apps: can't be obtained directly(?), so the app must explicitly report it
In all cases, the proposal is to:
- Add a flag in Bid Request that tells if exchange supports viewability tracking on this bid
- Add pixels in Bid Response that will be explicitly called by the exchange when impression comes into view
Comparing to OpenRTB 2.3:
- New request object imp.viewability; optional array of viewability objects.
- New request imp.viewability[n].score; float; default undefined; Historic viewability of the placement, value between 0 and 1, -1 reserved for "unknown".
- New request field imp.viewability[n].track; integer; default 0; 1 indicates that the exchange supports viewability tracking on this bid, 0 = otherwise.
- New request field imp.viewability[n].vendor; string; represents the top-level corporate domain (without "www") of the organization responsible for viewability measurement. The goal is to allow for vendor extensibility while ensuring common vendors are represented equivalently across exchanges.
- Changes to banner.pos and video.pos: extend definitions of above fold or below fold to mean "50% or more" for above fold and "less than 50%" for below fold. Also imp.native currently doesn't have this field, so in future major versions its worth promoting pos from banner / video to imp level.
- New response field bid.viewtrack[]; array of strings; Array of viewability tracking URLs, expected to return a 1x1 image or 204 response. These URLs are called by exchange once impression becomes viewable (as per IAB definition).
{
"id": "48a6666792dc1ebfb68f8fb16aaa7bb5e6f0cccf",
"at": 2,
"tmax": 120,
"imp": [
{
"id": "1",
"tagid": "30174",
"viewability": [
{
"score": 0.87,
"vendor": "integralads.com",
"track": 1
},
{
"score": 0.23,
"vendor": "example.com",
"track": 1
}
],
"banner": {
"w": 300,
"h": 250,
"pos": 1,
"battr": [],
"topframe": 1
}
}
],
"site": {
"id": "12345",
"name": "Example Site",
"domain": "example.com",
"cat": [
"IAB1-1",
"IAB1-3"
],
"page": "http://www.example.com/foo?bar=1",
"publisher": {
"id": "67890"
}
},
"device": {
"ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4",
"ip": "192.168.1.10",
"geo": {
"country": "NLD",
"region": "NB",
"type": 2
},
"language": "en",
"js": 1,
"devicetype": 2
},
"user": {
"id": "fe845197532eb8b02a11a1576b12e7957ab7d26f",
"buyeruid": "2761F376-7D7A-472A-8392-0735FF36F74C"
}
}
{
"id": "48a6666792dc1ebfb68f8fb16aaa7bb5e6f0cccf",
"seatbid": [
{
"seat": "731",
"bid": [
{
"price": 2.250013,
"adm": "<script type='javascript' src='http://example.com/dsp/creative?id=12345678&auction=${AUCTION_ID}&price=${AUCTION_PRICE}'></script>",
"adomain": [
"highbidder.com"
],
"crid": "12345678",
"dealid": "XYZ-123-456",
"id": "1",
"impid": "1",
"viewtrack": [
"http://www.example.com/pixel1/inview?id=48a6666792dc1ebfb68f8fb16aaa7bb5e6f0cccf",
"http://www.example.com/pixel2/inview?crid=12345678"
]
}
]
}
]
}
Subject of trust and fraud is outside of scope of this document. DSPs should take additional steps to validate correct use of initial viewability and correct reporting of actual viewability (e.g., doing spot checks or using a 3d party).