Tag an ad request for child-directed treatment (TFCD)

You can mark your ad requests to be treated as child-directed. The feature is designed to help facilitate compliance with the Children’s Online Privacy Protection Act (COPPA). Note that you may have other legal obligations under COPPA.

Please review the FTC’s guidance and consult with your own legal counsel. Please remember that Google’s tools are designed to facilitate compliance and do not relieve any particular publisher of its obligations under the law.

When using this feature, a TFCD (Tag for Child Directed Treatment) parameter will be included in your ad request. The parameter functions to either disable or allow interest-based advertising and remarketing ads for that content. The parameter does not affect your use of Google key-values. Consequently, you must ensure that any use of key-values is compliant with COPPA. See AdSense COPPA guidance for more information.

Including the TFCD parameter in an ad request will take precedence over any applicable site-level settings.

The guidelines below describe how to mark your tags as child-directed and include the following topics.

If you’re using Google’s advertising services and would like to implement child-directed treatment at the site or app level, rather than in your ad requests, please see Tag a site or ad request for child-directed treatment. Note that as the content owner in control of your site or app, you generally control how your content is treated with respect to COPPA. Even without notice from you, in some cases Google may begin to treat your site or app as child-directed pursuant to AdSense own obligations under COPPA. In these cases, AdSense will attempt to notify you and you may use AdSense tools to specify a particular treatment.

Google Publisher Tags (GPT)

If you’re using GPT, you can mark an ad request with a child-directed status by using the following API call:

googletag.pubads().setTagForChildDirectedTreatment(int options);

Set the options parameter to the integer value 1 to mark the ad request as child-directed, and to 0 for ad requests that are not child-directed.

To ensure the options you specify take effect before any ads are requested for the page, make the setTagForChildDirectedTreatment GPT API call early in the execution of your page. If you do not make the call early enough, the child-directed flag may not be taken into account for every ad request. For example, you need to ensure your call to setTagForChildDirectedTreatment is run before any call to googletag.enableServices()googletag.pubads().display(...), and googletag.pubads().definePassback(...).display() (not an exhaustive list).

If you’re using asynchronous mode, subsequent calls to refresh any ad slots(using googletag.pubads().refresh) will take into account changes made using setTagForChildDirectedTreatment since the last request for the ad slot.

Once the API call has been made to mark the ad request with a child-directed status, the value can be unset. When the value is unset, any further ad requests within the same page view will default to the site-level setting, if applicable. Unset the child-directed status by using the following API call:


After the setTagForChildDirectedTreatment call, all the ad requests that follow will respect the setting until it is changed or cleared.

Example synchronous GPT code snippet

<script type=”text/javascript”>  (function() {    var useSSL = ‘https:’ == document.location.protocol;    var src = (useSSL ? ‘https:’ : ‘http:’) + ‘//www.googletagservices.com/tag/js/gpt.js’;    document.write(‘<scr’ + ‘ipt src=”‘ + src + ‘”></scr’ + ‘ipt>’); })();
<script type=’text/javascript’>    googletag.pubads().setTagForChildDirectedTreatment(1);    googletag.defineSlot(‘/1234/sports/football’, [728, 90],’div_1′)       .addService(googletag.pubads());    googletag.pubads().enableSyncRendering();    googletag.enableServices();

Example asynchronous GPT code snippet

<script type=”text/javascript”>  var googletag = googletag || {};  googletag.cmd = googletag.cmd || [];  (function() {    var gads = document.createElement(“script”);    gads.async = true;    gads.type = “text/javascript”;    var useSSL = “https:” == document.location.protocol;    gads.src = (useSSL ? “https:” : “http:”) + “//www.googletagservices.com/tag/js/gpt.js”;    var node =document.getElementsByTagName(“script”)[0];    node.parentNode.insertBefore(gads, node);   })();
<script type=’text/javascript’>  googletag.cmd.push(function() {    googletag.pubads().setTagForChildDirectedTreatment(1);    googletag.defineSlot(‘/1234/sports/football’, [728, 90],’div_1′)       .addService(googletag.pubads());    googletag.enableServices();  });  

GPT passback tags

GPT passback tags can be used to serve ads from a Google Ad Manager publisher to another publisher, whether or not they use Google Ad Manager ad serving or a third-party ad server. Tags are sent from Google Ad Manager publisher A to publisher B, where they are trafficked using the publisher B ad server.

If you’re using GPT passback tags, you can mark an ad request with a child-directed status by including the following in your API call:

setTagForChildDirectedTreatment(int options);

Set the options parameter to the integer value 1 to mark the ad request as child-directed, and to 0 for ad requests that are not child-directed.

When using passback tags, the initial ad is requested from Google Ad Manager for publisher A using either TFCD=1TFCD=0 or neither. When the creative is served into the page, the %%TFCD%% macro will ‘inherit’ the value from the initial ad request. The ad request to publisher B will be made using the value from the first ad request. Using the %%TFCD%% macro will only work where both publisher A and publisher B use Google Ad Manager ad serving.

Example GPT passback code snippet

<script src=”http://www.googletagservices.com/tag/js/gpt.js”>  googletag.pubads().definePassback(“123456/ad/unit”, [100,200])     .setTagForChildDirectedTreatment(1)

Example GPT passback code snippet using the %%TFCD%% macro

<script src=”http://www.googletagservices.com/tag/js/gpt.js”>  googletag.pubads().definePassback(“123456/ad/unit”, [100,200])     .setTagForChildDirectedTreatment(%%TFCD%%)

Learn more about GPT passback tags and Google Ad Manager macros.

Simple URLs

If you’re using simple URLs, you can mark an ad request with a child-directed status by adding the tfcd=[int] parameter directly to the tag request URL. You must specify the parameter early in the tag; to be safe put it in the first 500 characters. Specify tfcd=1 to mark the ad request as child-directed or tfcd=0 for ad requests that are not child-directed. For example:


Google Mobile Ads SDK

As an app developer, you can indicate whether you want Google to treat your content as child-directed when you make an ad request.

You can set tagForChildDirectedTreatment to indicate whether your content should be treated as child-directed for the purposes of COPPA. Read the developer documentation for Android and iOS for more information.

Child-directed treatment in mediation

Ad Manager mediation facilitates compliance with the Children’s Online Privacy Protection Act (COPPA).

Set tagForChildDirectedTreatment(true) in the Google Mobile Ads SDK to indicate that your content should be treated as child-directed for the purposes of COPPA. Google makes this signal available to third-party ad networks in Mediation to facilitate COPPA compliance. Learn more

Google Ad Manager simply serves as a platform. The advertising relationship is between the mobile app developer and the third-party ad network, so it’s the developer’s responsibility to ensure that each third-party ad network serves ads that treat the developer’s content as child-directed for purposes of COPPA.

Google Interactive Media Ads SDK (for Video)

On video requests, you can indicate that you want Google to treat your video content as child-directed when you append the tfcd=1 parameter to your ad tag. You can do this with a manually constructed master video tag or using any of the platform-specific IMA SDKs (HTML5iOS, or Android).

If your video player uses Google Ad Manager’s Dynamic Ad Insertion feature, it can also include the tfcd=1 parameter with a video on demand (VOD) or live stream request to pass the parameter to any included ad requests.

Leave a Comment

Share via
Copy link
Powered by Social Snap