{"id":247,"date":"2026-07-06T19:51:24","date_gmt":"2026-07-06T17:51:24","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=247"},"modified":"2026-07-06T19:51:24","modified_gmt":"2026-07-06T17:51:24","slug":"google-consent-mode-v2-implementierung-via-gtm-und-vanilla-js","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/google-consent-mode-v2-implementierung-via-gtm-und-vanilla-js\/","title":{"rendered":"Google Consent Mode v2: Implementierung via GTM und Vanilla JS"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Wer im Europ\u00e4ischen Wirtschaftsraum (EWR) t\u00e4tig ist oder Daten europ\u00e4ischer Nutzer verarbeitet, f\u00fcr den ist der Google Consent Mode v2 keine &#8220;Nice-to-have&#8221;-Funktion mehr, sondern eine zwingende Anforderung (seit M\u00e4rz 2024). Durch das Gesetz \u00fcber digitale M\u00e4rkte (DMA) hat Google die Datenverarbeitung seiner Werbe- und Analyseplattformen grundlegend ge\u00e4ndert.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Fehlen des Consent Mode v2 bedeutet den Verlust von Remarketing-Funktionen und eine drastische Verschlechterung der Conversion-Messung. Das Ziel ist es, die Datenqualit\u00e4t zu erhalten und gleichzeitig strikt die Datenschutzprotokolle einzuhalten. Hier ist eine detaillierte Anleitung, warum Consent Mode v2 wichtig ist, wie er den GMP-Stack beeinflusst und wie er korrekt implementiert wird.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Warum ist Consent Mode v2 so entscheidend?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Im Kern schl\u00e4gt der Consent Mode die Br\u00fccke zwischen den Privatsph\u00e4re-Entscheidungen der Nutzer und den Datenerfassungssystemen. Wenn ein Nutzer mit dem Cookie-Banner interagiert, kommuniziert der Consent Mode dessen Auswahl (granted oder denied) an die Google-Tags. Die Einf\u00fchrung der Version 2 brachte zwei kritische neue Parameter mit Fokus auf Werbung:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>ad_user_data:<\/strong> Setzt die Zustimmung f\u00fcr das Senden von Nutzerdaten an Google zu Werbezwecken.<\/li>\n\n\n\n<li><strong>ad_personalization:<\/strong> Setzt die Zustimmung f\u00fcr personalisierte Werbung (Remarketing).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Was bewirkt er f\u00fcr Google-Tags (Ads, Floodlights, SA360, GA4)?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Bei korrekter Konfiguration im &#8220;Advanced Consent Mode&#8221; laden die Tags vor der Entscheidung, \u00e4ndern aber ihr Verhalten drastisch basierend auf dem Zustimmungsstatus:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Google Analytics 4 (GA4):<\/strong> Wenn <code>analytics_storage<\/code> verweigert wird, liest oder schreibt GA4 keine Cookies. Stattdessen sendet es &#8220;Cookieless Pings&#8221;. GA4 nutzt maschinelles Lernen, um mittels Verhaltensmodellierung die Datenl\u00fccken zu schlie\u00dfen, ohne die Privatsph\u00e4re zu verletzen.<\/li>\n\n\n\n<li><strong>Google Ads &amp; SA360:<\/strong> Wenn <code>ad_storage<\/code> oder <code>ad_user_data<\/code> verweigert wird, senden Werbe-Tags anonyme Conversion-Pings. Die Google-Engine nutzt dann Conversion-Modellierung, um verlorene Conversions wiederherzustellen, damit ROAS-Berechnungen und automatische Gebotsstrategien stabil bleiben.<\/li>\n\n\n\n<li><strong>Floodlights (Campaign Manager 360):<\/strong> \u00c4hnlich wie bei Google Ads respektieren Floodlight-Tags den Zustimmungsstatus und nutzen aggregierte Daten und Modellierung zur genauen Conversion-Zuordnung in Display- und Video-Kampagnen, ohne auf Third-Party-Cookies angewiesen zu sein.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ohne Version 2 verwirft Google nicht zugestimmte Daten, was Messung und Zielgruppenaufbau lahmlegt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Methode 1: Implementierung \u00fcber Google Tag Manager (GTM)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr die meisten Setups ist GTM der sauberste Weg, um Zustimmungen zu verwalten, da er als zentrales Nervensystem der Tracking-Architektur dient.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Schritt 1: Consent Overview aktivieren<\/strong> Gehe in den GTM-Arbeitsbereich &gt; Verwaltung &gt; Containereinstellungen. Aktiviere &#8220;Consent Overview&#8221;. Dies schaltet ein Schild-Symbol in der Tag-Ansicht frei, um Zustimmungen einfach zu verwalten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Schritt 2: CMP-Template oder Consent Mode Template nutzen<\/strong> Anstatt eigene Logik zu bauen, nutze ein zertifiziertes CMP (z.B. Cookiebot, OneTrust, CookieYes) aus der Community Template Gallery.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>F\u00fcge das CMP-Template hinzu und konfiguriere es mit deiner CMP-ID.<\/li>\n\n\n\n<li>Nutze den Trigger: <strong>Consent Initialization \u2013 All Pages<\/strong>. Dies ist ein spezieller Trigger, der vor normalen Seitenaufrufen feuert und garantiert, dass Zustimmungsstandards vor Google-Tags gesetzt werden.<\/li>\n\n\n\n<li>Wenn das CMP direkt implementiert ist, empfiehlt sich das Template &#8220;gtm-templates-simo-ahava&#8221;. F\u00fcge zwei Instanzen als Tags hinzu:\n<ul class=\"wp-block-list\">\n<li><strong>Default Tag:<\/strong> Feuert bei Consent Initialization, alles auf &#8220;Denied&#8221;.<\/li>\n\n\n\n<li><strong>Update Tag:<\/strong> Feuert bei Consent Update vom CMP.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Schritt 3: Tag-Zustimmungseinstellungen konfigurieren<\/strong> Google-Tags (GA4, Google Ads) haben eingebaute Pr\u00fcfungen. Man muss sie nicht blockieren:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u00d6ffne den GA4- oder Google Ads-Tag.<\/li>\n\n\n\n<li>Gehe zu Erweiterte Einstellungen > Zustimmungseinstellungen.<\/li>\n\n\n\n<li>Stelle sicher, dass er <code>ad_storage<\/code> und\/oder <code>analytics_storage<\/code> ben\u00f6tigt. Der Tag erledigt den Rest \u2013 er feuert normal bei Zustimmung oder sendet anonyme Pings bei Ablehnung.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Methode 2: Implementierung via Vanilla JavaScript<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Bei hochoptimierten Frontends oder SPAs, bei denen GTM zu schwerf\u00e4llig ist, ist die direkte Implementierung via Vanilla JS der richtige Weg.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1. Der Standardzustand (Platzierung im <code>&lt;head&gt;<\/code>)<\/strong> Das Skript muss vor <code>gtag.js<\/code> ausgef\u00fchrt werden. Es weist Google an, standardm\u00e4\u00dfig alles abzulehnen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">HTML<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>&lt;script>\n  window.dataLayer = window.dataLayer || [];\n  function gtag(){dataLayer.push(arguments);}\n  \n  gtag('consent', 'default', {\n    'ad_storage': 'denied',\n    'ad_user_data': 'denied',\n    'ad_personalization': 'denied',\n    'analytics_storage': 'denied',\n    'wait_for_update': 500 \n  });\n&lt;\/script><\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">&lt;<\/span><span style=\"color: #D8DEE9FF\">script<\/span><span style=\"color: #81A1C1\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  window<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9FF\">dataLayer <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> window<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9FF\">dataLayer <\/span><span style=\"color: #81A1C1\">||<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">[]<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #81A1C1\">function<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">gtag<\/span><span style=\"color: #ECEFF4\">(){<\/span><span style=\"color: #D8DEE9FF\">dataLayer<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #88C0D0\">push<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">arguments<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #88C0D0\">gtag<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">consent<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #88C0D0\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">default<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #88C0D0\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">    <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">ad_storage<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #81A1C1\">:<\/span><span style=\"color: #88C0D0\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">denied<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">    <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">ad_user_data<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #81A1C1\">:<\/span><span style=\"color: #88C0D0\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">denied<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">    <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">ad_personalization<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #81A1C1\">:<\/span><span style=\"color: #88C0D0\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">denied<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">    <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">analytics_storage<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #81A1C1\">:<\/span><span style=\"color: #88C0D0\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">denied<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">    <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">wait_for_update<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #81A1C1\">:<\/span><span style=\"color: #88C0D0\"> <\/span><span style=\"color: #B48EAD\">500<\/span><span style=\"color: #88C0D0\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">  <\/span><span style=\"color: #ECEFF4\">})<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">&lt;\/<\/span><span style=\"color: #D8DEE9FF\">script<\/span><span style=\"color: #81A1C1\">&gt;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2. Der Aktualisierungszustand (getriggert durch Nutzeraktion)<\/strong> Wenn der Nutzer auf &#8220;Akzeptieren&#8221; klickt, muss ein Update an das <code>dataLayer<\/code> gepusht werden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">JavaScript<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>document.getElementById('btn-accept-all').\naddEventListener('click', function() {\n  gtag('consent', 'update', {\n    'ad_storage': 'granted',\n    'ad_user_data': 'granted',\n    'ad_personalization': 'granted',\n    'analytics_storage': 'granted'\n  });\n  \n  document.getElementById('cookie-banner').style.display = 'none';\n});<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">document<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #88C0D0\">getElementById<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">btn-accept-all<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">addEventListener<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">click<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #88C0D0\"> <\/span><span style=\"color: #81A1C1\">function<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #88C0D0\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">  gtag<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">consent<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #88C0D0\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">update<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #88C0D0\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">    <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">ad_storage<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #81A1C1\">:<\/span><span style=\"color: #88C0D0\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">granted<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">    <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">ad_user_data<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #81A1C1\">:<\/span><span style=\"color: #88C0D0\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">granted<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">    <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">ad_personalization<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #81A1C1\">:<\/span><span style=\"color: #88C0D0\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">granted<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">    <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">analytics_storage<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #81A1C1\">:<\/span><span style=\"color: #88C0D0\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">granted<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">  <\/span><span style=\"color: #ECEFF4\">})<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">  document<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #88C0D0\">getElementById<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">cookie-banner<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #88C0D0\">style<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #88C0D0\">display <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #88C0D0\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">none<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">})<\/span><span style=\"color: #81A1C1\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Zusammenfassung<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die Implementierung des Google Consent Mode v2 ist der definitive Weg, um digitale Analytics- und Werbeinfrastrukturen zukunftssicher zu machen. Ob \u00fcber die GTM-Schnittstelle oder per Vanilla JavaScript \u2013 die korrekte Definition von Standardzust\u00e4nden und Aktualisierungen stellt die Rechtskonformit\u00e4t sicher und erm\u00f6glicht es den Algorithmen von Google gleichzeitig, Datenl\u00fccken zu schlie\u00dfen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wer im Europ\u00e4ischen Wirtschaftsraum (EWR) t\u00e4tig ist oder Daten europ\u00e4ischer Nutzer verarbeitet, f\u00fcr den ist der Google Consent Mode v2 keine &#8220;Nice-to-have&#8221;-Funktion mehr, sondern eine zwingende Anforderung (seit M\u00e4rz 2024). Durch das Gesetz \u00fcber digitale M\u00e4rkte (DMA) hat Google die Datenverarbeitung seiner Werbe- und Analyseplattformen grundlegend ge\u00e4ndert. Ein Fehlen des Consent Mode v2 bedeutet den [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[],"class_list":["post-247","post","type-post","status-publish","format-standard","hentry","category-digital-analytics-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Google Consent Mode v2: Implementierung via GTM und Vanilla JS - Lukas Wojcik - Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/google-consent-mode-v2-implementierung-via-gtm-und-vanilla-js\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Google Consent Mode v2: Implementierung via GTM und Vanilla JS - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Wer im Europ\u00e4ischen Wirtschaftsraum (EWR) t\u00e4tig ist oder Daten europ\u00e4ischer Nutzer verarbeitet, f\u00fcr den ist der Google Consent Mode v2 keine &#8220;Nice-to-have&#8221;-Funktion mehr, sondern eine zwingende Anforderung (seit M\u00e4rz 2024). Durch das Gesetz \u00fcber digitale M\u00e4rkte (DMA) hat Google die Datenverarbeitung seiner Werbe- und Analyseplattformen grundlegend ge\u00e4ndert. Ein Fehlen des Consent Mode v2 bedeutet den [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/google-consent-mode-v2-implementierung-via-gtm-und-vanilla-js\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-06T17:51:24+00:00\" \/>\n<meta name=\"author\" content=\"luky\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"luky\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/google-consent-mode-v2-implementierung-via-gtm-und-vanilla-js\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/google-consent-mode-v2-implementierung-via-gtm-und-vanilla-js\\\/\"},\"author\":{\"name\":\"luky\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Google Consent Mode v2: Implementierung via GTM und Vanilla JS\",\"datePublished\":\"2026-07-06T17:51:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/google-consent-mode-v2-implementierung-via-gtm-und-vanilla-js\\\/\"},\"wordCount\":669,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"articleSection\":[\"Digital Analytics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/google-consent-mode-v2-implementierung-via-gtm-und-vanilla-js\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/google-consent-mode-v2-implementierung-via-gtm-und-vanilla-js\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/google-consent-mode-v2-implementierung-via-gtm-und-vanilla-js\\\/\",\"name\":\"Google Consent Mode v2: Implementierung via GTM und Vanilla JS - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-07-06T17:51:24+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/google-consent-mode-v2-implementierung-via-gtm-und-vanilla-js\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/google-consent-mode-v2-implementierung-via-gtm-und-vanilla-js\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/google-consent-mode-v2-implementierung-via-gtm-und-vanilla-js\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Google Consent Mode v2: Implementierung via GTM und Vanilla JS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"luky\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"luky\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"],\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/author\\\/luky\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Google Consent Mode v2: Implementierung via GTM und Vanilla JS - Lukas Wojcik - Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/google-consent-mode-v2-implementierung-via-gtm-und-vanilla-js\/","og_locale":"en_US","og_type":"article","og_title":"Google Consent Mode v2: Implementierung via GTM und Vanilla JS - Lukas Wojcik - Blog","og_description":"Wer im Europ\u00e4ischen Wirtschaftsraum (EWR) t\u00e4tig ist oder Daten europ\u00e4ischer Nutzer verarbeitet, f\u00fcr den ist der Google Consent Mode v2 keine &#8220;Nice-to-have&#8221;-Funktion mehr, sondern eine zwingende Anforderung (seit M\u00e4rz 2024). Durch das Gesetz \u00fcber digitale M\u00e4rkte (DMA) hat Google die Datenverarbeitung seiner Werbe- und Analyseplattformen grundlegend ge\u00e4ndert. Ein Fehlen des Consent Mode v2 bedeutet den [&hellip;]","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/google-consent-mode-v2-implementierung-via-gtm-und-vanilla-js\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-07-06T17:51:24+00:00","author":"luky","twitter_card":"summary_large_image","twitter_misc":{"Written by":"luky","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/google-consent-mode-v2-implementierung-via-gtm-und-vanilla-js\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/google-consent-mode-v2-implementierung-via-gtm-und-vanilla-js\/"},"author":{"name":"luky","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Google Consent Mode v2: Implementierung via GTM und Vanilla JS","datePublished":"2026-07-06T17:51:24+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/google-consent-mode-v2-implementierung-via-gtm-und-vanilla-js\/"},"wordCount":669,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"articleSection":["Digital Analytics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/google-consent-mode-v2-implementierung-via-gtm-und-vanilla-js\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/google-consent-mode-v2-implementierung-via-gtm-und-vanilla-js\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/google-consent-mode-v2-implementierung-via-gtm-und-vanilla-js\/","name":"Google Consent Mode v2: Implementierung via GTM und Vanilla JS - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"datePublished":"2026-07-06T17:51:24+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/google-consent-mode-v2-implementierung-via-gtm-und-vanilla-js\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/google-consent-mode-v2-implementierung-via-gtm-und-vanilla-js\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/google-consent-mode-v2-implementierung-via-gtm-und-vanilla-js\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Google Consent Mode v2: Implementierung via GTM und Vanilla JS"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"luky","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"luky"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"],"url":"https:\/\/www.lukaswojcik.com\/blog\/author\/luky\/"}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/247","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=247"}],"version-history":[{"count":1,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/247\/revisions"}],"predecessor-version":[{"id":248,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/247\/revisions\/248"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=247"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=247"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=247"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}