#1229: WG New Spec: Attribution
Discussions
Log in to see TAG-private discussions.
Discussed
Jun 1, 2026 (See Github)
Lola: I was under the impression that there was no longer attribution.
Brian: I've been looking at this. It's kind of complicated. There's a lot there and a lot of history and a lot of controversy. A lot of pushback on their mailing list. It kind of bifurcates the conversation. One thing I noted in the issue that I don't understand: they have this thing were you have to choose--basically there's a service in the browser that's exposed that will record impressions, basically. You want to say, "they were shown this ad." It records these things locally. Then, a little like the report-only feature in CSP (not right this second, but it will batch and send to a service so it can't be tied to you or a specific time or event). It exposes a collection of URLs that are the service endpoints where the data will ultimately be sent. Thebrowser ships with support, or it has to go get support from somewhere (a third-party service like Mozilla). You have to pick one of those URLs. The obvious choice is to pick the zeroeth one. They allow for fallback options. But then they have a thing where you can provide a URL. I don't understand why. They say if you give a random URL, it won't work; it has to be in a list.. It feels similar to a lot of other things we've tried to standardize in the web platform that have been miserable, like voices in Web Speech. I'm curious about that particular design decision.
Matthew: I can't answer that directly, though I'll definitely look into it.
Jeffrey: The usual reason to do this is that the web service needs to trust one of the services (that's what happens in Federation). I don't know if that applies here. If there's not a "website trust" decision, then that would be appropriate. The browser supports certain servers. The Website can decide, "I trust these bu tI don't trust those". The website may not trust everything that the browser trusts (since the browser is the user's agent).
Brian: It's not the negotiation that I have a prolem with. It's that you have to provide a URL that has to be present in the browser list. Why not tive you back some thing that represents the service opaquley. It says "service URL", but you can only supply whichever one which happens to be present in that browser .All of the things that effect the available voices for web voices apply here, too
Jeffrey: This shows up in payments, too. The payment providers and the underlying contracts. It's also just a string.
Lola: An explainer would have helped with that. We need to tell them to write an explainer for this.
Matthew: I had a different question, more basic. .I'm aware of three proposal for attribution reporting: Googgle's for privacy sandbox, Mozilla and Meta had one (IPA, I believe), and Apple had one which was PAM (private attribution monitoring). Google's has two parts: a batched differential privacy part and a more real-time part (more privacy leakage but more info for advertisers). The others don't have the real-time part--just the batched part. My understanding is that Google's w/o real-time and the other two are very similar, and that this is an attempt to harmonize. I don't see Apple participating here, though, so I don't know where they stand.
Brian: There's a web-standards position open for it. It doesn' thave a position, yet, though. We know that Mozilla (in the sense of the people working on it) are supportive. It'd be a surprise if they changed. I don't know about Apple.
Jeffrey: I think they've been participating, but I can't find a source for that.
Lola: We can ask Marcos in Slac.
Discussed
Jun 8, 2026 (See Github)
Brian: Nothing new from me this week, I made comments last week and I think heather and essan were going to
Matthew: There is a meeting in PATWG tomorrow, I will ask essan if he is willing to attend, people in the states might find it easier to attend - it will be a kind of open house where you can ask questions. I was just wonderin gif the harmonization they were talking about had happened - we don't see people in apple in the spec, and there was no standard position. It is IPA vs PAM and they were merged together - but at least half of this is differential privacy, google has this extre bit - events which is less privacy preserving, and there are Google people in on this. It is promising and seems like maybe some concensus is reached
Lola: If you find something, or learn something else please share it in slack.
Discussed
Jun 22, 2026 (See Github)
Marcos: Will check to see if there is a WebKit position published on this
Discussed
Jun 29, 2026 (See Github)
(Skipped.)
Discussed
Jun 29, 2026 (See Github)
Heather: I looked at this and posted a few questions in brainstorming. Had some about whether I was reading it correctly and if this is turning browsers into advertising data processors, and whether we are OK with that, as it seems like a big leap in terms of what browsers do.
... Also some decisions like making empty allowlists meaning global permissions, which seems inconsistent with the rest of the platform, and general convention, and thus concerning.
Discussed
Jul 6, 2026 (See Github)
Heather: I need to get some quality time with Brian on this.
Discussed
Jul 13, 2026 (See Github)
Heather: I'm unclear on what I'm supposed to review at this point, given we've asked for an explainer.
Brian: I think this is tied into conversations about Global Components. Talked with James Roswell about this at the Meet the TAG event. Two issues arising. One is that this really could use an Explainer. I commented on this; group is taking it into consideration. As Heather said, this is a big change to what you'd expect out of a UA.
Lola: Typically if there's no Explainer, we wait to review until there is one. This is a big spec, would be very helpful to have one, say what the user benefit is, what the impact is, who's involved, etc. If they're going to write one, we should wait.
Brian: Separate Explainer not required by the Process; they say that the first part of the doc is equivalent to the Explaienr, but I think it's not adequate. Some disagreement in the AC as to whether an Explainer is required for a spec that's undergone incubation.
Lola: If there are specific sections (like the Considerations, and Alternatives Considered) that we would not expect in the spec, that are missing, we should ask for them to be included.
Brian: I think I've put this across to them, Explainers aren't just for TAG. Lots of people across the industry will want to know about this. Especiallly for this, an Explainer would be really good. Some people have been able to use Claude to create a starting point for Explainer from the doc that was good. I tried this and gave it to them, and encouraged them to edit it to improve it without spending much time on it.
Matthew: (That's awesome, Brian--to be the change that you want to see in the world.) I don't wnt to derail this conversation too much, but an item I haven't spoken about with anyone is tied in with explainers and also the CRA. Jeffrey was probably way ahead of me on this before he went on leave. Architectural decision records (ADRs) would probably be in-line with the CRA. I'd love ot see a spreadsheet with agenda ideas, but I guess we're get there at some point. It's difficult to collect them in a GitHub issue.
Lola: Yes, we're collecting things for the F2F in a number of different ways, so we'll have to consolidate them at some point.
Luke: I think we need to push back when groups put the spec forward as the explainer. Many people need it for reviewing purposes. We shouldn't all need to burn through water and resources to generate one. Anchor Positioning for CSS was another that could have benefited from this - I'm sure there are many more specs that I would understand a lot better after reading the Explainer. Especially for Attribution. It's doing a specific thing in a specific way, but there are already around six different implementations around the web; this would be an important Alternatives Considerd section.
Lola: Likewise with DID Resolution - it's challenging to review without the Explainer. I think it's fine that you've given them a starting point, Brian, but we shouldn't have to keep doing this. May have been good to speak with Dan Appelquist about this, as IIRC he championed Explainers.
Brian: Yeah, around 2014 or so.
Lola: If there are Explainer sections that are not in the spec, we should ask for those at least. Please do ask.
Brian: Having the generated one is better than not.
Heather: I always assumed I needed both - the Explainer helps me get started, and the spec provides the detail.
Sarven: Some of the reviews I do, I make use of the Explaienr first; on others I dive into the spec first. Sometimes I don't rely on the Explainer as it's not as authorititive as the spec. For one, I sensed the Explainer was machine-generated, and I read the spec, and the issues they had for it helped me understand what the group was up to. This is just for me, nothing general for every person and spec.
Lola: They're not a replacement for a spec, but are good as a primer. Sometimes the Explainer is poorly written and needs work.
Lola: Should we wait for them to create one, or use Brian's generated one?
Brian: For me I think the comments I have are nothing that they wouldn't've heard already. This is a whole new ball of wax - responsibility for UAs - it's unusual in ways that I think are not great. It copies some design mistakes from Web Speech, to me. I don't think on purpose, but has some similarties that are not good. I have reservations about the whole thing that are not just architectural.
Lola: Should put that in a comment. Helps to know what TAG thought at a specific time. Please draft a proposed comment and we can review it.
Matthew: Ehsan's on this one, and I've looked a bit, as well. I think we might have some questions for them, but I need to sync up with Ehsan, first. I might be able to do that before tomorrow's call. I would like to review the comment (and maybe contribute to it) before it goes out.
Brian: I think questions would be a good first step. I think the comments we have are relatively shallow. Most of my questions/thoughts... need to dig more into how I think about some of these more centralised global things that we are putting in the browser. That's why I was reaching out about the Global Components discussion. Not exactly related, but one may inform the other.
Lola: Sounds like two things to me, how these things fit into the architecture of the web, however this isn't the first time when we've been in that kind of situation. I wouldn't hold off on commenting on this review until we've had that bigger discussion.
Heather: +1. I want to have that Global Components conversation because I don't see the thread that you do, Brian, so I'm interested in that. That's probably an hour or two of our f2f but I don't think this review can wait that long. Happy to push back with the questions I have, and requesting an Explainer before we dive in.
Brian: Sounds good.
Discussed
Jul 20, 2026 (See Github)
Lola: This was discussed in the Privacy Working Group last week, and there was a lot of discussion, actually. The propoonents of the proposal were also in the call.
Ehsan: They have not released the minutes as of one hour ago.
Lola: The overall vibe is not positive in terms of support from the Privacy Working Group. Quite a few folks spoke out against it for various reasons (including me, not as a TAG representative).
Luke: Were most of the objections a more philosophical? "We don't want this capability on the web?" Or was it about the implementation?
Lola: It was a mixture. There was a revieew of the specification which arrived via e-mail. That was more philosophical ("this is technically a good specification, but I object bringing it to the web"). Then there was a contingent that objected to standardizing industry practices if those practices are not beneficial to the user. I think that there is some techincal critique, but that there is also philosophical objection. It went on so long that we had to table it. The call was charged because we also talked about WebMCP. In both cases, they suggested that they could have a separate session with TAG.
Brian: Martin is one of the people who worked on the spec, and he was on TAG. It seems like he must have thought about users. It does feel like, in a sense, they are doing what they can to protect privacy (versus the status quo). It is better for users and worse along the business-practices lines. I'd like to read the conversation, but a thing that was recently brought up is that it is poorly-named.
Lola: Martin wasn't present on that call, for what its worth.
Lola: I raised a question that Heather had about the allow-list. That was what they said they will let the browsers handle. They don't want to dictate the UI. I said that the allow-list isn't about the UI. If there is a star in the allow-list, what happens to the actual permissions (not the permission box, but the wiring underneath it). The minutes are very paraphrased, so you might not get the nuance fo the meeting.
Ehsan: the core of my concern is that architecturally on paper, it looks okay, and the algorithms are well-established by credible cryptographers. I don't have any problem with teh core foundation. The devil is in the details. There are arbitrarily/loosely defined etails that leave a lot to the user-agents, and they can be very important in this matter. At the end of the day, we want someting that preserves privacy an that works well. I understan that there are a lot of frustrations around the model of advertising, but at the end of the day, the status quo is different from what TAG is advocating. We need to leave some room for innovations without blocking the whole thing. I understand there are frustrations, but I think it's an improvement over the status quo. That's a summary of my upcoming comment in the private brain storm.
Lola: I agree that I don't think TAG shouldn't prevent innovation, and I think that's something wihtin the W3C that various groups are wrestling with (not just the TAG). However, there is definitely an attritude of standardizing industry practice, and I don't think that's the right move, either. "The industry already does this, anyway, so we might as well, too." The industry does what it wants, often at the disadvantage of web users. That's what the TAG exists to guard against, after all. I think we need to think about the opportunity for abuse. Within the specification of third-party cookies, there is a direct call-out not to use it for tracking, yet that is still the primary use-case for third-party cookies. It falls on us to not only ask, "Does this improve the status quo" but also "is it beneficial for users?"
(Ending meeting here for lack of time)
Discussed
Aug 10, 2026 (See Github)
skip
Discussed
Aug 17, 2026 (See Github)
Needs to decide on a resolution label
Lola: Discussed this yesterday, is "satisfied with concerns" correct?
Ehsan: I agree. How is the review communicated to the proponents? Wanted to ask for the strategy first.
Lola: They are going to the Privacy WG call today, after an email thread.
Ehsan: Will read my comment again, if specific questions come up, I will let you know in Slack.
Discussed
Aug 17, 2026 (See Github)
Heather: This looks good. Waiting for Ehsan to incorporate Brian's feedback and then post.
Lola: Is this a closing comment? What is the resolution? Need to decide that before the response is posted. Will discuss on the Eurasia call with Ehsan.
<!-- Reviews that have been pending external action for at least 6 months --> Comment by @bkardell Aug 26, 2026 (See Github)
Thank you for bringing the Attribution specification to the TAG.
The explanatory material in the specification is useful, but in order to conduct a good review, we do feel that a complete Explainer covering the broader design context, alternatives considered, trust model, user-agent responsibilities, interoperability expectations, and user benefit would have been/would still be helpful. We also believe this would aid others as well (in wide review, for example). This has been requested
The proposal gives browsers a central role in storing impressions, performing attribution, constructing reports, and interacting with aggregation services. This is a fairly significant shift in user-agent responsibility and as such an explainer might really help explain why it is justified.
If such an expansion of responsibilities moves forward, we believe that these are good qualities it seems to currently have:
- On-device attribution with only the attributed result leaving the device (§9.1) is a real architectural improvement over off-device designs, and the spec says so precisely.
- The undetectable enabled/disabled and success/failure behaviour (§8.2, §9.2) is the correct answer to the observability-vs-privacy tension.
- Central noise (§7.3) avoids the utility collapse of local DP.
In the meantime, we do have a few immediate questions, comments and suggestions which we will open much more detailed issues on and link:
-
The formal DP guarantee is conditional on assumptions the spec states cannot hold. The per-site DP claim is not unconditional, and the spec acknowledges it.
-
Privacy-determining parameters are implementation-defined with weak floors
-
Small-cohort / micro-targeting inference - It would be beneficial if the spec can analyse the worst case where an adversary engineers batch composition down to min_batch_size. Either raise the minimum, tie it to ε, or document the residual inference risk explicitly.
-
Aggregation-service trust and governance are out of scope, but the guarantee depends on them
-
Ad fraud / invalid traffic is acknowledged but unmitigated on-device - should be surfaced as an explicit non-goal ("this API does not provide Sybil resistance for measurement integrity") rather than left implicit in a security subsection, since advertisers may otherwise assume the numbers are trustworthy.
-
Enabled by default in third-party contexts, opt-out only: The undetectable-opt-out design is genuinely good as it prevents discrimination against users who decline. But default-on, third-party-exposed, opt-out participation in a cross-site data flow is a configuration that does not follow the Privacy Principles' consent expectations. The "collective privacy" framing argues for a policy outcome (enable for everyone) inside a technical spec; the TAG should decide whether that argument belongs in normative material. We think it is good to justify the * default and third-party availability against Design Principles ("Design for user intent") and ("Help users make good decisions"), which themselves point to the Privacy Principles' consent principles, and separate the normative behaviour from the advocacy (Note the API is already user-activation-gated per spec §4.2.2, so the concern is the consent model and defaults, not the absence of activation.)
-
matchValue (and related fields) can carry identifiers
- suggest cross-referencing §9.5 to the budget/cohort assumptions and state the residual risk when those are configured permissively.
-
Side-channel mitigation is largely delegated and hard to test - define at least one normatively checkable property?
-
Wall-clock dependence (§9.8): the one-time budget-renewal risk from forward clock jumps is acknowledged; consider a normative bound on tolerated forward correction within an epoch.
-
Unconfigured browsers (§9.4): the requirement to obtain aggregator config out-of-band to avoid a timing/fingerprinting leak can be interop constraint and should be a MUST, not a SHOULD, given the consequence.
Comment by @martinthomson Sep 16, 2026 (See Github)
Regarding the explainer:
The working group has bad experiences with explainers and the balance of value that they represent. Such documents tend to be throw-away artifacts that decay badly as the main specification evolves, leaving either an unworkable maintenance burden or an untrustworthy artifact that does not represent reality.
It’s hard enough to have a specification that matches tests and implementations. Adding an explainer is not just one more thing to synchronize, but something that is naturally stuck at a point in time.
The things that the Attribution API specification lacks are precisely those things: the analysis that was done to show that what is captured is most appropriate and any alternatives that were considered. These things are the most prone to decay over time and so are best suited to supplementary material.
We could generate documentation of aspects like that, but feel it is not a good use of our resources, even if that makes it harder for the TAG to do a review. The TAG are uniquely affected here, so I’d be willing to discuss any of this with the TAG to help build that understanding; I’m sure others would too.
The other function of an explainer is as introductory material. To some extent, this is so far outside the present zeitgeist that it is understandable that the leap in understanding is a bit hard to make for some. This is an area where the group is still discussing how to make the API more comprehensible in a broader sense. The current thinking seems to be that this is going to involve multiple artifacts rather than the typical “explainer” pattern (for example. this bit on DAP).
Brian’s AI-generated explainer is slop. It is not uniformly bad, as a good amount of the content is a straight regurgitation of what is in the specification. Of course, duplication without adding value is not worthwhile. The added content is both interesting and where things go less well. In terms of giving potential readers an appreciation for the spectrum of possibilities that converged on this particular design, it’s not a great reference (some of the text is implausible to the point of being fantasy).
As a personal note, I find that the ability of an LLM to produce more accessible interpretations of complex documents to be one of the more positive aspects of the technology. I have no problem conceding that this is a complex document. If you found Brian’s explainer helpful as a way of gaining an initial understanding, that’s great. That cannot cross the gap to a publishable and well-maintained artifact without significant effort.
Just a brief note. Some of this feedback appears to have been generated by an LLM. It is replete with the usual telltales. Even with those telltales, I’d have chosen to bite my tongue if it weren’t for one particular point below.
If you will entertain a digression on that same point…
By the way, I do think that LLM-generated reviews are useful. Mark Nottingham has developed a review suite for IETF documents that is quite handy. I don’t like the way he dumps its output on mailing lists though. Many of the “findings” that come from these tools are garbage. In my view, such tools are best suited to giving the authors of specifications some pointers to areas they might like to improve. For a review, such as those the TAG provides, I hope we eventually get past the point where those sorts of issues are raised during review, so that the TAG can concentrate on the higher-level issues.
In this case, the sorts of high-level questions you might ask here are the sorts of things that might be best directed at a working group charter, rather than a specification. That raises interesting questions for the overall process, because the charter is “agreed” much earlier on. The problem being that it is often impossible to gain the understanding necessary to really decide whether you might agree to something until the specification is in front of you. Generally, we frown on people who challenge the charter at this stage. It’s almost like the game is rigged in favor of forward motion. I’ve seen the same bias in many places, which is often accompanied by either indignant or frustrated proponents, who justifiably protest that they followed the rules scrupulously.
In other words, I’m not offended if you want to challenge the underpinnings of this work. I know it’s controversial. I happen to think that it’s worth doing, but many people hold understandable reservations.
Regarding the specific points raised:
The formal DP guarantee is conditional on assumptions the spec states cannot hold. The per-site DP claim is not unconditional, and the spec acknowledges it.
I could choose to interpret this as positive feedback, even if it was under a “please fix me” category. This sort of assumption or limitation is very common in formal analysis of complex systems. That these “gotchas” are so narrow should be reassuring, not a cause for concern. The work that was done on the privacy analysis shows a very narrow case where the DP guarantees do not hold in the very strictest of senses. The first listed “gap” recognizes that, for a given epoch, generic learnings from some sites (e.g., people shown ads like this buy the green option more often) can be exploited by other sites that have not yet expended their privacy budget to learn new things that build on that information (e.g., let’s focus on the green options and see what shade is selling better).
In a sense, it’s a special form of adaptive composition that the DP analysis cannot allow.
The model we use includes the possibility that a single entity controls multiple sites or that sites can collaborate to maximize advantage. That’s necessary, because that’s how the web works. Including that in the model means that this sort of composition works against the ironclad guarantees that differential privacy seeks to provide.
This is a somewhat theoretical concern, because this is also a good description of how the API is supposed to work, only within a single epoch (the privacy unit) rather than across epochs. We could provide a slightly different design that eliminated same-epoch crosstalk between sites, by delaying the aggregate results by a week. The net effect would be the same: sites could still gain an advantage by sharing information about any given week, using that information in the following week. They would just have to wait longer. At the same time, the utility would crater because of the delays. Increasing the waiting time to seven days makes the API useless for many purposes.
Given that the information obtained is not individually-attributed, such that what sites learn is generic, the conclusion was that addressing this sort of “leak” was not justified. That said, it might slightly motivate parameter choices (like smaller epsilon) that bias toward better privacy. The second leak mentioned in the spec is leakage through cross-site budgets. That is something that is easy to describe, but not something for which I can articulate any concrete privacy consequence. Hitting a shared budget limit results in obtaining a zero-valued histogram, which is indistinguishable from not hitting that limit, so this is more of a theoretical limitation on the analysis itself than it is something that has privacy consequences. Relative to how theoretical the other leak is — at least in my view — this is not worth further analysis.
Privacy-determining parameters are implementation-defined with weak floors
Indeed. That was very much deliberate. Browsers wanted the ability to differentiate in the market based on their parameter choices. The working group explicitly ruled agreement on privacy parameters as out of scope.
It is also entirely possible to give users control over these parameters (though we do not expect that to happen).
Small-cohort / micro-targeting inference - It would be beneficial if the spec can analyse the worst case where an adversary engineers batch composition down to min_batch_size. Either raise the minimum, tie it to ε, or document the residual inference risk explicitly.
The differential privacy guarantees do not depend on the minimum batch size in DAP at all. In other words, differential privacy IS a worst-case analysis (there’s a related discipline that talks about empirical privacy, but we explicitly do not use that).
The value for min_batch_size in DAP exists to support the shuffle DP mode that is used by other applications. We don’t rely on it in any meaningful way. We can’t guarantee that the raw inputs for all the other report submissions aren’t known to the site that receives the final aggregate, no matter what value we set. The value in the Attribution spec is somewhat arbitrary. It could be 1 and the privacy properties would be largely the same.
Not that some aggregation isn’t useful. Intuitively, having your data mixed with others provides some reassurance. After all, other people add their own randomness. It’s just not something we rely on in any analysis.
Aggregation-service trust and governance are out of scope, but the guarantee depends on them
Yes. And? I mean, this is also true for the Web PKI. Somehow we stagger onward. The requirements are pretty clearly laid out in the specification, which is all that a specification can reasonably do. Having to do extra work as a precondition of deployment is a giant nuisance, of course, but it’s not something that W3C is set up to do.
Ad fraud / invalid traffic is acknowledged but unmitigated on-device - should be surfaced as an explicit non-goal ("this API does not provide Sybil resistance for measurement integrity") rather than left implicit in a security subsection, since advertisers may otherwise assume the numbers are trustworthy.
That too is an assumption. My experience of advertisers and the advertising at large is that there is abundant and healthy skepticism of any measurement technique. Maybe it’s just my unique exposure to people in the industry, but the level of sophistication I’ve observed when it comes to measurement is quite high.
Still, this is superficially a reasonable ask, except that it is not a non-goal at all. It’s just that this version of the API does not achieve the sort of robustness against IVT that we might eventually aspire to.
It’s probably not hard to imagine that this was a particularly contentious topic in the working group. There is a fairly good appreciation of the complexity of the problem, as well as a general sense of the tools that measurement professionals in the industry handle the problem. Those tools carry their own privacy hazards, as you might imagine, as they include fingerprinting and other techniques that we might consider questionable, all being used extensively.
Still, the working group reached a conclusion regarding this risk and the result is what you see.
This is not the absence of defenses as your comment makes out. Yes, it is in some key ways inferior to the tools available to a measurement provider who is able to use cross-site cookies. Nor is it a complete open door either. Conversions can be authenticated and measurement aggregation delayed until that happens; questionable items can be withheld from aggregates.
Additionally all existing IVT checks and validation can still be put into play before an impression or conversion is triggered. The advertising industry still contains multiple many-multi-million dollar companies who handle validation via client side JavaScript whose technology can still be employed as usual in this process.
What this does not provide is good defense against sites that seek to “snipe” conversion attribution. That’s a pre-existing and fundamentally unsolved problem, but one that this API can make worse. It is most evident when the simplistic last-touch attribution method is used, but the API does not need to be used that way at all. It provides a range of tools that are far more resistant to sniping than it might seem on the surface.
Detailing those is not the business of a specification, but supporting documentation, and we don’t expect that to be really useful until the API is deployed and in use for some time. Right now, the only experience we have in this area is with Google’s Attribution Reporting API, where the finer details of usage are not transferable.
Enabled by default in third-party contexts, opt-out only: The undetectable-opt-out design is genuinely good as it prevents discrimination against users who decline. But default-on, third-party-exposed, opt-out participation in a cross-site data flow is a configuration that does not follow the Privacy Principles' consent expectations. The "collective privacy" framing argues for a policy outcome (enable for everyone) inside a technical spec; the TAG should decide whether that argument belongs in normative material. We think it is good to justify the * default and third-party availability against Design Principles ("Design for user intent") and ("Help users make good decisions"), which themselves point to the Privacy Principles' consent principles, and separate the normative behaviour from the advocacy (Note the API is already user-activation-gated per spec §4.2.2, so the concern is the consent model and defaults, not the absence of activation.)
The specification might appear to create the impression that it is suggesting that the API be enabled by default. But it does not mandate anything. I suggest that you read it again. What it does is lay out an argument for why enabling it by default could be acceptable or even beneficial. Browser implementations always have discretion in what their defaults are and how to interact with the people who use, or might use, their product.
This is introductory material, which to some extent needs to address the question of why the API exists, so the notion that it is “advocacy” is only true insofar as it advocates for the existence of the API. If that is not acceptable material for a specification, I have some other APIs I could refer you to.
If the reference to “* default” here is with respect to permissions policy, that’s a separable issue. (I’ve read this several times and can’t find any other explanation for its inclusion other than it being LLM output. That is, it looks like LLM output that should not have been forwarded on in the review. That being the case, the TAG can decide if they think this choice is aligned with their view of how the web should work. The other interpretation is less positive: “the TAG should decide” could imply something more than that. If the intent of that statement is that you have some decision-making authority, that’s not a power you have. The W3C membership decides on approving specifications.)
The “* default” in permissions policy was made by the working group based on evidence that deployment of anything that depends on every site acting individually has been slow or unsuccessful in the past. That decision was made in full awareness of some of the problems that decision creates. If concerns about this decision are grounded in the idea that a first- third- party availability distinction has some sort of meaningful impact on privacy in 2026 and beyond, that’s something we should debate.
I also respectfully disagree with your reading of the privacy principles. That document covers a lot of ground, but several sections reference this work indirectly. Collective governance addresses the question of what it means to determine defaults. (To some degree, this discussion is that principle in action; the decisions that browser implementers make are another aspect.) Similarly, collective privacy and ancillary uses are sections that address this style of API. This work is cited in Example 7, though it doesn’t acknowledge that the mentioned personal data could also be deidentified (something this API does).
It’s explicit in the privacy principles that this sort of “ancillary use” thing is contested. So there is no expectation that you, as individuals or a group, need to agree with the conclusion.
matchValue (and related fields) can carry identifiers
- suggest cross-referencing §9.5 to the budget/cohort assumptions and state the residual risk when those are configured permissively.
It’s possible that you are not understanding the full implications of this language. This text exists to underscore the importance of the privacy design in the API, nothing more. That is, we are making it clear that the information in the impression store is controlled by adversaries. https://github.com/w3c/attribution/pull/492 is a short acknowledgement of that. It incorporates the suggestion, which is a good one. Side-channel mitigation is largely delegated and hard to test - define at least one normatively checkable property?
See https://github.com/w3c/attribution/pull/493 for this. It was previously implied, but now it has the smell of must.
Wall-clock dependence (§9.8): the one-time budget-renewal risk from forward clock jumps is acknowledged; consider a normative bound on tolerated forward correction within an epoch.
The effect is barely worth mentioning, so I’m surprised you think it worth extra text.
A bound doesn’t help. Accelerated time means accelerated availability of additional privacy budget. So a cap to the one-off jump isn’t addressing any particular concern.
It’s also basically impossible for a browser to do anything. The browser is downstream from the system clock. It won’t necessarily know that the time shift has occurred.
The privacy exposure via the shifting clock is more of a privacy concern. Consider the extreme case where a user’s clock runs seven times faster than ordinary. In this case, their privacy budget renews daily rather than weekly. That’s a real problem because their privacy loss is seven times higher over time. (This demonstrates the futility of the browser attempting to do something: no single detectable event exists where time moves forward in a jump.) The main privacy problem is that a browser attached to a 7x clock is trivially fingerprinted by any site that is visited over any non-trivial time period that happens to call Date.now(). (Not to mention that this sort of weirdness is a tell that should trip any IVT filtering.)
A user that experiences a one-time shift forward, at worst, experiences a temporary increase in privacy loss through this API, sure. That exists regardless of where the time shift occurs, or how long it is. A site that can observe time on either side of the shift is better able to treat the shift as a strong fingerprint than use the one-off boost to privacy budget.
From the perspective of the privacy budget release over time, a one-off correction is not so different to the budget renewal that happens every week. A one-off increase does increase the overall privacy loss rate, but the idea behind setting budgets is that whatever privacy loss occurs over several epochs needs to be within acceptable bounds. (There is considerable debate about the stability of user preferences and activity such that composition over time is a material privacy risk, which is another reason why the specification is silent on the exact value for privacy budgets.)
Unconfigured browsers (§9.4): the requirement to obtain aggregator config out-of-band to avoid a timing/fingerprinting leak can be interop constraint and should be a MUST, not a SHOULD, given the consequence.
If it weren’t for the fact that browser startup is already trivially fingerprintable, I’d agree. The working group couldn’t agree to make this a hard requirement. No browser was willing to extend the time it takes to launch the browser or compromise the ability to run offline. I doubt that this will change for this API. As the text notes, the alternative is to have the API. This fails the information-leakage test in a technical sense, but it avoids worse leakage.
As a practical matter, the expectation is that this configuration will be relatively static. Configuration can likely be baked into browser builds, with opportunistic updates deployed through browser configuration services in ways that don’t cause the API to become unavailable at any time. So this is more of a theoretical risk, which we note, just as we do all the other theoretical risks. Risks are to be understood then managed if they can't be eliminated. And the cost of eliminating this one was considered too high. I'd be curious whether you agree, armed with this new knowledge.
As a final note, I appreciate the time you have taken to look at this work. I know it isn't easy and I can understand why you might prefer this work not continue. It's hard to look at the damage that advertising has done and then be faced with something that will ultimately help that industry. Personally, I'm sick of the sorts of zero-sum games we play. Those only escalate into non-constructive outcomes, like outright conflict. We can be better than that.
Discussed
Sep 21, 2026 (See Github)
Heather: Martin got back to us with War&Peace. Very long. I haven't gotten through all of it.
Brian: Our feedback wasn't short either.
Ehsan: I saw Martin and discussed briefly. Last paragraph summarized what he thinks. "It's hard, but better than zero-sum solutions." I kinda agree. In Privacy WG we discussed extensively. Had architectural concerns, but majority were focused on usability. We didn't mention usability much in our feedback. Do we want to coordinate with Privacy on that? I think it's a good thing in general, despite its disadvantages.
Lola: Those assigned can iterate on it.
OpenedMay 13, 2026
Specification
https://w3c.github.io/attribution/
Explainer
https://
Links
The specification
Where and by whom is the work is being done?
Feedback so far
You should also know that...
No response
<!-- Content below this is maintained by @w3c-tag-bot -->Track conversations at https://tag-github-bot.w3.org/gh/w3ctag/design-reviews/1229