WICG / turtledove

TURTLEDOVE
https://wicg.github.io/turtledove/
Other
526 stars 228 forks source link

Impression counting methodology #300

Open anderagakura opened 2 years ago

anderagakura commented 2 years ago

I was diving into the Fledge spec and some spec (Attribution Reporting API, Private Aggregation API explainer...) and I wonder which Impression counting methodology is applied here.

Standard, Begin to render, viewable and so on are methodologies to count an ad impression from standards-setting bodies (such as the MRC, IAB, MMA, etc.). Basically, during the connexion between a SSP and DSP, both agree on the impression counting methodology (today begin to render is recommended). So when an ad impression is counted, all the parties are aligned from the buyer to the last layer which is the seller (adserver / SSP) providing the reporting to the publisher.

Via Fledge, the last layer is the user's device, counts the ad impression and proposes the reporting to the seller and the buyer. But the seller (adtech / SSP) is not aware how the user's device counts the ad impression (Fledge mentions many times reporting on render).

As there are different impression counting methodologies, the fast changes in the industry and probably new ones in the future, according to the device, it would be great to allow the layer (publisher connected to adserver / SSP) before the last one (user's device) to decide/declare/set which impression counting methodology should be used.

For example, the user's device would apply the impression counting methodology according to a keyword ('standard', 'begintorender'...) provided by the seller (adserver / SSP).

JensenPaul commented 2 years ago

I imagine seller and buyer could negotiate an impression counting methodology during the auction (e.g. seller proposes a methodology in auctionSignals or perBuyerSignals, buyer confirms methodology in adMetadata). I imagine the seller and buyer then call registerAdBeacon() with an event type corresponding to the agreed upon methodology (e.g. registerAdBeacon({ 'beginToRender': ...). The ad then calls reportEvent() at the appropriate times to signal when different impression events occur (e.g. window.fence.reportEvent({ 'eventType': 'beginToRender', ...)

anderagakura commented 2 years ago

I think auctionSignals is the right place according to the definition here

As provided by the seller in the call to runAdAuction(). This is the opportunity for the seller to provide information about the page context (ad size, publisher ID, etc), the type of auction (first-price vs second-price), and so on.

To avoid any confusion between a seller and the buyer and enable them to understand each other, a list of eventType (beginToRender, standard, viewable...) has to be set and maintain through the time based on standards-setting bodies (such as the MRC, IAB, MMA, etc.).