这是indexloc提供的服务,不要输入任何密码
Skip to content

Third Party reporting  #1220

@mdavies-bidswitch

Description

@mdavies-bidswitch

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions