Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multiple Video adUnit requests result in the same identical winner tag (AppNexus module) #2282

Closed
paooolino opened this issue Mar 19, 2018 · 12 comments
Assignees
Labels

Comments

@paooolino
Copy link

Type of issue

Bug?

Description

Consecutive requests issued to prebid.js Video results in the same identical VAST winner tag with AppNexus. The adServer consequently does not compute a lot of valid impressions.
The problem was NOT happening in v.1.0.0 or before. I verified it happens with 1.3.0, 1.4.0, 1.5.0.
The workaround I found consists of changing the videoAdUnit code appending a progressive integer to any new request.

Steps to reproduce

  1. go to: http://sftnetwork.com/prebid-same-tag-proof/index.html
  2. open Chrome developers console
  3. select the 1.5.0 radio button
  4. click "run test" multiple times
  5. see the tag "s=" parameter in console

Test page

http://sftnetwork.com/prebid-same-tag-proof/index.html
workaround: http://sftnetwork.com/prebid-same-tag-proof/index-workaround.html

Expected results

the "s=" parameter should be different for each request.
image

Actual results

the prebid-1.5.0 version results in the same tag with the same "s=" parameter multiple times.
image

Platform details

Windows 10, Chrome 64.
prebid version 1.5.0 (but also tested with 1.3.0, 1.4.0), AppNexus module

Other information

none

@mkendall07
Copy link
Member

@paooolino
thanks for the report. Looks like we need a way to mark the bid as "consumed" during the video workflow. Have you thought about what that API would look like? This didn't happen in < 0.x because we cleared all bids every time a new auction was run.

@paooolino
Copy link
Author

Hello Matt, it's my pleasure.
In my code I remove the adUnit every time and re-add a new one (with the same adUnit.code).
The "consumed" flag should be transparent and an API should not be needed as it is an internal check, or am I wrong?
Or at least, if possible, there should be an API to clear the bids as you did in the previous versions.

@mkendall07
Copy link
Member

well in the standard banner workflow when we set keys we mark the bids as used but that doesn't work great for video because we don't get a callback letting us know the bid won.
I like the idea of a clearing API though. Open to a PR for that.

@paooolino
Copy link
Author

One more thing that's not clear to me. Why does it work if the adunit code is different? When I remove the adunit and add a new one with the same code, it shouldn't be enough?
Thanks for clarifying.

@mkendall07
Copy link
Member

@paooolino
That sounds like another bug :(

I guess that happens because while the adUnit is destroyed, the associated bids are not. So when you add back the adunit with the same code, the bids are associated with it again.

@Caspervw
Copy link
Contributor

Caspervw commented Jun 8, 2018

Hi @mkendall07 , We're currently running into the same issue where we would like to mark a video advertisement as "consumed". We’re using the IMA3 SDK and can string up the “consumed”-call to one of the events fired. Regarding “Have you thought about what that API would look like?”, a global-scoped function to mark an video-advertisement would do.

We can extract the hb_cache_id or hb_adid from the original call to DFP, so something like this:

pbjs.markVideoBidConsumed(<hb_cache_id> OR <hb_adid>);

What do you think?

P.S. We don't know if the video-ad actually played (it might have lost to another campaign). If we want that, then we’ll need something more elaborate. We could get the cache_id during the vast-parsing process (check if a call is made to prebid-cache) or afterwards by swapping out the vast-tag with a vpaid script (player within a player style).

@Caspervw
Copy link
Contributor

@mkendall07 @jaiminpanchal27 So current TL;DR; There needs to be some way to flag a video-bid as used on pages which run multiple videos (ex. Single page applications).

Bid-cache breaking options:

  1. Make a global function a let it be up to the developer to hook it up to their video system (videojs, ima3 etc.).
  2. Mark the bid consumed if it’s send to DFP.
  3. ….

Bid-cache maintaining options:

  1. Create a custom vast-parser that sends a pulse to prebid if the video is retrieved from the cache.
  2. Use a VPAID player within a player style solution.

I think both of these are outside of the current scope of Prebid. I might be able to help the development, but I need to know which solutions are possible and preferred.

@mkendall07
Copy link
Member

@Caspervw Thanks for bringing this back up to our attention. I think your correct that other options are out of scope of prebid. #1 and #2 above sound good to me. Are you able to contribute a solution fro this?

@Caspervw
Copy link
Contributor

@mkendall07 Sure thing, we’re actually already running a test with #1. First result suggests it fixes our issues (poki@36843ac). I’ll read the contribution guide and send a pull-request somewhere in the upcoming days.

@Caspervw
Copy link
Contributor

@mkendall07 Here you go, see if you like it.

@jaiminpanchal27
Copy link
Collaborator

Merged #2777

@spormeon
Copy link

spormeon commented Jun 23, 2020

@Caspervw ( from the info you put on the #5368 ) how do I use this then to just mark the winning outstream bid as used when using bidcache= true and multi boxes bids (banner, native & outstream), if i mark adId , don't i "wipe" banner and native out of bidcache?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants