App install ads filtering for Protected Audience

New mobile app installations are commonly driven by app install ads. To maximize your ad spend ROI, it's a good idea to not show an ad to install an app on devices that already have that same app installed. In this proposal, we refer to this practice as "app install ads filtering."

This proposal introduces how Protected Audience on Android supports contextual ads filtering, in particular app install ads filtering, in a privacy-preserving way. To participate, the app on the device needs to explicitly opt-in to app install ads filtering. During ad selection, ad candidates are filtered out based on the list of apps installed on the device known by the ad tech.

The list of installed apps is only visible within the ad selection flow, and relies on the buy-side platform to signal that a particular ad should be filtered based on the existence of an app on the device.

To set up app install ads filtering, follow these steps:

Step 1: Register app for app install ads filtering

To opt-in to app install ads filtering, the app developer invokes the registerForAdFiltering app registration API from their app, or an ad tech SDK, with a list of ad tech buyer eTLD+1s. This allows the buyers on the list, and only those buyers, to filter ads based on the app's install status, whether directly or using their ad tech's SDK. Registration gives complete control to the app developer on whether their app should participate or not in app install ads filtering. java void registerForAdFiltering(List<AdTechIdentifier> buyers);

Step 2: Request to filter out app install ads

When an ad is considered for bidding, buyers can choose to flag the ad to be filtered out based on an app's install status. This is done by including the app's package name in the ad's metadata. The app install ads filtering request is part of the ads data fed into the Protected Audience auction process. This ads data is created differently based on whether this is a contextual or remarketing ad.

  • For the contextual ad use case, which is the main use case for app install ads filtering, filtering information is included as part of the ads data that buyers can give to sellers when responding to a contextual bid outside of Protected Audience. Protected Audience expects filtering information to be returned as part of the contextual response, just like any other ad-specific metadata.
  • For the remarketing use case, Protected Audience expects filtering information to be included in the custom audience. There are 2 opportunities for this inclusion to happen: when joining the audience and when fetching new audience data as part of the update audience process. The request to filter out app install ads should look like the following within the AdData JSON object: json { "render_uri": "https://..", "metadata": {..}, "filters": { "app_install": { "app_package_names": ["app1.package", "app2.package"] } } }

Step 3: Filter out app install ads during ad selection

During an ad request, the buyer can pass multiple ads back to the seller with filtering information so that ads for installed apps can be filtered out. The sell-side is required to pass the filtering information as part of the selectAds function configuration in the adData field. Android expects a message format similar to this one.