Google Adsense TCF String Fehler

In meinem Google Adsense Dashboard leuchtete folgende Meldung rot hinterlegt auf:

Wir haben in einer oder mehrerer Ihrer Websites oder Apps ein Problem mit dem TC-String des IAB festgestellt. Derartige Probleme können dazu führen, dass bei Ihnen keine Anzeigen mehr an europäische Nutzer ausgeliefert werden. Einen detaillierten Fehlerbericht finden Sie auf der Seite „EU-Nutzereinwilligung“.

Rote Meldungen sind meistens nicht gut und so bin ich dem Hinweis gefolgt um direkt auf die zweite Meldung zu stoßen:

Laden Sie den TCF-Fehlerbericht herunter und wählen Sie „Weitere Informationen“ aus. So erfahren Sie, wie Sie die Fehler beheben können.

Das hat mich nicht wirklich ruhiger werden lassen und so habe ich mit einem Klick auf „TCF-Fehlerbericht herunterladen“ eine CSV Datei geladen in der nun endlich Details steckten: Laut Bericht weißt meine Webseite den Fehler „2.1a“ auf. Laut Google bedeutet das:

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

https://support.google.com/adsense/answer/9999955

Aber was bedeutet das nun?

Google ist aufgefallen dass ich personalisierte Werbung auf meiner Webseite anzeige BEVOR der Benutzer überhaupt die Möglichkeit hatte dieser personalisierten Werbung zuzustimmen oder abzulehnen. Das wunderte mich, hatte ich doch einen Consent Banner von Quantcast implementiert.

Was man leider nur schwer findet ist die Lösung des Problems. Ich brauchte noch ein Stück Javascript Code mit dem ich die Adsense Werbung mit dem Quantcast Consent Banner (den ich von TheMoneytizer habe) verbinden konnte. Diesen Code fand ich auf StackOverflow, musste ihn aber noch leicht anpassen damit er mit mehreren Anzeigen pro Seite funktioniert.

<html>
    <head>
      <title>Your site title</title>
    </head>
    <body>
      <script>
        ( function() {
          var insertAdsByGoogleJs = function() {
            var element = document.createElement('script');
            var firstScript = document.getElementsByTagName('script')[0];
            var url = "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js";
            element.async = true;
            element.type = 'text/javascript';
            element.src = url;
            firstScript.parentNode.insertBefore(element, firstScript);
          };
          // Run this in an interval (every 0.1s) just in case we are still waiting for consent
          var cnt = 0;
          var consentSetInterval = setInterval(function(){
            cnt += 1;
            // Bail if we have not gotten a consent response after 60 seconds.
            if( cnt === 600 )
              clearInterval(consentSetInterval);
            if( typeof window.__tcfapi !== 'undefined' ) { // Check if window.__tcfapi has been set
              clearInterval( consentSetInterval );
              window.__tcfapi( 'addEventListener', 2, function( tcData,listenerSuccess ) {
                if ( listenerSuccess ) {
                  if( tcData.eventStatus === 'tcloaded' || tcData.eventStatus === 'useractioncomplete' ) {
                    if ( ! tcData.gdprApplies ) {
                      // GDPR DOES NOT APPLY
                      // Insert adsbygoogle.js onto the page.
                      insertAdsByGoogleJs();
                    }
                    else {
                      // GDPR DOES APPLY
                      // Purpose 1 refers to the storage and/or access of information on a device.
                      var hasDeviceStorageAndAccessConsent = tcData.purpose.consents[1] || false;
                      // Google Requires Consent for Purpose 1
                      if (hasDeviceStorageAndAccessConsent) {
                        // GLOBAL VENDOR LIST - https://iabeurope.eu/vendor-list-tcf-v2-0/
                        // CHECK FOR GOOGLE ADVERTISING PRODUCTS CONSENT. (IAB Vendor ID 755)
                        var hasGoogleAdvertisingProductsConsent = tcData.vendor.consents[755] || false;
                        // Check if the user gave Google Advertising Products consent (iab vendor 755)
                        if(hasGoogleAdvertisingProductsConsent) {
                          // Insert adsbygoogle.js onto the page.
                          insertAdsByGoogleJs();
                        }
                      }
                    }
                  }
                }
              } );
            }
            cnt++;
          }, 100);
        })();
      </script>
      <!-- One test unit for GDPR -->
      <ins class="adsbygoogle"
           style="display:inline-block;width:970px;height:250px"
           data-ad-client="ca-pubxxx"
           data-ad-slot="slot_id">
      </ins>
      <!-- Another test unit for GDPR -->
      <ins class="adsbygoogle"
           style="display:inline-block;width:250px;height:250px"
           data-ad-client="ca-pubxxx"
           data-ad-slot="slot_id">
      </ins>
      <script>
        // This will trigger the ad request if ads were unpaused in the CMP consent check above.
        <script defer>$(".adsbygoogle").each(function () { (adsbygoogle = window.adsbygoogle || []).push({}); });</script>
      </script>
    </body>
  </html>

Wichtig ist der Code im großen <script> Bereich welchen man direkt übernehmen kann. Das nächste ist dass man die Werbeblöcke nicht mit dem vollständig von Google vorgeschlagenem Code einbaut, sondern nur mit dem Tag <ins>.

Abschließend kommt einmal ans Ende der Datei der Javascript Code der die Werbeblöcke aktiviert.

Testen kann man das indem man in einem privaten Browserfenster die Seite öffnet. So lange man über den Consent Banner keine Zusage gegeben hat, darf keine Werbung geladen werden. Sobald die Zusage gemacht wurde, wird die Werbung automatisch geladen.

Grace Period

Wenn man die Fehlermeldung nicht beachtet wird dass dazu führen dass ab dem 15.10.2020 keine personalisierte Werbung mehr angezeigt und ab dem 15.11.2020 GAR KEINE Werbung mehr über Google ausgespielt wird. Den Fehler auszusitzen ist demnach keine Option.

1 Trackback / Pingback

  1. Was verdiene ich mit Werbung auf meiner Webseite? – matthias.guru

Kommentar hinterlassen

E-Mail Adresse wird nicht veröffentlicht.


*