WICG / turtledove

TURTLEDOVE
https://wicg.github.io/turtledove/
Other
539 stars 238 forks source link

Allowing breakdown of adCost #1092

Open omriariav opened 8 months ago

omriariav commented 8 months ago

Hi,

Regarding the adCost field in generateBid and reportWin as added per this case.

We are at the point of live testing, and when reviewing the charging process, we have contractual and auditing requirements as a public company (SOC, SOC1) to break down the additional fees we are collecting.

As a DSP, Taboola has fixed/dynamic fees we need to collect from the advertiser that impact the eventual ad cost value. These fees also impact the overall payment we pay publishers (as an SSP).

The fees are based on the context, available only when we generate the bid. Due to the trusted environment, we also can't do it post-auction (either from reportWin ->Backend) or by using the data in the TEE.

Currently, the adCost field can accept "8-bit mantissa and 8-bit exponent, with any rounding performed stochastically" (source).

We suggest keeping the value and rounding, but instead of one value, allow us to pass an array of values, where each one will get the same treatment of the current field.

Example:

generateBid(interestGroup, auctionSignals, perBuyerSignals,
    trustedBiddingSignals, browserSignals, directFromSellerSignals) {
  ...
  return {'ad': adObject,
          'adCost': [value1,value2,...,valueN]
          'bid': bidValue,
          'bidCurrency': 'USD',
          'render': {url: renderURL, width: renderWidth, height: renderHeight},
          'adComponents': [{url: adComponent1, width: componentWidth1, height: componentHeight1},
                           {url: adComponent2, width: componentWidth2, height: componentHeight2}, ...],
          'allowComponentAuction': false,
          'modelingSignals': 123};
}

Thank you

michaelkleber commented 8 months ago

Each cost value is an opportunity to send a limited amount of information out of the auction. Allowing a whole list of N of those costs would be enough to send a whole user identifier, which would enable cross-site tracking.

Can you say more about the different values you want to send, e.g. how they are calculated, how they are used, etc?