COPPA compliance and contextual ads

The Children’s Online Privacy Protection Act (COPPA) imposes restrictions on how data can be collected and used from children under the age of 13. Unity Ads provides tools to help publishers provide a safe and positive user experience. Each Unity Ads-enabled project must specify whether their game targets users under the age of 13.

Important: Regional policies such as PIPL, GDPR, or CCPA take precedent over COPPA and contextual ad settings.

There are two types of ads that can appear in your game:

  • Personalized ads leverage behavioral user data to serve content that is more likely to interest the user. For example, if a user has played a series of sport-themed games, ads for other games with similar sports themes might appear. Games targeting users under the age of 13 cannot serve personalized ads. Games that serve personalized ads tend to accrue more revenue than games that allow contextual ads.

  • Contextual ads are only based on the game that the user is currently playing. For example, if the user is playing a game that features basketball, other games that feature basketball are likely to appear, regardless of other games the user has played. Games that target users under the age of 13 can only serve contextual ads. Games that only serve contextual ads tend to accrue less revenue than games that allow personalized ads.

There are two COPPA compliance options available through the Monetization dashboard:

  • This app is directed to children under the age of 13 means the game falls under COPPA restrictions, and can therefore only serve contextual (non-targeted) ads to all users. This designation permits you to enable user-specific COPPA designations solely for applications you also designate as mixed audience applications.
  • This app is NOT directed to children under the age of 13 means the game does not fall under COPPA restrictions, and can therefore serve behavioral (targeted) ads to all users. Note that this designation still allows you to disable targeted ads entirely for adult audiences by using the Contextual ads control feature.

Implementing user-level COPPA designations

If your app is directed to children under the age of 13 but you want to more appropriately represent a mixed audience, you can programmatically assign users a COPPA designation according to a flag passed to the Unity Ads SDK.

To do this, implement the nonbehavioral metadata API according to your specific use case in the following sections.

Important: When the nonbehavioral field is true, the user cannot receive personalized ads. When the nonbehavioral field is false, the user can receive personalized ads. You must communicate the appropriate COPPA status every time the SDK initializes to ensure that Unity Ads does not incorrectly treat a user as a child, as an adult opting out of personalized ads, or an adult consenting to personalized ads during their session.

Unity Ads exclusive and self-mediated customers

If your project sends signals to Unity directly instead of through a third-party mediator (Unity Ads exclusive or self-mediated) and you want to implement user-level age designations:

  1. Implement a way to determine if the user should receive personalized ads. How you do this is up to your discretion.

  2. Communicate the COPPA status of each user to Unity by implementing the nonbehavioral metadata API.

  3. Rebuild your application.

  4. In the Monetization dashboard, go to the Privacy settings section and verify that the User-level COPPA Status fields are active for each applicable platform. This indicates that Unity is receiving data from the nonbehavioral flags you implemented.

    The User-Level COPPA Status fields with Active indicators

  5. In the Privacy settings section, set the Game-level COPPA designation to This app is directed to children under the age of 13, and Is this a Mixed Audience Game? to Yes. For more information, see privacy settings.

Third-party mediation customers

If your project uses a supported mediation platform and you want to implement user-level age designations:

  1. Implement a way to determine if the user should receive personalized ads. How you do this is up to your discretion.

  2. Follow your mediation provider’s documentation on how to communicate that information to their platform. (Ironsource)

  3. In the Monetization dashboard, go to the Privacy settings section and verify that the User-level COPPA Status fields are active for each applicable platform. This indicates that Unity is receiving data from the mediation provider.

    The User-Level COPPA Status fields with Active indicators

  4. In the Privacy settings section, set the Game-level COPPA designation to This app is directed to children under the age of 13, and Is this a Mixed Audience Game? to Yes. For more information, see privacy settings.

Note: Unity Mediation does not support user-level COPPA signals at this time.

Third-party mediation platforms

If you are a third-party mediation provider that wants to support sending user-level COPPA signals to Unity on behalf of developers, reach out to customer support or your managing partner.

Nonbehavioral metadata API implementation

Copy

Unity (C#) example

// If the user opts out of personalized ads:
MetaData userMetaData = new MetaData("user");
userMetaData.Set("nonbehavioral", "true");
Advertisement.SetMetaData(userMetaData);

// If the user opts in to personalized ads:
MetaData userMetaData = new MetaData("user");
userMetaData.Set("nonbehavioral", "false");
Advertisement.SetMetaData(userMetaData);

Note: You must commit the changes to the MetaData object for each value before trying to set another value.
Copy

Android (Java) example

// If the user opts out of personalized ads:
MetaData userMetaData = new MetaData(this);
userMetaData.set("user.nonbehavioral", true);
userMetaData.commit();

// If the user opts in to personalized ads:
MetaData userMetaData = new MetaData(this);
userMetaData.set("user.nonbehavioral", false);
userMetaData.commit();

Note: You must commit the changes to the MetaData object for each value before trying to set another value.

Copy

iOS (Objective-C) example

// If the user opts out of personalized ads:
UADSMetaData *userMetaData = [[UADSMetaData alloc] init];
[userMetaData set:@"user.nonbehavioral" value:@YES];
[userMetaData commit];

// If the user opts in to personalized ads:
UADSMetaData *userMetaData = [[UADSMetaData alloc] init];
[userMetaData set:@"user.nonbehavioral" value:@NO];
[userMetaData commit];

Note: You must commit the changes to the MetaData object for each value before trying to set another value.

If a user takes no action to confirm their age (for example, they close a prompt), we recommend that you re-prompt them at a later time. Users with an undefined individual COPPA status will see ads consistent with the default behavior as defined in the Monetization dashboard.