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

Inject VAST impressions even if no impression tag #1967

Open
bretg opened this issue Aug 17, 2021 · 7 comments
Open

Inject VAST impressions even if no impression tag #1967

bretg opened this issue Aug 17, 2021 · 7 comments
Labels

Comments

@bretg
Copy link
Contributor

bretg commented Aug 17, 2021

The most recent Prebid Server Events and Analytics PRD defines the algorithm for injecting VAST impressions as:

Inline VAST - search for . Add PBS Impression tag(s) after existing tag. If no tag is found, it's an unexpected error and this VAST is suspicious. Don't add any PBS Impression tags.

Perhaps not surprisingly, a bidder has been found that doesn't conform to expectations. And it's none other my own company. :-). Though in my defense, it's a recent addition to the family... SpotX creates VAST wrappers that rely on VPAID that do not create tags.

So the updated proposal is:

Inline VAST - search for <Impression>. Add PBS Impression tag(s) after existing tag. If no <impression> tag is found, look for the </Inline> ending tag. Insert the <Impression> tag just before that. If there is neither <impression> nor </Inline>, it's an unexpected error and this VAST is suspicious. Don't add any PBS Impression tags.

Discussing with some internal VAST experts, we believe this should work, but would like to give the community a chance to weigh in.

@SyntaxNode
Copy link
Contributor

@laurb9 Implemented this feature for PBS-Go. Do you have an opinion on this Laurentiu?

@mansinahar
Copy link
Contributor

I checked about this with Xandr's video team and got the following response:

As long as the link in the node is valid AND the receiving end knows what to do with it (meaning collecting and reporting the impression), the node can be added anywhere in an node as long as it is a child node of . This means you cannot stick inside of or any other child node of . must be a direct child of

From the above proposal, I believe we're good here.

It is also important to note that you can also add an node to a node, as a direct child. The node is not limited to the node. So any VAST wrapper can also include one or more nodes. Both and nodes can include multiple nodes. All nodes present in the VAST xml must be reported by the player.

About this, perhaps we need to include looking for the impression tag in the <Wrapper> tag as well?

@vpitts
Copy link

vpitts commented Aug 23, 2021

Hi all - I am part of Xandr's video team who provided the response that Mansi cited above. I wanted to add an additional comment to the above response.

Above, it was mentioned that "SpotX creates VAST wrappers that rely on VPAID that do not create tags". This needn't be a factor that needs to be considered when adding an Impression node as a child to either the Inline node or to the Wrapper node. Per spec, any VPAID creative is required to report an AdImpression event to the player where the VPAID creative is being rendered. This allows the player to report any and all Impression value(s) that have been specified in VAST xml that is external to the VPAID creative.

@bretg
Copy link
Contributor Author

bretg commented Aug 23, 2021

perhaps we need to include looking for the impression tag in the Wrapper tag as well?

It's doing a full scan now. Anywhere it finds <Impression>, it will append it's own imp afterwards. So I think we're covered here.

VPAID creative is required to report an AdImpression event to the player

I'm not familiar with VPAID, but would have to assume SpotX is doing the right thing here. Would we see an AdImpression event in the VAST? I do see this:

<AdParameters>
       <![CDATA[{...
           "tracking":{"beacon":[{"type":"impression","beacon_url": "..."
...

@vpitts
Copy link

vpitts commented Aug 23, 2021

@bretg - AdImpression is the name of one of the events that a VPAID creatives sends to the player. A player that knows how to load and render a VPAID creative knows to look for that event. You will not see AdImpression in the VAST. It is simply an event that triggers the player to report any value that has been specified in one or more Impression nodes in the VAST.

@bretg
Copy link
Contributor Author

bretg commented Sep 17, 2021

Released with PBS-Java 1.71.

@bretg bretg added the PBS-Go label Sep 17, 2021
@stale
Copy link

stale bot commented Jan 8, 2022

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale label Jan 8, 2022
@bretg bretg added pinned and removed stale labels Apr 4, 2022
@SyntaxNode SyntaxNode added Ready For Dev Feature specification is ready to be developed. and removed enhancement pinned labels Sep 7, 2022
@bretg bretg removed the projectboard label Sep 8, 2022
@bretg bretg moved this from Triage to Ready for Dev in Prebid Server Prioritization Oct 7, 2022
@bretg bretg removed the Ready For Dev Feature specification is ready to be developed. label Dec 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: Ready for Dev
Development

No branches or pull requests

4 participants