New Features
- New adapter: Centro (#556 - @Niksok)
- New adapter: Adblade (#587 - @frazjp65)
- New adapter: Piximedia (#595 - @christopher-allene-piximedia)
- New adapter: GetIntent (#579 - @dmart28)
- Video Support (Beta) - See details below.
- Support for pbjs.bidderSetting "suppressEmptyKeys". (#558 - @snapwich)
- Custom sendStandardTargeting implemented in bidderSettings per bidder (#559 - @snapwich)
- Support for ie9 in ajax helper function (#570 - @snapwich)
- Adding deal support to Openx adapter #596 (#601 - @jaiminpanchal27)
- Add IX Deal Support for IndexExchange adapter (#638 - @indexexchange)
Video Support (Beta)
- Prebid.js now supports video adUnits, defining bidders as video-enabled, and building a master video tag.
- adUnits can support video demand requests by setting
mediaType
tovideo
. When an adUnit is configured to support video, all bidders within that adUnit must be video-enabled as well, as configured inadapters.json
.
const adUnit2 = {
code: topSlotCode,
mediaType: 'video',
sizes: topSlotSizes,
bids: [
{
bidder: 'appnexusAst',
params: {
placementId: 'id',
}
]
};
- Define bidders as video-enabled in
adapters.json
Currently only "appnexusAst" is supported for video. We expect other adapters to start updating their code to support video in the future.
{
"appnexusAst": {
"supportedMediaTypes": ["video"]
}
}
Note that media type banner
is implied for existing adapters.
- Build a master video tag with
pbjs.buildMasterVideoTagFromAdserverTag(adserverTag, options)
. Example usage:
const adserverTag = '<dfp_tag>'; // base ad server tag, see: https://support.google.com/dfp_premium/answer/1068325
const options = {
'adserver': 'dfp',
'code': 'video1' // code that matches the video adUnit declared above
};
// generate URL
const masterTagUrl = pbjs.buildMasterVideoTagFromAdserverTag(adserverTag, options);
// send masterTagUrl to the video player
invokeVideoPlayer(masterTagUrl);
New pbjs.bidderSettings
- Keys with no value can be suppressed from the ad server by setting
suppressEmptyKeys
totrue
. The default for this key isfalse
.
$$PREBID_GLOBAL$$.bidderSettings =
{
standard: {
suppressEmptyKeys: true,
adserverTargeting: [
{
key: "aKeyWithAValue",
val: 42
},
{
key: "aKeyWithAnEmptyValue",
val: ""
}
]
}
};
- Setting
sendStandardTargeting
tofalse
will prevent the standard targeting values from being sent to the ad server. In the example below, only thecustom
key will be sent to the ad server.
$$PREBID_GLOBAL$$.bidderSettings =
{
appnexus: {
alwaysUseBid: true,
sendStandardTargeting: false,
adserverTargeting: [
{
key: "hb_bidder",
val: function (bidResponse) {
return bidResponse.bidderCode;
}
},
{
key: "hb_adid",
val: function (bidResponse) {
return bidResponse.adId;
}
},
{
key: "hb_pb",
val: function (bidResponse) {
return bidResponse.pbHg;
}
},
{
key: "custom",
val: 42
}
]
}
};
New Adapters
Centro
{
bidder: 'centro',
params: {
unit: 28136,
}
}
Adblade
{
bidder: 'adblade',
params: {
partnerId: 39875,
bidfloor: 0.01 // OPTIONAL float bid floor in $ CPM
}
}
Piximedia
{
bidder: 'piximedia',
params: {
siteId: 'PIXIMEDIA',
placementId: 'PREBID'
}
}
GetIntent
{
bidder: 'getintent',
params: {
pid: '7',
tid: 'prebid_test',
}
}
Maintenance
- End2end testing (#571 - @jaiminpanchal27)
- Karma opens debug.html by default (#540 - @protonate)
- Log unsupported ad type only for good bids (#547 - @matthewlane)
- getBidderCodes now loops over adUnits object if passed (#557 - @snapwich)
- Added rubicon adapter unit tests and renamed var to bidderRequest to be more accurate (#576 - @snapwich)
- Set bid response ID to bid request ID for triplelift. (#567 - @nanek)
- Set bid response ID to bid request ID for aardvark. (#568 - @nanek)
- Update Sonobi adapter for: config settings, video, floor, deals, unit tests (#591 - @Studnicky)
- Make jshint errors more obvious. (#603 - @mkendall07)
- Add back legacy DFP example. Update instant load method to mitigate issue #419 - race condition fix. (#569 - @mkendall07)
- Prevent renderAd from overwriting the website DOM document (#607 - @kasparsd)
- Allow bypassing ajax preflights with config options (#630 - @matthewlane)
- Added timeouts to rubicon adapter that consider time-to-start costs (#629 - @snapwich)
Bug Fixes
- Ensure that all deal bid keys are truncated to DFP max length - #578 (#580 - @indexexchange)
- Deal override fix to resolve #618 (#619 - @indexexchange)
- Use var ad instead of incorrect ads in rubicon adapter (#546 - @snapwich)
- Restore url.js and modifications to ajax.js (#551 - @protonate)
- Fixed error in safari (#555 - @dmitriyshashkin)
- Add withCredentials into appnexusAst adapter request. (#573 - @mkendall07)
- Fix(krux): add undefined checks for no bid responses to kruxlink adapter (#584 - @sethyates)
- Callback deleted before calling clearAuction (#636 - @protonate)
- Use
splice
rather thanslice
to remove bids from array (#637 - @protonate) - Modify handling of no-bids in Krux Link adapter (#628 - @jgreens)
- Accept custom timeout (#641 - @protonate). You may see less bids eligible to participate in the auction as a result. We have added
$$PREBID_GLOBAL$$.timeoutBuffer
to mitigate the affect of the hard timeout value. This value can be adjusted up/down for publisher to fine tune results. - Fixed 'pbjs is not defined' error (#640 - @mkendall07)
Removed
- Unused build dependencies (#622 - @matthewlane)