-
Notifications
You must be signed in to change notification settings - Fork 269
Description
The original description is outdated, the actual proposal can be found here:#1220 (comment)
Problem Statement:
The current PA API logic doesn't support the middle layer between Sellers and Buyers. So while DSPs and SSPs do receive impression notifications from Chrome, middle-layer technical providers (e.g. BidSwitch) by default don't. It is essential for technical providers to get impression notifications in real-time or close to that to manage budgets and shape traffic.
Proposal
- Provide a new mechanism for ThirdParties enrollment.
- The ThirdParties (or Buyers on behalf of ThirdParties) provide their signals in the ext.3p_ig_signals section of an OpenRTB response as follows:
'ext': {
'3p_ig_signals': {
'https://www.third-party-1.com/': {
'url': 'https://www.third-party-1.com/thirdPartyReport.js',
'data': {
'https://www.example-dsp.com/': 'someDataOfThirdParty1',
'https://www.another-buyer.com/': 'someOtherDataOfThirdParty2',
...
}
}
}
}
It is supposed that ThirdParties put in this section contextual signals, seller origins, and buyers' specific data.
- Support the new key in auction config, e.g. - thirdParties, where Seller could declare ThirdParties based on the ext.3p_ig_signals in OpenRTB response.
- Support the new key in auction config e.g. - perBuyerThirdPartySignals, where Seller could declare what ThirdParties are eligible to get reporting data for a given Buyer and signals for them. This key is based on the ext.3p_ig_signals in the OpenRTB response.
- The seller has to take into account all the ThirdParties data from ext.3p_ig_signals and form the sections thirdParties and perBuyerThirdPartySignals in the auction config as follows:
const AuctionConfig = {
'seller': 'https://www.example-ssp.com/',
'interestGroupBuyers': [
'https://www.example-dsp.com/',
'https://www.another-buyer.com/',
],
'thirdParties':
'https://www.third-party-1.com/': https://www.third-party-1.com/thirdPartyReport.js,
'https://www.third-party-2.com/': 'https://www.third-party-2.com/thirdPartyReport.js',
...
},
'perBuyerThirdPartySignals': {
'https://www.example-dsp.com/': {
'https://www.third-party-1.com/': someDataOfThirdParty1,
'https://www.third-party-2.com/': someDataOfThirdParty2
},
'https://www.another-buyer.com/': {
'https://www.third-party-1.com/': someOtherDataOfThirdParty2
},
...
},
...
};
- Add the logic to execute reportResultsToThirdParty() function from the specific ThirdParty's worklet (thirdPartyReport.js). The function is called at the same time as won Buyer's reportWin. It is called only for those ThirdParties that are defined in perBuyerThirdPartySignals section for this Buyer. The arguments to the function are auctionConfig, browserSignals, and a section of perBuyerThirdPartySignals that is specific for these Buyers and ThirdParties. The purpose of the function is to send reporting data to a ThirdParty.
Example of a reportResultsToThirdParty() function:
reportResultsToThirdParty(auctionConfig, browserSignals, ThirdPartySignals) {
sendReportTo('https://www.third-party-1.com/reporting?bid=${browserSignals.bid}&dsp=${browserSignals.interestGroupOwner}&signals=${thirdPartySignals.signals}');
}
similar request / issue
A similar request for aggregated reporting - #1115
Privacy concerns
Potential issue - auction config could be modified by any script on the publisher's page, which could provide access to auction results for non-trusted third parties.