Get personalised optimisation tips, understand your account health and set up completion on the improved 'My AdMob page'.

AdMob & AdSense programme policies

Troubleshooting TCF v2.0 implementation

IAB Europe has finalised v2.0 of its Transparency and Consent Framework developed with IAB Tech Lab and mutual member companies. Google now fully supports TCF v2.0.

To give publishers time to manage errors and misconfigurations related to the launch of IAB Europe’s Transparency & Consent Framework v2.0, Google will provide publishers with a report of errors that we’ve detected and a 150-day grace period in which to resolve the errors.


In this article, you'll find more information about how to address TCF v2.0 implementation errors, including:


Updated guidance

Updates

Fixes for common errors

Troubleshoot some of the most common errors across Ad Manager, AdSense and AdMob by taking the following actions:

Consider re-consenting users with TC strings that won't monetise
(Errors 1.1, 3.1, 4.1, 5.1, 5.2 and 6.1)

Related error(s)

Error 1.1. This guidance may also be applied to errors 3.14.1, 5.1, 5.2 and 6.1.

Updated guidance

Consider re-requesting consent from users.

Rationale

Publishers will benefit from re-requesting consent if they'd previously used out-of-band, globally scoped strings, invalid CMP IDs (from testing), invalid GVL IDs (from testing) or were missing Google as a vendor with proper consent at some point during their implementation.

Errors 1.1, 1.2, 1.3: It's important to check if these errors represent a significant volume of traffic. If so, consider that there might be an issue on the CMP side and make sure that Google is granted consent on the purposes needed as well as being a vendor for consent AND legitimate interest (vendor ID 755).

IAB specification

Per IAB specifications, CMPs may cache consent strings for 13 months.

Some CMPs previously kept the first consent date and extended it; this is not correct. The consent date should be the new date of a given consent string every time.
Suggested: Have your CMP return calls from AddEventHandler within 500ms
(Errors 2.1a, 2.1b, 2.2a, 2.2b and 2.2c)

Related error(s)

Error 2.1a. This guidance may also be applied to errors 2.1b, 2.2a, 2.2b and 2.2c.

Updated guidance

While there’s no longer a timeout requirement, we suggest that CMPs closely review their implementations to ensure that they immediately return calls to AddEventListener getTCData

If a CMP doesn’t respond, the request may go unmonetised.

Rationale

Google adheres to the IAB specification stating that a CMP should reply immediately to the AddEventListener function. If a CMP doesn’t respond immediately, then the request may go unmonetised.

Additionally, CMP responses are part of the chain of events that influence how soon an ad request can be made. Decreasing the time between page load and ad requests results in fewer lost impressions for the publisher. 

IAB specification

Applicable IAB specification: IAB AddEventListener specification (on GitHub)

The AddEventListener callback should be called immediately upon registration with the current TC data, even if the CMP status is loading and the CMP has incomplete TC data. This enables the calling script to access its registered listenerId. Furthermore, on every TC string change, the callback should be called unless it's removed using RemoveEventListener.

Error report

We’ll notify publishers in the product user interface if we detect an issue on the TC string associated with one or more of their sites or apps. On the 'EU user consent' page in their account, publishers with errors can click Download TCF error report to download a detailed report of the errors that have been detected over the last seven days.

This report is only available if errors have been detected over the last seven days.
To access the 'EU user consent' page and the TCF error report: 
  • Ad Manager: Click Admin and then EU user consent.
  • AdMob and AdSense: Click Blocking controls and then EU user consent.

The report will contain the following information about each of the detected errors: 

  • Domain/MobileAppID: The site or mobile app that's misconfigured.
  • Ad unit path: The ad unit associated with the error.
  • Error code: The code assigned to the error. 
  • Error count: The number of queries containing the error that were observed during the previous week.
  • Last detected date: The last date on which the error was detected. 

Publishers can use the error codes listed in the report to find the suggested actions to be taken in the following troubleshooting tables and resolve the errors.

Troubleshooting

To help publishers fix misconfigured IAB TCF v2.0 integrations, we’ve assembled the following tables of the most common TC string error types as well as corresponding troubleshooting recommendations.

Use the tables to understand the issues occurring at the ad-request level as well as the corresponding system behaviour.

Limited consent scenarios

Scenarios 1.1 and 1.3 always result in dropped and unfilled ad requests. Scenario 1.2 will not. All three of these scenarios will always take precedence over misconfiguration errors, even if a given request has multiple errors.

Scenario Description Suggested action to take
1.1 Google, as a vendor, isn't allowed under consent or legitimate interest. Ad requests are dropped and unfilled. Confirm whether the user intentionally rejected Google as a vendor, CMP implementation errors have occurred or there are publisher restrictions.
1.2 No consent for Purpose 1 for EEA countries and the UK.

Confirm whether the user intentionally disallowed Purpose 1 or if this is due to CMP implementation errors.

German publishers should ensure they are setting the PublisherCC and PurposeOneTreatment fields correctly if they are not asking users for consent.
1.3 Has consent for Purpose 1, but lacks legal bases for Basic Ads. Ad requests are dropped and unfilled.

Confirm whether the user intentionally rejected legitimate interests on the other purposes or if this is due to CMP implementation errors.

Misconfiguration

Ad requests won't be filled while misconfiguration errors exist.

Error Description Suggested action to take
2.1a Tag or SDK isn’t receiving a TC string due to CMP status being stub, loading or error.

If you're manually invoking the function to request ads, make sure that the response to getTCData TCData.eventStatus = 'tcloaded' OR 'cmpuishown' + 'useractioncomplete'. These indicate that the CMP is ready to provide the user with a choice regarding consent.

If you’re not manually invoking the function to request ads, then work with your CMP to ensure they implement support for getTCData and return TCData.eventStatus = 'tcloaded' OR 'cmpuishown' + 'useractioncomplete' to indicate the user consent is ready for use through the API.

2.1b

Both conditions are met:

  • CMPs set &gdpr=1
  • &gdpr_consent= is present in the request, but the TC string is empty.
Ask your CMP to make sure that their APIs are properly implemented based on the IAB TCF tech specification.
2.2a

The TC string is not parseable because it isn’t base64 encoded.

Example: '2'

CMPs (or publishers) should only send base64-encoded data in gdpr_consent= parameters.
2.2b

The TC string is not parseable because of a decoding error.

Example: Includes an incorrect number of bits

CMP should fix the TC string implementation errors.
2.2c

The TC string is not parseable because of a data error.

Example: Incorrect timestamp, vendor ID is too large
 

CMP should fix the TC string implementation errors.

TC string issues

Problems with the TC string associated with an ad request. Ad requests will be dropped and unfilled.

Error Description Suggested action to take
3.1 Invalid CMP ID.

Make sure an IAB-validated CMP is being used and its ID is correctly set in the TC strings.

If a CMP was valid when a TC string was generated but was later deleted by the IAB, you need to reobtain consent using a valid CMP.

3.2 No longer used. Previous meaning: The TC string creation date was more than 13 months ago. CMP should delete the old TC string and reobtain consent.
3.3 The TC string last updated date was more than 13 months ago. CMP should delete the old TC string and reobtain consent.

Consent must be reobtained

Consent must be obtained from the user. If you previously obtained consent from a user over 13 months ago or before Google joins the GVL, you should reobtain the user's consent, otherwise ad requests will be dropped and unfilled.

Error Description Suggested action
4.1 The TC string was generated using a version of the GVL in which Google wasn't yet listed. Reobtain consent using the updated version of the GVL, which now includes Google.

Global scope and out-of-band scope

Issues related to global scope and out-of-band scope (Ad Manager, AdMob, AdSense). Ads won't serve if the TC string indicates 'Out-of-band' or 'Global scope'.

Error Description Suggested action
5.1 The TC string allows out-of-band consent. Instruct your CMP to remove out-of-band signals from the TC strings.
5.2 Globally scoped TC string. Instruct your CMP to update the TC strings to be service specific.

Ads continue serving

Personalised and non-personalised ads will continue to be served using the existing settings without impacting monetisation.

Error Description Suggested action
6.1 TC string version is 1 or 1.1 (v1.0 string). CMP should send TCF v2.0 strings.

Google will handle issues

When these issues occur, Google will mitigate the problem itself, when necessary, and proceed with normal TCF handling.

Error Description Suggested action
7.1 gdprApplies is undefined or set to an invalid or indecipherable value, but a valid TC string is present. N/A
7.2 The TC string was generated with a GVL version newer than the current version known to Google's ad serving technology. N/A
7.3 Some purposes, features and/or vendors are out of range (unknown). N/A
7.4 The TC string has an older tcf_policy_version than the newest GVL. CMP should delete the older TC string and reobtain consent using the newest GVL.
7.5

A request has &gdpr=1, but doesn't have the &gdpr_consent parameter in the request URL at all.

N/A
7.6 Invalid publisher country code, but consent to Purpose 1 is present.  CMP should fix the TC string implementation errors.
7.7 Invalid language code. Only limited ads will be served. CMP should fix the TC string implementation errors.
7.8 TC string version field is neither 1 nor 2. Only limited ads will be served. CMP should fix the TC string implementation errors.
7.9 AC string version is not 1. CMP should set the AC string version to 1.

AC string issues

When these issues occur, Google will treat the Additional Consent (AC) string as invalid and no additional vendors will be considered beyond the TC string.

Error Description Suggested action
8.1 AC string is not using the version separator (~). CMP should use '~' as the second character of the AC string to separate the version number from the consented vendors list.
8.2 AC string contains a vendor list that doesn't follow the expected formatting (list of int64s separated by ' . ') CMP should fix the AC string implementation errors.

 

Was this helpful?
How can we improve it?

Need more help?

Sign in for additional support options to quickly solve your issue

true
<p>‘My AdMob Help Page’ – your personalised Help Page to help you thrive on AdMob.</p>

Introducing our newly revamped My AdMob Page,  a personalised Help page that houses relevant information for your account. You can better maintain your account health, ensure that necessary setup is completed and have the right optimisation tips targeted to your apps. Stay tuned for more!

Learn more

Search
Clear search
Close search
Google apps
Main menu
Search Help Centre
true
73175
false