Troubleshooting Google Advertising Products and TCF

Common issues when integration with Google Advertising Products through the TCFv2.0

Google is part of the TCFv2.0 and Google Ad Manager (GAM), Adsense & Admob will automatically get the user consent status (the TC string) from Didomi via the IAB TCF API.

This article walks you through some of the common issues arising when integrating Google Advertising Products with the TCFv2.0 Didomi CMP. Google also offers a dedicated article on the topic.

Ensuring that Google Advertising Products read the TC string from the CMP

  1. Open your website or mobile app.
  2. Ensure that "Google Advertising Products" is present in the list of vendors with an "IAB TCF" label. If not, make sure to select Google in the list of vendors in the Didomi Console.

  3. Open up the Developer tools of your browser or mobile device.

    Go to the Network tab.

  4. Give consent to all purposes and vendors.

  5. Look for ad requests sent to GAM or Adsense that start with https://securepubads.g.doubleclick.net/gampad/ads.

  6. Ensure that the request includes the query-string parameters gdpr_consent and gdpr.

  7. Ensure that the value of the query-string parameter gdpr_consent is a valid TC string by decoding it on https://iabtcf.com/.

    Make sure that Google is present in the list of vendors with consent.

  8. Ensure that ads are correctly displayed on the page/app after giving consent.

If Google Advertising Products are correctly reading the TC string from Didomi, you can proceed to the next section.

Low impressions / Ads not loading because the ad request is too long (413 error)

In some cases, Google might report a 413 error and not display ads:

👉A 413 error indicates that the ad request (/ads) is too long. This can happen for three reasons listed below.

The consent string is too long

A consent string usually has a length of about 500 characters by default. With publisher restrictions, the length of consent strings can grow a lot and reach more than 3,500 characters.

👉We recommend limiting the number of publisher restrictions that you use to ensure that the string does not get longer than 1,500 characters.

 

The consent string is included as a macro

👉When the consent string is passed as a macro to GAM, it makes the consent string appear twice in the ad request.

👉We recommend not enabling macros for GAM with the TCFv2 by disabling the GAM integration or the "Pass IAB consent string and GDPR status as targeting variables to creatives" option in the Console:

 

The addtl_consent string is too long

👉The addtl_consent string encodes the consent status of Google Ad Tech Providers (ATP) that are not part of the TCF.

👉The addtl_consent string is around 3,500 characters by default as it includes all providers listed by Google in their documentation.

👉You can limit this list to the ATP vendors configured in your GAM account by declaring which ATP vendors you want consent to be shared to in the addtl_consent string (up to 100). To do so, you can select those vendors in the console (Vendors & Purposes step) and follow these instructions.

Errors reported by GAM

When GAM is unable to collect a TC string from the CMP, it adds an error message to your GAM Console:

The specific errors detected are available in a detailed report that you can cross-check against the GAM documentation in the Troubleshooting TCF v2.0 implementation article.

We are documenting below some of the common error codes that we have seen when integration with GAM.

Google, as a vendor, is not allowed under consent or legitimate interest -              1.x (1.1/1.2/1.3)

A reasonable amount of 1.x errors is to be expected as they indicate that the user has denied consent for Google, key purposes for Google, or that you have publisher restrictions preventing Google from operating.

The 1.x errors should roughly match the rate of negative consent for a given website or mobile app.

Checklist for identifying why 1.x errors could be high:

✅ Check that your 1.x errors as % of your ad requests is roughly equal to the negative consent rate (within a 5 points margin).
Example: if Didomi reports a 90% consent rate per page view, a normal 1.x error rate is [5%, 15%].


✅ Check if the IAB TCF v2 was launched on your website or mobile app before September. If yes, recollect.


✅ Check if publisher restrictions are in place. If yes, ensure that they do not impact Google or that they impact Google in a way that is compatible with Google requirements (https://support.google.com/admanager/answer/9805023?hl=en).

How are the errors detected:

  • 1.1 errors: Google, as a vendor, is not allowed under consent or legitimate interest.

  • 1.2 errors: No consent for Purpose 1 for EEA countries and the UK.

When Google is checking whether or not the TC string triggers an error, they always check if Purpose 1 has the consent before checking if Google, as a vendor, is allowed or not.

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

This error code indicates that GAM was not able to retrieve the TC string from the CMP.

This error can happen for three reasons:

  • GAM (gpt.js) is loaded before consent is given. Ensure that you have configured your GAM tag to load after consent is given by the user. Read our dedicated article on the topic.

  • GAM is not correctly retrieving the TC string from the CMP. Validate that GAM is correctly retrieving the TC string from the CMP by testing in your browser or on your mobile device (see above for instructions).

  • GAM is timing out before getting the TC string from the CMP. Google enforces timeouts when getting the TC string from Didomi and sometimes decides to send ad requests without a TC string. This is particularly true for video inventory. For non-video inventory, up to 5% errors seems acceptable. For video inventory, errors can run much higher.

The TC string creation date was more than 13 months ago. -3.2 

If you deployed TCFv2 before Aug 31st, we recommend recollecting consent.

The TC string generated using a version of the GVL in which Google is not yet listed. -4.1

On Web

This error happens if consent was collected before Google was added to the Global Vendor List (late July). If you deployed the TCFv2 before August 1st, 2020, some of your users might be in that situation.

We recommend recollecting consent for your users to ensure that this issue disappears.

On Mobile

Checklist:

✅ Ensure that you are using the latest version of our SDKs.
SDK version is >= 1.21.0 on Android and >= 1.31.0 on iOS.


✅ If the IAB TCF v2 was enabled on your mobile apps before September, recollect consent for users that gave consent before September, 1st.

TC string version is 1 or 1.1 (v1.0 string) -6.1 

Make sure that the SDK versions are at least:

On AMP

Ensure that you have updated your consent notices to TCFv2. Recollection on AMP can be really slow and requires at least 7 days.

7.9 - AC string version is not 1.

Ensure that you have configured your GAM tag (gpt.js) to load after consent is given by the user. Read our dedicated article on the topic.

💡 Support

👉If you need more help, feel free to reach out to the Didomi team at support@didomi.io or via the Chat in the Console.

Troubleshooting integration issues are always complicated so please provide the following information to help us:

  • Did you see a drop in the number of impressions or the rate of personalized ads displayed to your users?

  • What error messages are reported by GAM for the TCFv2.0? Please include the full detailed report.

  • Do you see variations in the number of impressions by partner (Google vs header bidding)? Platform (mobile web vs desktop)? Ad unit?

  • Have you double-checked that Google is correctly configured as a TCF vendor and that ads are displayed after giving consent?

Google is part of the TCFv2.0 and Google Ad Manager (GAM), Adsense & Admob will automatically get the user consent status (the TC string) from Didomi via the IAB TCF API.

This article walks you through some of the common issues arising when integrating Google Advertising Products with the TCFv2.0 Didomi CMP. Google also offers a dedicated article on the topic.