Data and Keyword Passing

Developers must not include any personal data, including demographic or interest-based targeting data, in any fields intended for contextual targeting (i.e. keywords or based on the content of the app). Additionally, developers must not send AppLovin any sensitive personal data or custom data values that are against the AppLovin Terms of Use or AppLovin Privacy Policy.

Starting with SDK version 11.0.0, AppLovin provides an option for developers to send additional data. Developers should send any demographic or interest-based targeting data in the fields designated for such data, as described below.

Data Fields

Set values for the following fields to pass personal data (for demographic or interest-based targeting):

Field Description
This data is limited to use by publishers for the publishers’ own direct ad serving. AppLovin does not retain this data or pass it downstream to advertising partners.
email The user’s email address. AppLovin hashes this value before it reaches its ad server.
gender The user’s gender
interests A list of the user’s interests
maximumAdContentRating The maximum ad content rating shown to the user. The levels are based on IQG Media Ratings: 1 = All Audiences, 2 = Everyone Over 12, 3 = Mature Audiences
phoneNumber The user’s phone number. AppLovin hashes this value before it reaches its ad server.
yearOfBirth The user’s year of birth

Set values for the following fields to pass impersonal data (for contextual targeting):

Field Description
keywords A list of keywords related to your application

Here is an example of how to set the user’s email address and the keywords that describe your application:

  • ApplovinSdk.getInstance( this ).getTargetingData().setEmail( "user@email.com" );
    AppLovinSdk.getInstance( this ).getTargetingData().setKeywords( Arrays.asList( "fruit:apple", "fruit:banana", "fruit:orange" ) );
  • AppLovinSdk.getInstance( this ).targetingData.email = "user@email.com"
    AppLovinSdk.getInstance( this ).targetingData.keywords = listOf( "fruit:apple", "fruit:banana", "fruit:orange" )

Once you set any of these fields, the SDK includes them each time you request an AppLovin ad. You can clear these fields at any time, and the SDK then removes them before the next time you request an AppLovin ad. You can clear most fields by setting their values to null. To clear the gender value, set it to AppLovinGender.UNKNOWN or null. To clear the maximumAdContentRating value, set it to AppLovinAdContentRating.NONE or null. Also, you can clear all fields with the following snippet:

  • AppLovinSdk.getInstance( this ).getTargetingData().clearAll();
  • AppLovinSdk.getInstance( this ).targetingData.clearAll()

Location Passing

Starting with SDK version 11.0.0, only if your application already has the relevant end-user permissions, the SDK will automatically collect from the device the latitude and longitude coordinates truncated to the hundredths decimal place.

The truncation occurs on the device, which means that the full coordinates do not leave the device.

The following code snippets show how you disable the SDK from automatically collecting location when your application has the relevant end-user permissions:

  • AppLovinSdk sdk = AppLovinSdk.getInstance( context );
    sdk.getSettings().setLocationCollectionEnabled( false );
  • val sdk = AppLovinSdk.getInstance( context )
    sdk.settings.setLocationCollectionEnabled( false )

Content URL Passing

AppLovin recommends that you pass your App content URL when you make ad requests. The App content URL is passed in the bid request for buy-side contextualization or review and may be required for spend from some DSP buyers.

The following code snippets show how you pass your App content URL when you make an ad request:

  • // Interstitial Ad
    interstitialAd = new MaxInterstitialAd( "ad_unit_id", this );
    interstitialAd.setExtraParameter( "content_url", "value" );
    
    // Rewarded Ad
    rewardedAd = MaxRewardedAd.getInstance( "ad_unit_id", this );
    rewardedAd.setExtraParameter( "content_url", "value" );
    
    // Banner Ad
    bannerAd = new MaxAdView( "ad_unit_id", this );
    bannerAd.setExtraParameter( "content_url", "value" );
    // MRec Ad mrecAd = new MaxAdView( "ad_unit_id", MaxAdFormat.MREC, this ); mrecAd.setExtraParameter( "content_url", "value" );
    // Native Ad nativeAdLoader = new MaxNativeAdLoader( "ad_unit_id", this ); nativeAdLoader.setExtraParameter( "content_url", "value" );
  • // Interstitial Ad
    var interstitialAd = MaxInterstitialAd( "ad_unit_id", this )
    interstitialAd.setExtraParameter( "content_url", "value" )
    
    // Rewarded Ad
    var rewardedAd = MaxRewardedAd.getInstance( "ad_unit_id", this )
    rewardedAd.setExtraParameter( "content_url", "value" )
    
    // Banner Ad
    var bannerAd = MaxAdView( "ad_unit_id", this )
    bannerAd.setExtraParameter( "content_url", "value" )
    
    // MRec Ad
    var mrecAd = MaxAdView( "ad_unit_id", MaxAdFormat.MREC, this )
    mrecAd.setExtraParameter( "content_url", "value" )
    
    // Native Ad
    var nativeAdLoader = MaxNativeAdLoader( "ad_unit_id", this )
    nativeAdLoader.setExtraParameter( "content_url", "value" )

Unified Identifiers

MAX Publishers can pass UID2 tokens as an additional data point for buyers to use for targeting and accurately bidding on app inventory. The tokens will then be included in the bid stream sent to programmatic buyers. Publishers must handle the tokenization and then pass the token to AppLovin. See the code examples below for how to pass the tokens:

  • // App Open Ad
    appOpenAd = new MaxAppOpenAd( "ad_unit_id", this );
    appOpenAd.setExtraParameter( "uid2_token", "value" );
    
    // Banner Ad
    bannerAd = new MaxAdView( "ad_unit_id", this );
    bannerAd.setExtraParameter( "uid2_token", "value" );
    
    // Interstitial Ad
    interstitialAd = new MaxInterstitialAd( "ad_unit_id", this );
    interstitialAd.setExtraParameter( "uid2_token", "value" );
    
    // MRec Ad
    mrecAd = new MaxAdView( "ad_unit_id", MaxAdFormat.MREC, this );
    mrecAd.setExtraParameter( "uid2_token", "value" );
    
    // Native Ad
    nativeAdLoader = new MaxNativeAdLoader( "ad_unit_id", this );
    nativeAdLoader.setExtraParameter( "uid2_token", "value" );
    
    // Rewarded Ad
    rewardedAd = MaxRewardedAd.getInstance( "ad_unit_id", this );
    rewardedAd.setExtraParameter( "uid2_token", "value" );
  • // App Open Ad
    var appOpenAd = MaxAppOpenAd( "ad_unit_id", this )
    appOpenAd.setExtraParameter( "uid2_token", "value" )
    
    // Banner Ad
    var bannerAd = MaxAdView( "ad_unit_id", this )
    bannerAd.setExtraParameter( "uid2_token", "value" )
    
    // Interstitial Ad
    var interstitialAd = MaxInterstitialAd( "ad_unit_id", this )
    interstitialAd.setExtraParameter( "uid2_token", "value" )
    
    // MRec Ad
    var mrecAd = MaxAdView( "ad_unit_id", MaxAdFormat.MREC, this )
    mrecAd.setExtraParameter( "uid2_token", "value" )
    
    // Native Ad
    var nativeAdLoader = MaxNativeAdLoader( "ad_unit_id", this )
    nativeAdLoader.setExtraParameter( "uid2_token", "value" )
    
    // Rewarded Ad
    var rewardedAd = MaxRewardedAd.getInstance( "ad_unit_id", this )
    rewardedAd.setExtraParameter( "uid2_token", "value" )