5.x Updating Overview¶
Use the information in the following sections to understand the slight differences between each version of the v5.x protocol.
v5.3¶
Using the burl
Field¶
Display¶
The
burl
field is only valid from v5.2 onwards.The
burl
should contain the${AUCTION_PRICE}
macro.The
${AUCTION_PRICE}
macro should be a part of a valid URL.If the
burl
field is given, thenurl
field becomes optional. Both fields are called, unless the Bid Request specifies a s2s notification only by setting theimp.ext.s2s_nurl
field set to1
.If the Bid Request sets the
imp.ext.s2s_nurl
field value to1
, only theburl
field will be called. Therefore, use theburl
field to pass the win price macro.It is allowed to respond with a non-secure
burl
for secure bid requests.When using the
${AUCTION_PRICE}
macro in theburl
field, it may be simultaneously present in either theadm
ornurl
field, not both. Using${AUCTION_PRICE}
in thenurl
andadm
at the same time is not allowed. If using either of these fields, you should NOT omit the${AUCTION_PRICE}
macro in theburl
field.No more than one win price macro can be used in the
adm
field, otherwise BidSwitch records multiple impression events.
Video/Native¶
Video and Native use the same logic as Display.
If the Bid Request specifies a s2s notification only, using
ext.s2s_nurl
set to1
, then only one of either thenurl
orburl
fields may be used. As it is an s2s call only, if the theburl
field is given, thenurl
field is ignored. Therefore, you should set the${AUCTION_PRICE}
macro in the field that will be called.If the Bid Request does not explicitly set an s2s call, then
nurl
,burl
, or both can be used and both will be called. In this scenario, both fields can contain the${AUCTION_PRICE}
macro.
"burl":"http://adserver.com/winnotice?impid=102&winprice=${AUCTION_PRICE}",
v5.0 and v5.1¶
The main difference between 5.x and previous versions (v2.x and v4.x) is that
it allows the adm
bid response field to contain the win price macro,
${AUCTION_PRICE}
. This simplifies the protocol by removing some extended
fields, making it more compliant with OpenRTB standards, and also letting
Buyers know the clearing price at the time the creative markup is formed by
placing the price macro in the iframe
source URL.
Upgrading to this version from v2.x will also grant users access to features added in v4.x of the protocol such as native, audio, and programmatic TV.
There is a number of usage limitations around the price macro being placed
in the adm
field:
No more than one win price macro can be used in the
adm
field, otherwise BidSwitch records multiple impression events.The
${AUCTION_PRICE}
should be a part of a valid URL.The
${AUCTION_PRICE}
should be present in only one of either theadm
field ornurl
field, never both.
Note
Only one price macro per bid response is allowed. You should not use
it in the adm
and nurl
fields simultaneously.
URL Formatting¶
The price macro must be placed within a valid URL and located in the src
attribute of an HTML tag (e.g. <iframe>
, <script>
or <img>
). Use the
following examples to ensure you use the correct syntax.
# valid URLs
"adm": "<iframe src=\"http://dsp.com/imp?bc=12345aaabbb&price=${AUCTION_PRICE}\"><\/iframe>"
"adm": "<script src=\"http://dsp.com/js_imp?bc=12345aaabbb&price=${AUCTION_PRICE}\"><\/script>
# invalid URL
"adm":"<img src=\"http://cdn.com/img?id=123\" onclick=\"impfn(${AUCTION_PRICE})\"/>"
Server to Server Restriction¶
Including the price macro in the adm
field is not allowed for bid requests
that use server to server impression notification. These are marked with the
ext.s2s_nurl = 1
flag.
For server to server notifications, it is required to provide the win price
macro in the nurl
field, or from v5.2 onwards the burl
field.
Upgrading from 4.x¶
The 5.x protocol is fully compatible with v4.x, so to upgrade you only need
to set the bid response ext.protocol
field to “5.3”
{
"id": "1234567890",
"ext": {
"protocol": "5.3"
},
}
If you are currently using the 4.x protocol, then no other changes are required.
Note
In the case of expired impressions or price errors, BidSwitch forwards impression calls originating from the
adm
field to the Buyer with a clearing price of zero. If the impression call originates from thenurl
field then BidSwitch responds with a 1x1 pixel.You still have the option of using the
nurl
field to send the impression clearing price as supported in 4.x versions.
Upgrading from 2.x¶
Upgrading Context
The
seatbid.bid.iurl
response field is required for banner bids starting from version 4.0, so it has to be supported to migrate properly from 2.x to 5.xIn 2.x, BidSwitch was building the actual ad markup using the parameters provided in the Buyer Bid Response (
nurl
field etc), whereas in 5.x the Buyer is fully responsible for the Ad Markup and BidSwitch keeps its interference to a minimum
Upgrading Steps
To upgrade your implementation to 5.x and start its feature, use the following steps.
Set the bid response
ext.protocol
field to"5.3"
Move the impression/ad serving URL from whichever of the following valid 2.x fields it is currently used in (
nurl
|ext.js_url
|ext.img_url
) to theadm
fieldWrap it with the appropriate HTML tag. Examples using the
<iframe>
,script
andimg
tags are given below.
- Example 1:
Replacing the
nurl
field withadm
and wrapping the impression link with the<iframe>
tag.
Note
If you wrap the the impression URL using an <iframe>
tag, then you
should also define the frame width and height, as in the above example.
This is to ensure better rendering of the ad on the user’s device.
{
"seatbid": {
"bid": {
- "nurl": "http://dsp.com/imp?bc=12345aaabbb&price=${AUCTION_PRICE}"
+ "adm": "<iframe src=\"http://dsp.com/imp?bc=12345aaabbb&price=${AUCTION_PRICE}\ "height=\"300\" width=\"300\"><\/iframe>"
}
},
"ext": {
- "protocol": "2.6"
+ "protocol": "5.3"
}
}
- Example 2:
Replacing the
ext.js_url
field withadm
and wrapping the impression link with the<script>
tag.
{
"seatbid":{
"bid":{
- "ext":{
- "js_url":"http://dsp.com/js_imp?bc=12345aaabbb&price=${AUCTION_PRICE}"
- }
+ "adm": "<script src=\"http://dsp.com/js_imp?bc=12345aaabbb&price=${AUCTION_PRICE}\"><\/script>"
}
}
},
"ext":{
- "protocol": "2.6"
+ "protocol": "5.3"
}
}
- Example 3:
Replacing the
ext.img_url
field withadm
and wrapping the impression link with the<img>
tag.
{
"seatbid":{
"bid":{
- "ext":{
- "img_url":"http://dsp.com/img_imp?bc=12345aaabbb&price=${AUCTION_PRICE}",
- "click_url":"http://dsp.com/click?bc=12345aaabbb"
- }
+ "adm": "<a href=\"http://dsp.com/click?bc=12345aaabbb\">
+ <img src=\"http://dsp.com/img_imp?bc=12345aaabbb&price=${AUCTION_PRICE}\"/><\/a>"
}
},
"ext":{
- "protocol": "2.6"
+ "protocol": "5.3"
}
}
Note
In the case of expired impressions or price errors, BidSwitch forwards impression calls originating from the
adm
field to the Buyer with a clearing price of zero. If the impression call originates from thenurl
field then BidSwitch responds with a 1x1 pixel.You still have the option of using the
nurl
field to send the impression clearing price as supported in 4.x versions.Click tracking is also different from v2.x to v5.x, to learn more about it see the Supplier Click Tracking URL Macro section.