Combining Auction Time Info with Private Creative Info in IFrame

Two major challenges in the PS system today include:

These challenges are of course intentional in the design of PS, but make our short-medium term (now till ~2026) adoption more challenging.

One flavor of this is the desire to get publisher side information into the rendering frame. This could include things like:

To be clear this still does not include getting anything from the bidding/scoring process into the rendering frame or reporting functions. That would be useful but is a different issue.

This is challenging in PS because we cannot modify the renderURL that goes into the iframe (the auction framework won't even let it into scoredAd), and given that our client's TLD is not part of adnxs.com, we can't simply pass information from the top level page (pub space code) into the opaque iframe (render space code) due to the new partitioning rules.

Solutions

There are two solutions, involving different server and client side involvement, and also different levels of precision. Both solutions take advantage of the fact that our auction and render origins are the same, or at least both under our control.

The first bullet has the nice property that it only requires server side interaction and requires fewer hoops. However, a challenge is what to do if there are, potentially, multiple auctions on the page vying for cookie space, as that data will not be scoped to the frame. This will be useful in some situations, but if precision matters...

The iframe approach will allow us to better encapsulate variables into a render frame. In other words, let's say in the future we run two private auctions, one with tag T1 and the other T2. Being able to inject the specific tag ID into the render frame allows us to reliably attach that data to notifies or render stylings/configurations.

NO RE ID

While this could be used for re-id, I would strongly argue it would be a violation of the attestation to do so, as it clearly involves using the output of the Fledge auction, which is one of the attested apis.

Using this to join otherwise non PII data may be OK on a case-by-case basis. For rendering, if no data leaks, it should be fine; for reporting more analysis will be needed.

IFrame Walkthrough

  • You can see this page's code, which creates the iframe, here.
  • The iframes code that grabs the data is here.
  • The server side code that generates the html is here.

The below live result is prepared as follows:

  1. This page is https://www.privacy-sandbox-testing-two.com/igs/creatives-and-chips/test.html, so notably in pst-two, and in our ad tech analogy pst-two is the publisher selling ad space.
  2. The page loads an "auction-runner" html document into an iframe from pst-one.com, so pst-one is our SSP.
  3. The pst-two code loads the auction-runner.html with a query param indicating the tag ID.
  4. We join a few IGs in the pst-one.com origin, so in this case pst-one is also the DSP, although that doesn't have to be the case.
  5. Creatives are rendered out of the pst-one.com origin.
  6. When one of the pst-one creatives wins it calls an endpoint that will create some JS that logs the creative ID as well as grabbing the location of the parent iframe, which it can grab b/c it is same-origin with the parent (note not TLD, the middle frame).
  7. Though in this case we only do a console log, this could very well be a notify call, styling with something else injected, etc. You can see this in the console log or in the image below.

Live Result

Make sure you have the attestation over-rides in place.

See console log as well.