{"id":245,"date":"2026-07-06T19:50:53","date_gmt":"2026-07-06T17:50:53","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=245"},"modified":"2026-07-06T19:50:53","modified_gmt":"2026-07-06T17:50:53","slug":"google-consent-mode-v2-wdrozenie-przez-gtm-oraz-natywnie-vanilla-js","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/google-consent-mode-v2-wdrozenie-przez-gtm-oraz-natywnie-vanilla-js\/","title":{"rendered":"Google Consent Mode v2: Wdro\u017cenie przez GTM oraz natywnie (Vanilla JS)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Dzia\u0142alno\u015b\u0107 w ramach Europejskiego Obszaru Gospodarczego (EOG) lub przetwarzanie danych u\u017cytkownik\u00f3w z Europy sprawia, \u017ce Google Consent Mode v2 przesta\u0142 by\u0107 opcj\u0105, a sta\u0142 si\u0119 wymogiem prawnym (obowi\u0105zuj\u0105cym od marca 2024 r.). W zwi\u0105zku z wej\u015bciem w \u017cycie ustawy o rynkach cyfrowych (Digital Markets Act \u2013 DMA), Google fundamentalnie zmieni\u0142o spos\u00f3b przetwarzania danych przez swoje platformy reklamowe i analityczne.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Brak implementacji Consent Mode v2 oznacza utrat\u0119 mo\u017cliwo\u015bci remarketingowych oraz drastyczny spadek jako\u015bci \u015bledzenia konwersji. Celem architekt\u00f3w danych jest utrzymanie precyzji pomiar\u00f3w przy jednoczesnym rygorystycznym przestrzeganiu protoko\u0142\u00f3w prywatno\u015bci. Oto szczeg\u00f3\u0142owy przewodnik po tym, dlaczego Consent Mode v2 jest kluczowy, jaki ma wp\u0142yw na ekosystem GMP oraz jak go poprawnie wdro\u017cy\u0107.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Dlaczego Consent Mode v2 jest tak wa\u017cny?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">W swojej istocie Consent Mode stanowi pomost mi\u0119dzy wyborami u\u017cytkownik\u00f3w dotycz\u0105cymi prywatno\u015bci a systemami zbierania danych. Gdy u\u017cytkownik wchodzi w interakcj\u0119 z banerem plik\u00f3w cookie, Consent Mode przekazuje jego decyzje (zgoda lub odmowa) do tag\u00f3w Google. Wprowadzenie wersji v2 przynios\u0142o dwa kluczowe parametry nakierowane na reklam\u0119:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>ad_user_data:<\/strong> Okre\u015bla zgod\u0119 na wysy\u0142anie danych u\u017cytkownika do Google w celach reklamowych.<\/li>\n\n\n\n<li><strong>ad_personalization:<\/strong> Okre\u015bla zgod\u0119 na personalizacj\u0119 reklam (remarketing).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Wp\u0142yw na tagi Google (Ads, Floodlight, SA360, GA4)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Po poprawnej konfiguracji w trybie zaawansowanym (Advanced Consent Mode), tagi \u0142aduj\u0105 si\u0119 przed wyborem u\u017cytkownika, ale drastycznie zmieniaj\u0105 zachowanie w oparciu o status zgody:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Google Analytics 4 (GA4):<\/strong> Je\u015bli <code>analytics_storage<\/code> jest odrzucone, GA4 przestaje odczytywa\u0107 i zapisywa\u0107 pliki cookie. Zamiast tego wysy\u0142a sygna\u0142y bezciasteczkowe (&#8220;pings&#8221;). Nast\u0119pnie wykorzystuje uczenie maszynowe do modelowania zachowa\u0144, pozwalaj\u0105c na podgl\u0105d szacunkowych \u015bcie\u017cek u\u017cytkownik\u00f3w bez naruszania ich prywatno\u015bci.<\/li>\n\n\n\n<li><strong>Google Ads &amp; SA360:<\/strong> Je\u015bli <code>ad_storage<\/code> lub <code>ad_user_data<\/code> s\u0105 odrzucone, tagi reklamowe wysy\u0142aj\u0105 sygna\u0142y konwersji bez ciasteczek. Silnik Google wykorzystuje wtedy modelowanie konwersji, aby odzyska\u0107 utracone dane, zapewniaj\u0105c stabilno\u015b\u0107 algorytm\u00f3w automatycznego ustalania stawek i oblicze\u0144 ROAS.<\/li>\n\n\n\n<li><strong>Floodlights (Campaign Manager 360):<\/strong> Podobnie jak w Google Ads, tagi Floodlight respektuj\u0105 stan zgody, wykorzystuj\u0105c dane zagregowane i modelowanie do precyzyjnej atrybucji konwersji w kampaniach display i wideo, bez polegania na ciasteczkach stron trzecich.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Bez v2 Google po prostu odrzuci dane, na kt\u00f3re nie uzyskano zgody, parali\u017cuj\u0105c analityk\u0119 i budowanie grup odbiorc\u00f3w.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Metoda 1: Implementacja przez Google Tag Manager (GTM)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Dla wi\u0119kszo\u015bci konfiguracji GTM jest najczystszym sposobem zarz\u0105dzania zgodami, pe\u0142ni\u0105c rol\u0119 centralnego systemu operacyjnego architektury \u015bledzenia.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Krok 1: W\u0142\u0105cz przegl\u0105d zg\u00f3d (Consent Overview)<\/strong> Wejd\u017a w obszar roboczy GTM &gt; Administracja &gt; Ustawienia kontenera. Zaznacz &#8220;W\u0142\u0105cz przegl\u0105d zg\u00f3d&#8221;. Odblokuje to ikon\u0119 tarczy w widoku Tagi, co pozwoli na \u0142atwe zarz\u0105dzanie ustawieniami dla wszystkich tag\u00f3w.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Krok 2: U\u017cyj szablonu CMP lub Consent Mode<\/strong> Zamiast budowa\u0107 w\u0142asn\u0105 logik\u0119, wykorzystaj certyfikowany szablon CMP (np. Cookiebot, OneTrust, CookieYes) z Galerii Szablon\u00f3w Spo\u0142eczno\u015bciowych.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Dodaj szablon do obszaru roboczego i skonfiguruj z ID swojego CMP.<\/li>\n\n\n\n<li>Ustaw wyzwalacz: <strong>Inicjacja zgody (Consent Initialization) \u2013 Wszystkie strony<\/strong>. Jest to specjalny wyzwalacz uruchamiaj\u0105cy si\u0119 przed standardowymi ods\u0142onami, gwarantuj\u0105cy ustawienie domy\u015blnych zg\u00f3d przed uruchomieniem jakichkolwiek tag\u00f3w Google.<\/li>\n\n\n\n<li>Je\u015bli Twoje CMP jest wdro\u017cone bezpo\u015brednio na stronie, zaleca si\u0119 u\u017cycie szablonu &#8220;gtm-templates-simo-ahava&#8221;, kt\u00f3ry jest zawsze aktualny. Dodaj dwie instancje szablonu jako tagi:\n<ul class=\"wp-block-list\">\n<li><strong>Tag domy\u015blny (Default):<\/strong> Uruchamiany na Inicjacji zgody, ustawiaj\u0105cy wszystko na &#8220;Denied&#8221;.<\/li>\n\n\n\n<li><strong>Tag aktualizacji (Update):<\/strong> Uruchamiany na zdarzeniu aktualizacji zgody z CMP.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Krok 3: Konfiguracja ustawie\u0144 zgody tag\u00f3w<\/strong> Tagi Google (GA4, Google Ads) maj\u0105 wbudowan\u0105 kontrol\u0119 zg\u00f3d. Nie trzeba ich blokowa\u0107 przed uruchomieniem. Wystarczy:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Otworzy\u0107 tag GA4 lub Google Ads.<\/li>\n\n\n\n<li>Przej\u015b\u0107 do Ustawienia zaawansowane > Ustawienia zgody.<\/li>\n\n\n\n<li>Upewni\u0107 si\u0119, \u017ce tag wymaga <code>ad_storage<\/code> i\/lub <code>analytics_storage<\/code>. Tag obs\u0142u\u017cy reszt\u0119 \u2013 uruchomi si\u0119 normalnie, je\u015bli udzielono zgody, lub wy\u015ble sygna\u0142y bezciasteczkowe w przypadku odmowy.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Metoda 2: Implementacja przez Vanilla JavaScript<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">W przypadku budowy zoptymalizowanego frontendu lub Single Page Application (SPA), gdzie GTM jest zbyt ci\u0119\u017cki, implementacja bezpo\u015brednia przez JS jest optymalnym rozwi\u0105zaniem.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1. Stan domy\u015blny (umie\u015bci\u0107 w <code>&lt;head&gt;<\/code>)<\/strong> Skrypt ten musi wykona\u0107 si\u0119 przed <code>gtag.js<\/code>. Informuje Google, aby domy\u015blnie odrzuca\u0107 wszystko (dla u\u017cytkownik\u00f3w z EOG).<\/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>\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: #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>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2. Stan aktualizacji (wyzwalany interakcj\u0105)<\/strong> Gdy u\u017cytkownik zaakceptuje pliki cookie, nale\u017cy wys\u0142a\u0107 aktualizacj\u0119 do <code>dataLayer<\/code>:<\/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});\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>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Podsumowanie<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Wdro\u017cenie Google Consent Mode v2 to ostateczny spos\u00f3b na zabezpieczenie analityki i infrastruktury reklamowej na przysz\u0142o\u015b\u0107. Niezale\u017cnie od wybranej metody \u2013 przez GTM czy bezpo\u015bredni kod JS \u2013 poprawne ustawienie stan\u00f3w domy\u015blnych i aktualizacji zapewnia zgodno\u015b\u0107 prawn\u0105 oraz pozwala algorytmom Google na odzyskiwanie danych w spos\u00f3b zgodny z prywatno\u015bci\u0105.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dzia\u0142alno\u015b\u0107 w ramach Europejskiego Obszaru Gospodarczego (EOG) lub przetwarzanie danych u\u017cytkownik\u00f3w z Europy sprawia, \u017ce Google Consent Mode v2 przesta\u0142 by\u0107 opcj\u0105, a sta\u0142 si\u0119 wymogiem prawnym (obowi\u0105zuj\u0105cym od marca 2024 r.). W zwi\u0105zku z wej\u015bciem w \u017cycie ustawy o rynkach cyfrowych (Digital Markets Act \u2013 DMA), Google fundamentalnie zmieni\u0142o spos\u00f3b przetwarzania danych przez swoje [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"class_list":["post-245","post","type-post","status-publish","format-standard","hentry","category-digital-analytics-pl"],"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: Wdro\u017cenie przez GTM oraz natywnie (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\/pl\/digital-analytics-pl\/google-consent-mode-v2-wdrozenie-przez-gtm-oraz-natywnie-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: Wdro\u017cenie przez GTM oraz natywnie (Vanilla JS) - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Dzia\u0142alno\u015b\u0107 w ramach Europejskiego Obszaru Gospodarczego (EOG) lub przetwarzanie danych u\u017cytkownik\u00f3w z Europy sprawia, \u017ce Google Consent Mode v2 przesta\u0142 by\u0107 opcj\u0105, a sta\u0142 si\u0119 wymogiem prawnym (obowi\u0105zuj\u0105cym od marca 2024 r.). W zwi\u0105zku z wej\u015bciem w \u017cycie ustawy o rynkach cyfrowych (Digital Markets Act \u2013 DMA), Google fundamentalnie zmieni\u0142o spos\u00f3b przetwarzania danych przez swoje [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/google-consent-mode-v2-wdrozenie-przez-gtm-oraz-natywnie-vanilla-js\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-06T17:50:53+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\\\/pl\\\/digital-analytics-pl\\\/google-consent-mode-v2-wdrozenie-przez-gtm-oraz-natywnie-vanilla-js\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/google-consent-mode-v2-wdrozenie-przez-gtm-oraz-natywnie-vanilla-js\\\/\"},\"author\":{\"name\":\"luky\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Google Consent Mode v2: Wdro\u017cenie przez GTM oraz natywnie (Vanilla JS)\",\"datePublished\":\"2026-07-06T17:50:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/google-consent-mode-v2-wdrozenie-przez-gtm-oraz-natywnie-vanilla-js\\\/\"},\"wordCount\":789,\"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\\\/pl\\\/digital-analytics-pl\\\/google-consent-mode-v2-wdrozenie-przez-gtm-oraz-natywnie-vanilla-js\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/google-consent-mode-v2-wdrozenie-przez-gtm-oraz-natywnie-vanilla-js\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/google-consent-mode-v2-wdrozenie-przez-gtm-oraz-natywnie-vanilla-js\\\/\",\"name\":\"Google Consent Mode v2: Wdro\u017cenie przez GTM oraz natywnie (Vanilla JS) - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-07-06T17:50:53+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/google-consent-mode-v2-wdrozenie-przez-gtm-oraz-natywnie-vanilla-js\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/google-consent-mode-v2-wdrozenie-przez-gtm-oraz-natywnie-vanilla-js\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/google-consent-mode-v2-wdrozenie-przez-gtm-oraz-natywnie-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: Wdro\u017cenie przez GTM oraz natywnie (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: Wdro\u017cenie przez GTM oraz natywnie (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\/pl\/digital-analytics-pl\/google-consent-mode-v2-wdrozenie-przez-gtm-oraz-natywnie-vanilla-js\/","og_locale":"en_US","og_type":"article","og_title":"Google Consent Mode v2: Wdro\u017cenie przez GTM oraz natywnie (Vanilla JS) - Lukas Wojcik - Blog","og_description":"Dzia\u0142alno\u015b\u0107 w ramach Europejskiego Obszaru Gospodarczego (EOG) lub przetwarzanie danych u\u017cytkownik\u00f3w z Europy sprawia, \u017ce Google Consent Mode v2 przesta\u0142 by\u0107 opcj\u0105, a sta\u0142 si\u0119 wymogiem prawnym (obowi\u0105zuj\u0105cym od marca 2024 r.). W zwi\u0105zku z wej\u015bciem w \u017cycie ustawy o rynkach cyfrowych (Digital Markets Act \u2013 DMA), Google fundamentalnie zmieni\u0142o spos\u00f3b przetwarzania danych przez swoje [&hellip;]","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/google-consent-mode-v2-wdrozenie-przez-gtm-oraz-natywnie-vanilla-js\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-07-06T17:50:53+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\/pl\/digital-analytics-pl\/google-consent-mode-v2-wdrozenie-przez-gtm-oraz-natywnie-vanilla-js\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/google-consent-mode-v2-wdrozenie-przez-gtm-oraz-natywnie-vanilla-js\/"},"author":{"name":"luky","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Google Consent Mode v2: Wdro\u017cenie przez GTM oraz natywnie (Vanilla JS)","datePublished":"2026-07-06T17:50:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/google-consent-mode-v2-wdrozenie-przez-gtm-oraz-natywnie-vanilla-js\/"},"wordCount":789,"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\/pl\/digital-analytics-pl\/google-consent-mode-v2-wdrozenie-przez-gtm-oraz-natywnie-vanilla-js\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/google-consent-mode-v2-wdrozenie-przez-gtm-oraz-natywnie-vanilla-js\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/google-consent-mode-v2-wdrozenie-przez-gtm-oraz-natywnie-vanilla-js\/","name":"Google Consent Mode v2: Wdro\u017cenie przez GTM oraz natywnie (Vanilla JS) - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"datePublished":"2026-07-06T17:50:53+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/google-consent-mode-v2-wdrozenie-przez-gtm-oraz-natywnie-vanilla-js\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/google-consent-mode-v2-wdrozenie-przez-gtm-oraz-natywnie-vanilla-js\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/google-consent-mode-v2-wdrozenie-przez-gtm-oraz-natywnie-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: Wdro\u017cenie przez GTM oraz natywnie (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\/245","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=245"}],"version-history":[{"count":1,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/245\/revisions"}],"predecessor-version":[{"id":246,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/245\/revisions\/246"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=245"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=245"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}