WICG / turtledove

TURTLEDOVE
https://wicg.github.io/turtledove/
Other
521 stars 222 forks source link

[Ads Composed of Multiple Pieces] Case of pre-designed ads #684

Open fabienbk opened 1 year ago

fabienbk commented 1 year ago

Section 3.4 explains that ad components are identified by URLs designed to be used through iframe/fenced frames. This design dictates that an ad layout must use frames, because that's the only possible composition mechanism. For ads that are currently dynamically generated, this could work by adapting the generated layout to output iframe where necessary.

However, there exists a huge stock of hand-crafted ads layouts, built by human designers, often featuring products, within elaborate, interactive displays, animations, etc. Here's an example of such an ad.

d56cedf2-6079-44bb-bec7-90e236b4d9b6

These custom layouts usually already use some kind of templating mechanism to plug the product data into the layout at display time, but this is often done in the banner frame directly, using javascript & and no sub-frames at all. Completely discarding these kind of layouts for Fledge would greatly impoverish the offer of the market, increase user fatigue & generally diminish performance of ads.

Question

I was wondering if there was any way to allow fetching JSON data from these ad components urls, instead of plain HTML designed to be loaded in iframes/fencedframes.

The JSON would contains only the "moving parts" of the product : its image, its redirection, title, price, and description.

The ad returned by the render URL would then fetch this data in the top level context, and perform the usual rendering.

That would mean not making them not opaque to the rendering context, yet of course they can still honor K-anonymity without issue, since it's only a change in the technical format of the output. This way i don't think there would be any "side loading" would happen, but correct me if i'm wrong.

michaelkleber commented 1 year ago

If the whole collection of products that you want to show is consistent across lots of different people, then you can keep using your creative as it's built today — its render URL would have to be k-anonymous, and if that works for you, great.

If not, the "Ads Composed of Multiple Pieces" mechanism in Section 3.4 was indeed built to support exactly the kind of use case you are describing: where each individual product is shown to lots of people, but the exact collection of them might be specific to just one person.

I understand that the pictured creative does not use sub-frames today. But you could instead render each of the "cards" as its own child Fenced Frame, by including "its image, its redirection, title, price, and description" (or a unique ID that corresponds to them) in the ad component URL stored in the interest group.

That work really is required to avoid breaking K-anonymity. In the alternate approach you described, where the top-level ad knows all of the products, it would be easy for the top-level ad to generate a unique cross-site identifier for the user (e.g. a hash of all the products being shown).

fabienbk commented 1 year ago

Hi Michael, thanks for your answer!

Yes, I should have been clearer, these ads feature user-based product recommendation. The challenge with these layouts is that there is no real "rendering", (we are just outputting an html layout built by somebody, containing some placeholders for the product fields).

For sure, I can see there would be a way to rethink the tooling/workflow to allow manual placement of fenced frames by the designer (not a small task, but feasible), but the whole existing inventory is pretty much incompatible with product-level turtledove and will cease to function as expected after the rollout.

Ok, understood the concern about generating cross-site identifiers. Just wanted to check there is no room for change here. Thanks again.