-
Notifications
You must be signed in to change notification settings - Fork 171
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow capping aggregated contributions for buckets #1396
Comments
We may consider:
|
Could you clarify what an |
This seems specifically related to Android's implementation of Attribution Reporting, https://developers.google.com/privacy-sandbox/relevance/attribution-reporting/android/developer-guide#x-network-attribution. Generically, the problem here seems to be that there are multiple trigger registrations going on for a source, and we would like to limit the amount of budget that some of these can use. For example, let's say I wanted to ensure I only used at most 50% of my budget on page view conversions, and reserved the rest for other types. Does this control need to be at the aggregation key granularity, or could we do it at the trigger level? For example:
then on the trigger side:
At trigger time, we would look up the budget limit for this trigger, and then use that number when enforcing the L1 budget, perhaps the budget would also need to be tracked by budget limit which is slighly more complicated but seems reasonable. This seems generic enough it would also work for the use-case above assuming we don't need to differentiate this by each individual key's contribution. |
We did consider the option of trigger level bucket with this format. Similar to
I think the rationale is to provide more granularity, so don't have to support too many API surfaces as we already have 2 json formats for |
Another consideration is future extensibility and backwards compatibility. If we support trigger-level bucket for now, and later want to support use cases that need key/value level bucket, we would end up having two API surfaces for backwards compatibility with increased complexity. |
I think there is definitely a tradeoff here in terms of API complexity and flexibility. From my point of view, the bucket level budgeting increases both the schema and API complexity quite a bit, given for a trigger there are a very large number of combinations of things that can happen at the bucket level. In a world where we did want to support bucket level flexibility, I think there is still a case to be made for allowing trigger level caps as well: otherwise to get the same capability you need to more verbosely declare the same bucket on all values. At the very least, we should have a strong example for how bucket level flexibility allows you to measure something useful that trigger level does not. Otherwise, I think trigger-level capping seems to better fit the complexity/flexibility curve. |
Currently the API has L1 contribution budget for the aggregate reports per source. This means that you cannot control how the budget is distributed across multiple buckets. The bucket can be the SDKs used to report the triggers or any category defined by the filters in
aggregatable_values
.E.g. if one SDK (for example Firebase) is used to report a conversion as biddable, yet another third party SDK using that same conversion as non-biddable. We cannot control which SDK ends up registering and redirecting to us first. This race condition may cause one SDK to consume all the L1 budget and leave the other SDK with no budget.
The text was updated successfully, but these errors were encountered: