-
Notifications
You must be signed in to change notification settings - Fork 269
Description
Request:
We would like an event level ReportLoss API.
Background:
As of today, we can access reports through several APIs, and each of them present the following drawbacks:
- reportWin: we only get report if we win the display, and we get the information at component auction level, which makes the field
highestScoringOtherBid
inaccurate - private aggregation: it maximizes the side-by-side (the DSP competes against itself) within a component-level auction
- forDebuggingOnly: data would be sent only for new browsers which is heavily biasing the data, alongside a very low sampling making it unusable to train ML models on
Rationale:
The event level reporting currently allow us to build a reliable bid shading strategy. This is beneficial for both advertisers, as a DSP can better spend their budgets, and publishers, as a loss in precision would likely result in a decrease of the bid levels and impact their revenues.
Proposed solution:
We are suggesting the creation of an event level ReportLoss API, which would provide a subset of the data that we currently have with the ForDebuggingOnly API:
- the bid price
- perBuyerSignals: it will be up to DSP to decide how to use its content
- opportunityId: identifier of the top level auction to solve the cross-SSP side-by-side
The output should not contain any user identifier nor user data nor any interest group identifier, thus should satisfies privacy constraints. We acknowledge that our demand would receive some concerns regarding privacy and technical feasability, thus we propose to:
perform a 5% sampling, seeded on opportunityId, to prevent from sending too many reports, if not sufficient:
- we can imagine a truncated loss report per opportunity version:
- if one DSP is participating through 5 interest groups in a component auction, we receive only the first 3 ordered by decreasing bid price, this has the benefit to hide the number of IG a DSP participates within a single SSP auction
- to send a reportLoss only in the case where reportWin is not sent to prevent from data leaking