Troubleshooting TCF v2.0 implementation

IAB Europe has finalized 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 AdSense detected and a 90-day grace period upon the availability of AdSense integration with the IAB TCF v2.0 in which to resolve the errors.


In this article, you will find more information about how to address TCF v2.0 implementation errors,


Updated guidance

Updates

  • 500ms CMP response time: As of November 9, 2020, the requirement for TCF v2.0 CMPs to respond within 500ms to AdManger, AdSense, or AdMob requests has been removed. Now Ad Manager, AdSense, and AdMob will wait indefinitely for a response from the CMP you choose to implement.

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 will not monetize
(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.15.15.2, and 6.1.

Updated guidance

Consider re-requesting consent from users.

Publishers will benefit from re-requesting consent if they had 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.

Rationale

Publishers will benefit from re-requesting consent if they had 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 is important to check if these errors represent a significant volume of traffic. If they are an important part of the traffic, consider an issue on the CMP side and make sure that Google is granted 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 extend it; this is not correct. The consent date should be the new date of a given consent string every time.

Ensure your CMP returns 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, AdSense suggest that CMPs closely review their implementations to ensure they immediately return calls to AddEventListener getTCData

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

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 unmonetized.

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 is removed using RemoveEventListener.

Error report

AdSense will notify publishers in the product user interface if AdSense detects 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 7 days.This report is only available if errors have been detected over the last 7 days.To access the “EU user consent” page and the TCF error report: 

  • Ad Manager: Click Admin  EU user consent.
  • AdMob and AdSense: Click Blocking controls  EU user consent.

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

  • Domain/MobileAppID: The site or mobile app that is 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.

Grace period

The grace period differs slightly based upon the type of error being addressed. The following table defines the types of grace periods and when they will be applied.The grace period has been extended an additional 60 days and will now end in mid-January 2021.

Grace period treatmentOverview
Grace period 0: MisconfigurationIntended to resolve common situations in which publishers have misconfigured their CMPs and failed to send a valid TC string. Google will provide publishers with 60 days in which to use the GDPR ad tech provider controls to remedy misconfigurations without impacting monetization. After 60 days, Google will serve non-personalized ads (NPA) for the remainder of the grace period.

These errors always take precedence over other types of errors, even if a given request has multiple errors.

Grace period 0 will be applied when:

For the first 60 days of the grace period, publishers will be able to fix misconfiguration issues without impacting monetization.

For the remainder of the grace period, non-personalized ads will be served regardless of the existing personalized and non-personalized ads settings.
After the grace period ends, ad requests won’t be filled.
Grace period 1: TC string issuesIntended to address significant flaws in the TC string. Google will only serve non-personalized (NPA) ads during the grace period.

Grace period 1 will be applied to issues in this category when there are problems with the TC string associated with an ad request. Ad requests will continue to be filled with non-personalized ads during the grace period. After the grace period ends, ad requests won’t be filled.
Grace period 2: Consent must be reobtainedIntended for publishers who integrate with the TCF v2.0 before Google has been included on the IAB global vendor list (GVL). Publishers will have obtained consent for Google from users outside of the TCF v2.0 prior to Google’s integration.

Now that Google has officially launched its integration, consent must be reobtained from those users using the TCF v2.0, however, publishers may choose when to do this within the grace period.

Grace period 2 will be applied when consent must be obtained from the user. If you previously obtained consent from a user over 13 months ago, you should use this grace period to reobtain the user’s consent.

During this grace period, existing personalized and non-personalized ads will be served using the existing settings without impacting monetization, including ad technology provider controls for personalized ads. After the grace period ends, ad requests won’t be filled.
Grace period 3: Global scope or out-of-band scopeIntended to address TC strings that include global scope and out-of-band scope (Ad ManagerAdMobAdSense). Google will serve ads for these ad requests in accordance with the TC string, subject to Google’s policies, however, the grace period should be used to correct this issue.

During this grace period, AdSense will serve ads for these ad requests in accordance with the TC string, subject to Google’s policies. After the 90-day grace period ends, AdSense will not serve an ad if the TC string indicates “Out-of-band” or “Global scope.”

Learn more about personalized and non-personalized ads:

Troubleshooting

To help publishers fix misconfigured IAB TCF v2.0 integrations, AdSense has assembled the following tables of the most common TC string error types as well as corresponding troubleshooting recommendations. You should also use the tables to determine which grace period treatment (if any) applies to an error.

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

No grace period, ads not served

These scenarios always result in dropped and unfilled ad requests and they do not receive a grace period. They always take precedence over other types of errors, even if a given request has multiple errors.

ScenarioDescriptionSuggested action to take
1.1Google, as a vendor, is not allowed under consent or legitimate interest.Confirm whether the user intentionally rejected Google as a vendor, CMP implementation errors have occurred, or there are publisher restrictions.
1.2No 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.3Has consent for Purpose 1, but lacks legal bases for Basic Ads.Confirm whether the user intentionally rejected legitimate interests on the other purposes or if this is due to CMP implementation errors.

Grace period 0: Misconfiguration

When Grace period 0 is applied:

  • For the first 60 days of the grace period, publishers will be able to fix misconfiguration issues without impacting monetization.
  • For the remainder of the grace period, non-personalized ads will be served regardless of the existing personalized and non-personalized ads settings.

After the grace period ends, ad requests won’t be filled.

ErrorDescriptionSuggested action to take
2.1aTag or SDK isn’t receiving a TC string due to CMP status being stubloading, or error.If you’re manually invoking the function to request ads, make sure the response to getTCData TCData.eventStatus = 'tcloaded‘ OR 'cmpuishown' + 'useractioncomplete'.

These indicate 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.1bBoth 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.2aThe 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.2bThe 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.2cThe 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.

Grace period 1: TC string issues

Grace period 1 will be applied to issues in this category when there are problems with the TC string associated with an ad request.

Ad requests will continue to be filled with non-personalized ads using the existing settings during the grace period. After the 90-day grace period ends, ad requests will be dropped and unfilled.

ErrorDescriptionSuggested action to take
3.1Invalid 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 re-obtain consent using a valid CMP.
3.2The TC string creation date was more than 13 months ago.CMP should delete the old TC string and reobtain consent.
3.3The TC string last update date was more than 13 months ago.CMP should delete the old TC string and reobtain consent.

Grace period 2: Consent must be reobtained

Grace period 2 will be applied when 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 use this grace period to reobtain the user’s consent.

During this grace period, existing personalized and non-personalized ads will be served using the existing settings without impacting monetization, including ad technology provider controls for personalized ads. After the 90-day grace period ends, ad requests will be dropped and unfilled.

ErrorDescriptionSuggested action
4.1The TC string was generated using a version of the GVL in which Google was not yet listed.Reobtain consent using the updated version of the GVL, which now includes Google.

Grace period 3: Global scope and out-of-band scope

Grace period 3 will be applied when there are issues related to the global scope and out-of-band scope (Ad ManagerAdMobAdSense).

During this grace period, AdSense will serve ads for these ad requests in accordance with the TC string, subject to Google’s policies. After the 90-day grace period ends, AdSense will not serve an ad if the TC string indicates “Out-of-band” or “Global scope.”

ErrorDescriptionSuggested action
5.1The TC string allows Out-of-Band consent.Instruct your CMP to remove Out-Of-Band signals from the TC strings.
5.2Globally-scoped TC string.Instruct your CMP to update the TC strings to be service-specific.

No grace period, ads continue serving

No grace period will be applied. Personalized and non-personalized ads will continue to be served using the existing settings without impacting monetization.

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

No grace period, Google will handle issues

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

ErrorDescriptionSuggested action
7.1gdprApplies is undefined or set to an invalid or indecipherable value, but a valid TC string is present.N/A
7.2The TC string was generated with a GVL version newer than the current version known to Google’s ad serving technology.N/A
7.3Some purposes, features, and/or vendors are out of range (unknown).N/A
7.4The TC string has an older tcf_policy_version then the newest GVL.CMP should delete the older TC string and reobtain consent using the newest GVL.
7.5A request has &gdpr=1, but doesn’t have the &gdpr_consent parameter in the request URL at all.N/A
7.6Invalid publisher country code, but consent to Purpose 1 is present. CMP should fix the TC string implementation errors.
7.7Invalid language code.CMP should fix the TC string implementation errors.
7.8TC string version field is neither 1 nor 2.CMP should send TCF v2.0 strings.
7.9AC string version is not 1.CMP should set the AC string version to 1.

No grace period, 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.

ErrorDescriptionSuggested action
8.1AC 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.2AC 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.

Leave a Comment

Share via
Copy link