So I've noticed this this morning because our adsense has been disabled temporarily so for once there's a lot of available ad space on my site. What I've noticed is that if I go to my site and browse around, I get bids back from Rubicon/Magnite but no ad at all is filled. Obviously we'd expect if there was a bid that at minimum that ad should show up, and I'm worried this is affecting my fill rates on a larger scale. Some ads definitely do render - we're generating revenue so they must be - but I'm not sure why this would be happening.
Here is my setup using the recommended parallel setup for UAM and prebid:
var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
var gptAdSlots = [];
googletag.cmd.push(function() {
var top = googletag.sizeMapping().addSize([1000,0],[[728,90],]).addSize([768,0],[[728,90],[468,60],]).addSize([468,0],[[468,60],[320,100],[320,50],]).addSize([300,0],[[320,100],[320,50],]).
build();
gptAdSlots[0] = googletag.defineSlot("/pubid/parentadunit/adunit",[[728,90],[468,60],[320,100],[320,50]],"ADUNITLeaderboard").defineSizeMapping(top).
setTargeting("position", ["leaderboard-1"]).
setTargeting("tags", []).addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.pubads().enableAsyncRendering();
googletag.pubads().enableVideoAds();
googletag.pubads().setCentering(true);
googletag.pubads().disableInitialLoad();
googletag.pubads().collapseEmptyDivs();
googletag.enableServices();
});
//load the apstag.js library
!function(a9,a,p,s,t,A,g){if(a[a9])return;function q(c,r){a[a9]._Q.push([c,r])}a[a9]={init:function(){q("i",arguments)},fetchBids:function(){q("f",arguments)},setDisplayBids:function(){},targetingKeys:function(){return[]},_Q:[]};A=p.createElement(s);A.async=!0;A.src=t;g=p.getElementsByTagName(s)[0];g.parentNode.insertBefore(A,g)}("apstag",window,document,"script","//c.amazon-adsystem.com/aax2/apstag.js");
//initialize the apstag.js library on the page to allow bidding
apstag.init({
pubID: pubidhere,
adServer: "googletag",
simplerGPT: true
});
var topsizes = [
[970,250],[728,90],[320,100],[320,50]
];
var adUnits = [{
code: 'ADUNITLeaderboard',
mediaTypes: {
banner: {
sizes: topsizes
}
},
bids: [{
bidder: 'rubicon',
params: {
accountId : ACCOUNTID,
siteId : SITEID,
zoneId : ZONEID,
position : 'atf',
keywords : [],
inventory : {
category : ['Culture'],
}
}
}]
}]
const customConfigObject = {
"buckets": [
{
"precision": 2,
"max": 1,
"increment": 0.01
},
{
"max": 3,
"increment": 0.10
},
{
"max": 10,
"increment": 0.5
},
{
"max": 40,
"increment": 1.00
}
]
}; var pbjs = pbjs || {};
pbjs.que = pbjs.que || [];
pbjs.que.push(function() {
pbjs.setConfig({
rubicon: {singleRequest: true},
sizeConfig: [{
'mediaQuery': '(min-width: 1280px)',
'sizesSupported': [
[970,250],
[728,90],
[160,600],
[300,600],
[300,250],
[1,1]
],
'labels': ['desktop']
}, {
'mediaQuery': '(min-width: 1200px)',
'sizesSupported': [
[970,250],
[728,90],
[300,250],
[160,600],
[1,1]
],
'labels': ['desktop-small']
}, {
'mediaQuery': '(min-width: 1024px) and (max-width: 1279px)',
'sizesSupported': [
[728,90],
[300,250],
[1,1]
],
'labels': ['tablet']
}, {
'mediaQuery': '(min-width: 0px) and (max-width: 1024px)',
'sizesSupported': [
[300,250],
[320,100],
[320,50],
[1,1]
],
'labels': ['phone']
}
],
})});
pbjs.que.push(function() {
pbjs.setConfig({
consentManagement: {
gdpr: {
timeout: 8000 // GDPR timeout 8000ms
},
},
priceGranularity: customConfigObject,
});
pbjs.addAdUnits(adUnits);
});
/** Executes a parallel auction with prebid **/
function executeParallelAuctionAlongsidePrebid() {
var FAILSAFE_TIMEOUT = 3000;
var requestManager = {
adserverRequestSent: false,
aps: false,
prebid: false
};
// when both APS and Prebid have returned, initiate ad request
function biddersBack() {
if (requestManager.aps && requestManager.prebid) {
sendAdserverRequest();
}
return;
}
// sends adserver request
function sendAdserverRequest() {
if (requestManager.adserverRequestSent === true) {
return;
}
requestManager.adserverRequestSent = true;
window.__tcfapi("addEventListener", 2, function(tcData, success) {
if ( ! tcData.gdprApplies ) {
if(!window._initAds) {
window._initAds = true;
googletag.cmd.push(function() {
googletag.pubads().refresh();
});
}
}
if (success && ( tcData.purpose.consents[1] || tcData.eventStatus === "useractioncomplete")) {
if(!window._initAds) {
window._initAds = true;
googletag.cmd.push(function() {
googletag.pubads().refresh();
});
}
}
});
}
// sends bid request to APS and Prebid
function requestHeaderBids() {
googletag.cmd.push(function() {
// APS request
apstag.fetchBids({
timeout: 3000
}, function(bids) {
apstag.setDisplayBids();
requestManager.aps = true; // signals that APS request has completed
biddersBack(); // checks whether both APS and Prebid have returned
});
}
);
// put prebid request here
pbjs.que.push(function() {
pbjs.requestBids({
bidsBackHandler: function() {
googletag.cmd.push(function() {
pbjs.setTargetingForGPTAsync();
requestManager.prebid = true; // signals that Prebid request has completed
biddersBack(); // checks whether both APS and Prebid have returned
})
}
});
});
} // initiate bid request
requestHeaderBids();
// set failsafe timeout
window.setTimeout(function() {
sendAdserverRequest();
}, FAILSAFE_TIMEOUT);
};
executeParallelAuctionAlongsidePrebid();
I've tried going through all the documentation for answers but I've come up with nothing. There's no console errors when I run pbjs_debug on my site, the auction runs as normal but just never fires a 'bid won' for those bids where there's nothing else to fill the slot.
Not sure if I'm missing something painfully obvious here.
I'm using GAM as an adserver and all line items are set up as per the prebid documentation.
Is there some issue with my price config maybe? or is the UAM setup entirely wrong?
I did have gpt lazyloading set up on this before which I thought might be causing the issue, but I am still generating revenue even with lazyloading and removing it didn't seem to work.
Any ideas would be so helpful!