TCF 2.2 Consent Manual for WordPress

This manual describes the options you have in Advanced Ads to integrate a Consent Management Platform (CMP) like Quantcast, cookiebot, or Complianz based on the Transparent Consent Framework (TCF 2.2). The integration ensures that ads that need consent show only to users who gave it explicitly.

You can find this option under Advanced Ads > Settings > Privacy.

Please make sure you understand the principles of the TCF 2.2 before enabling this option. You can learn more about that in The Transparency & Consent Framework (TCF) 2.2 and what it means for small publishers.

TCF 2.2 integration basics

Advanced Ads does not show a consent notice itself. When the appropriate option is enabled, our integration makes sure that the ads managed with the plugin are only showing when the users give their consent. You will need to embed an official Consent Management Platform (CMP) from this list to gather a valid consent. We have worked and tested with the following CMPs: Quantcast Choices, iubenda, Borlabs, Complianz, Cookiebot, or Google Funding Choices. However, any CMP working based on TCF 2.2 is compatible.

TCF consent dialog from Quantcast
Example of a TCF-compliant consent dialog from Quantcast Choices

If you are not using third-party ad networks or tracking on your site, you might not need a TCF-compliant CMP. If you just need to show a notice about cookies, then check out our Cookie consent privacy setting.

When you enable the Privacy module, all ads that might need consent (see below) are blocked if the consent is required and missing for the current visitor. If not configured properly, this can decrease your ad revenue and ad impressions.

Our privacy settings only work for ads managed with Advanced Ads.

If you need TCF-compliant consent for other codes like website tracking, then manage them as an “ad unit” within Advanced Ads to use our integration.

Our TCF integration works on cached websites. With Advanced Ads Pro enabled, ads are loaded right after the consent is given instead of requiring a page reload. Also, Cache Busting resolves some edge cases in which consent-requiring and consent-free ads are mixed more dynamically.

These are the ad types in Advanced Ads that are automatically waiting for consent before showing up. You can disable this behavior for some ad types.

  • Plain text and code
  • Rich Content
  • AdSense ad
  • Google Ad Manager
  • Auto ads enabled through Advanced Ads > Settings > AdSense


Enable the Privacy module under Advanced Ads > Settings >  Privacy and choose the TCF v2.0 integration option.

TCF2 consent settings for ads
Find the TCF 2.2 integration in the privacy settings

Once you save the settings, Advanced Ads blocks any ads that might need consent (see the list above).

Disable privacy for certain ads

You can make an exception for individual ads. A common use case is custom HTML ads that don’t load code from another URL. Go to the ad edit screen of the relevant ad and enable the Ignore general Privacy settings checkbox in the Ad Parameters box.

Optional exceptions from the TCF consent settings for individual ads
Optional exceptions from the global consent settings for individual ads

This option only shows up if you have the Privacy module enabled, and consent for this particular ad type is optional. I.e., image ads only show this option if the Custom Code field that comes with Advanced Ads Pro is filled. AdSense ads never show the opt-out option because AdSense always needs consent to load.

Enabling your CMP through Advanced Ads

Some CMPs offer their own plugin. It is not needed when its only feature is to place the code. Instead, use Advanced Ads to manage that code.

  1. Create a new Plain text and code ad in Advanced Ads and paste the code in there
  2. Add a new head placement and assign the ad to it
  3. If you are using Advanced Ads Pro with Cache Busting, disable the Cache Busting option for the placement
  4. Enable the Privacy module with the TCF v2.0 option if you haven’t done that already
  5. Enable the Ignore general Privacy settings option on the ad edit screen also to load the CMP’s code without consent
  6. If you are using Tracking, then set the Tracking option to “disabled”

Integrating with a CMP means that Advanced Ads has to wait for the consent before showing ads that need it. This affects a few other features.

  • Ads that need consent show up the next page request after consent is given. When Advanced Ads Pro is enabled (without any specific module required), ads are displayed right away
  • When users change their consent preferences from Accept to Decline, then ads that need consent are removed after reloading the page.
  • All ads that use Cache Busting in Pro wait for the consent dialog to close before showing ads with and without consent
  • Frontend Tracking is triggered after the consent is given and will either include all ads or only those that don’t need consent. When using the Database tracking method, all ads are tracked regardless of the given consent. Using AJAX Tracking is the solution for this.
  • To honor the user’s privacy choice, Google Analytics tracking only happens when a user gives their consent, also for ads that don’t need consent themselves.
  • PopUp and Sticky ads don’t show up until the consent popup is closed. The consent dialog would cover them anyway.
  • Ads shown through the Ad Server placement are excluded from requiring consent on the hosting site. You should gather consent on the site that embeds the ads.

Known limitations

  • Advanced Ads cannot know if you intend to use a CMP. Whenever the TCF feature is enabled, it blocks ads until consent is given. So make sure that your CMP is inserted correctly before enabling this feature.
  • The TCF integration is disabled on AMP because there is no AMP-compatible TCF 2.2 technology yet.
  • If you are using ad groups with mixed ad types, the ad place might stay empty if the user doesn’t give his consent and the ad chosen from the group requires it. When using Cache Busting in Advanced Ads Pro, the ad group will deliver only ads that don’t require consent if it was not given.
  • The feature also works with content loaded via AJAX (e.g., infinite scroll) when Advanced Ads Pro is enabled
  • The Custom Code field is not disabled until consent is given if used for the Ad Group ad type. It works correctly for ads in groups that are delivered through this ad type
  • The alternative ad for ad blockers (Pro-Feature) does not show up either when consent is missing for the blocked ad.
  • Ads that show up with a delay (PopUp) which are tracked using Google Analytics, might be counted twice, on page load, and when showing up. We are going to address this in Tracking 2.0


My website is hosted in the EU. Do I need to show a consent dialogue to users from outside of the EU?

As far as we know, sites hosted in the European Union need to ask any visitor for their consent, while sites hosted outside the EU only need to ask EU-visitors for their consent. This is not our legal advice, though.

Subscribe to our newsletter and get 2 add-ons for free!

* indicates required

When you enabled the module and consent method but didn’t give your consent, you will see a warning in the Ad Health section in the frontend. The warning disappears if you gave your consent.

Did you already give your consent (or reject it) and want to show the consent dialog again to change your choice? Just delete the euconsent-v2 cookie in the browser’s developer tools under Application > Cookies.

When you experience issues and warnings related to ads delivered without consent, make sure you manage any ad tags with Advanced Ads. This includes the Google AdSense Auto ads code, which many publishers place manually somewhere in their site. Enable it through Advanced Ads instead.

It is easy to get confused when using multiple plugins that block (ad) codes from executing without consent. Some CMPs have their own plugins that come with such a feature. We recommend using only either the TCF integration with Advanced Ads or another solution, but not both at the same time.

Please note that Advanced Ads integrates with the TCF 2.2 framework, but it doesn’t manage the visitor’s choice or consent dialog. We might not be able to help with CMP-specific settings or issues. Still, here are a few things you might want to know.

If your business and website are registered outside the EU, your CMP might only show the consent dialog to visitors within the EU. Use a VPN service to test the integration or enable the dialog for any visitors. Some CMPs offer an option for that.

According to this article, you need to enable Google ACM when using Google ad products on your site. It is likely just an option you can enable in your CMP account to take care of the rest for you.

Your CMP might react unexpectedly when using subdirectories or subdomains for individual WordPress installations. They might not handle consent individually.

To check, if your CMP is working, execute the following line in the Console of your browser dev tools:

window.__tcfapi( 'addEventListener', 2, function( tcData,listenerSuccess ) { console.log( tcData ) } );Code language: JavaScript (javascript)

If you receive an error then your CMP is not enabled or working based on the TCF 2.2 standard.

Google AdSense warnings (2.1.a and others)

Google AdSense will warn you if their ads are displayed without proper consent.

The most common error is ID 2.1a. It is often caused by ad codes still loading before consent is given. To solve this, make sure that all (ad) codes are managed within Advanced Ads and that the TCF integration is set up according to this manual.

There are two methods to identify if AdSense is still called without consent. Before looking for the code, revert your own consent so that the CMP dialog shows up again. Now, log out to see your site as a normal visitor.

A: open the source code of your site and look for adsbygoogle. You can learn how to do this in the video below:

B: open the Network tab in your browser’s developer tools, reload the page and filter the requests by adsbygoogle.

If you find any appearances then there are still AdSense codes not managed with by Advanced Ads (or you are using an older plugin version).

We are still looking for confirmation of other potential causes for errors:

  • if using AMP, AdSense might still look for consent, even though it is technically not possible to get it on AMP
  • if your site is cached by external systems like CloudFlare, you might need to refresh it
  • if Google detected the usage of TCF 2.2, it might deliver ads based on that even when the publisher removes the TCF-compliant CMP

Error 1.1 means that the user gave their general consent, but explicitly rejected Google as a vendor. It is unlikely that you will see many of these issues but we will come up with a solution in a future update.

Please also see AdSense’ TCF 2.0 Troubleshooting guide.

What if I haven’t implemented the IAB TCF 2 consent framework but have errors?

It is possible that another service you are using sets a TCF string without you explicitly enabling this. It could also be an ad network doing this.

Make it better

Increase your ad management skills without spending more time.
Join over 150,000 publishers and AdOpts increasing their ad revenue.