Prebid.js: The highest bid isn't winning

Created on 17 Nov 2018  路  6Comments  路  Source: prebid/Prebid.js

Type of issue

Bug?

Description

The highest bid is not always the bid assigned by pbjs.setTargetingForGPTAsync when enableSendAllBids=false.

Steps to reproduce

Compare pbjs.getBidResponses() to pbjs.getAdserverTargeting(). In our testing with the IX module, we saw ixBidAdapter return two bids for a slot, and the lower dollar amount was assigned.

Expected results

The higher bid is passed to GPT.

Actual results

The lower bid was passed to GPT.

Platform details

Prebid 1.30.0, Chrome.

Other information

Our use of the ixBidAdapter requests bids on every size an ad position can serve. (So one bidder object is added to the unit per size.)

Most helpful comment

After some investigations, we also observed something new (and weird) with the behavior of the pbjs.getAdserverTargeting function.
At the end of the auction process, pbjs.getAdserverTargeting() is sending back the right values. The highest CPM bid is sent to the adserver. As you said @whatisjasongoldstein "the correct ones were being sent to the network request".
Then after the bidWon event and the renderAd(), the pbjs.getAdserverTargeting() function seems to return a new value.

explanation
I think it's a new behavior related to the bid pool logic and bid caching system. The bid has to be deleted after the rendering so the 2nd winning bid is returned by pbjs.getAdserverTargeting().

In my opinion, it's not a bug but a new dynamic behavior.

All 6 comments

I can't 100% confirm, but from our observation that's something we've noticed as well.

This should be fixed!

@whatisjasongoldstein is this only an issue for the IX bid adapter or are you seeing it as a general Prebid issue? Also, when checking pbjs.getAdserverTargeting() did you also compare those values to the request query string params (scp query) in the call to GPT to confirm KV targeting there? Looking to confirm if this is a targeting issue or just an issue of what's contained in getAdserverTargeting

It's not IX specific. After I opened the issue we determined that pbjs.getAdserverTargeting() was returning the wrong value but the correct ones were being sent to the network request. This appears to be a red herring. I'll defer to your judgement on whether it's still a valid bug with pbjs.getAdserverTargeting().

After some investigations, we also observed something new (and weird) with the behavior of the pbjs.getAdserverTargeting function.
At the end of the auction process, pbjs.getAdserverTargeting() is sending back the right values. The highest CPM bid is sent to the adserver. As you said @whatisjasongoldstein "the correct ones were being sent to the network request".
Then after the bidWon event and the renderAd(), the pbjs.getAdserverTargeting() function seems to return a new value.

explanation
I think it's a new behavior related to the bid pool logic and bid caching system. The bid has to be deleted after the rendering so the 2nd winning bid is returned by pbjs.getAdserverTargeting().

In my opinion, it's not a bug but a new dynamic behavior.

That makes sense and is consistent with our testing. Closing.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

mthazin picture mthazin  路  6Comments

eyedar picture eyedar  路  6Comments

aneuway2 picture aneuway2  路  8Comments

mrpbennett picture mrpbennett  路  3Comments

jaiminpanchal27 picture jaiminpanchal27  路  3Comments