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
burlfield is only valid from v5.2 onwards.The
burlshould contain the${AUCTION_PRICE}macro.The
${AUCTION_PRICE}macro should be a part of a valid URL.If the
burlfield is given, thenurlfield becomes optional. Both fields are called, unless the Bid Request specifies a s2s notification only by setting theimp.ext.s2s_nurlfield set to1.If the Bid Request sets the
imp.ext.s2s_nurlfield value to1, only theburlfield will be called. Therefore, use theburlfield to pass the win price macro.It is allowed to respond with a non-secure
burlfor secure bid requests.When using the
${AUCTION_PRICE}macro in theburlfield, it may be simultaneously present in either theadmornurlfield, not both. Using${AUCTION_PRICE}in thenurlandadmat the same time is not allowed. If using either of these fields, you should NOT omit the${AUCTION_PRICE}macro in theburlfield.No more than one win price macro can be used in the
admfield, 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_nurlset to1, then only one of either thenurlorburlfields may be used. As it is an s2s call only, if the theburlfield is given, thenurlfield 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
admfield, 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 theadmfield ornurlfield, 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
admfield to the Buyer with a clearing price of zero. If the impression call originates from thenurlfield then BidSwitch responds with a 1x1 pixel.You still have the option of using the
nurlfield to send the impression clearing price as supported in 4.x versions.
Upgrading from 2.x¶
Upgrading Context
The
seatbid.bid.iurlresponse 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 (
nurlfield 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.protocolfield 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 theadmfieldWrap it with the appropriate HTML tag. Examples using the
<iframe>,scriptandimgtags are given below.
- Example 1:
Replacing the
nurlfield withadmand 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_urlfield withadmand 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_urlfield withadmand 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
admfield to the Buyer with a clearing price of zero. If the impression call originates from thenurlfield then BidSwitch responds with a 1x1 pixel.You still have the option of using the
nurlfield 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.