1 of 18

Attribution Reporting API

TPAC 2022

2 of 18

Problem overview

  • Answering: “Why should I purchase ads on the web?”
  • Answering: “Do ads even work?”

Generally speaking, we want to understand the relationship between ads shown / clicked by users and their future behavior on advertiser sites (e.g. making purchases)

Currently this is done with third party cookies and other cross-site identifiers. Is there a more private way?

3 of 18

Other proposals!

Lots of awesome activity in this space, by many major browser vendors

  • Safari: Ships Private Click Measurement (PrivacyCG)
  • Edge: Proposed MaskedLARK + Bucketization (WICG)
  • Firefox: Proposed IPA jointly with Meta (PATCG)
  • Chrome: Origin Trialing Attribution Reporting API (WICG)

We are all working together in the PATCG to see if we can align

4 of 18

Attribution Reporting API Overview

5 of 18

Event-level reports

  • Local noise via randomized response
    • Randomizes the outcome of each event
  • Cross site data (relative to the source event) is coarse grained
    • Report time
    • Number of settable values
  • No server-side dependencies

6 of 18

7 of 18

Summary reports

  • Aggregatable reports from the client are… aggregated in trusted server infrastructure
  • Server adds noise to final output
  • Queries are batches of point queries in a large output domain

8 of 18

9 of 18

10 of 18

Current status

11 of 18

Interesting problem: Permissions policy (& Origin Trials)

  • Ad.com wants to use the API
  • Needs to convince top-level and transient-iframe to set the Permissions Policy
  • Transient iframes come and go in the existing ads ecosystem
  • Massive coordination problem, even with top-level opt-in
    • Extremely difficult to test!

top-level.example

transient-iframe.example

ad.com

Status: Chromium implementation temporarily moving to * default permission for testing

12 of 18

Interesting bug: Service worker interaction

  • ARA doesn’t support fetches from within Service Workers
    • Existing bug (1217757)
  • Fetches delivered by SW getting the initial URL, not the final URL
    • Newly discovered bug (1364447)

Status: Bug bashing

13 of 18

Interesting problem: sensitivity bounds & noise

  • Issue 249
  • Current design bounds L1 sensitivity of a single event’s contribution on-device
  • “Optimal” when reports contribute to a single bucket
  • Non-optimal for lots of buckets with a more sophisticated contribution bound
  • If we can prove that user contributions are “spread across” many buckets, we can use much less noise
  • How to balance the use-cases?

Status: Brainstorming, may require more configuration

Single user contribution

Larger per-bucket noise

L1 bound

L2 bound

Smaller per-bucket noise

Scales with sqrt(num_buckets)

14 of 18

What’s coming

15 of 18

App and web integration

// Registers a source against a native OS attribution API

Attribution-Reporting-Register-OS-Source:

"https://a.test/register-android-source?...";

os-destination=<os destination>; web-destination=<web destination>

  • Event will simply be handled by the OS instead of the browser via a separate ping to the OS-Source

16 of 18

Better debugging support

{

"type": "<report type>", // e.g. "source-destination-limit"

"body": {

"limit": 100, // the browser's limit

"source_event_id": "<source event id in the source registration>",

"source_site": "https://source.example",

"attribution_destination": "https://destination.example"

}

}

17 of 18

Major design dimensions

18 of 18

Server mediated?

PCM: No�Event ARA: No

Agg ARA: Yes

IPA: Yes

Privacy definition of API output

PCM: information theoretic

Event ARA: local DP + information theoretic

Agg ARA: central DP + information theoretic

IPA: central DP

On-device / off-device attribution

PCM: on-device

Event ARA: on-device

Agg ARA: on-device

IPA: off-device

Scope of attribution

PCM: Advertiser / single publisher

ARA: Advertiser / ad network

IPA: Advertiser

Allowed input events (click, view, opportunity)

PCM: Clicks

Event-ARA: Clicks + (Views/Opportunities)

Agg-ARA: Clicks / Views / Opportunities

IPA: Clicks / Views / Opportunities + Offline Events

Time delay?

PCM: 24-48h

Event ARA: 2d1h or 7d1h or N+1h

Agg ARA: 1h

IPA: None

And more :) PATCG editors working on full document