Baner cookies pokazuje "Odrzucono", a skrypty śledzące dalej się ładują: jak to sprawdzić i naprawić

Baner cookies pokazuje "Odrzucono", a skrypty śledzące dalej się ładują: jak to sprawdzić i naprawić

Ostatnio zweryfikowano: 23 października 2026
9 min czytania
Przewodnik
Audytor bezpieczeństwa
Strateg marketingowy

22 października 2026 właściciel sklepu na Shopify zapytał na r/shopify, jak inni radzą sobie ze skryptami, które ładują się mimo kliknięcia "Odrzuć". Baner mówił jedno, przeglądarka robiła drugie. To najczęstszy problem z cookies na każdej platformie: baner zapisuje wybór, ale nic na stronie nie jest podłączone tak, żeby go słuchać. WooCommerce, Shopify, headless na Next.js albo Astro i zwykły WordPress psują się tak samo, bo wycieki biorą się z osadzonych filmów, fontów, kodu motywu i konfiguracji tagów, a nie z samej wtyczki banera.

Ten poradnik pokazuje, jak samą przeglądarką sprawdzić, co strona wysyła po odmowie, które zapytania zwykle przeciekają, co zaawansowany tryb zgody Google wysyła celowo i jak zablokować każde z nich. Przy każdym punkcie podaję przepis albo dokumentację dostawcy. To praktyczny poradnik testowania, nie porada prawna.

#Dlaczego skrypty ładują się mimo odrzucenia cookies

Autor wątku dobrze opisał ten podział:

Piksele aplikacji to prosta sprawa. Shopify je obsługuje. Cała reszta? Filmy z YouTube, Google Fonts, widżety czatu, skrypty SEO i analityki: nie. W styczniu 2022 sąd w Monachium przyznał odwiedzającemu 100 euro, bo strona przekazała jego adres IP do Google przez Google Fonts, bez zgody.

(u/Plus_Cell394, r/shopify, 22 października 2026, tłumaczenie własne)

Baner kontroluje tylko to, co jest w nim zarejestrowane. Kod wpisany na sztywno w motyw, wklejony w pole stopki, dodany przez blok osadzenia albo ładowany przez wtyczkę, która ignoruje API banera, uruchamia się przy wczytaniu strony bez względu na odpowiedź. Baner pokazuje “Odrzucono” i ma rację co do własnego stanu. Strona po prostu go nie zapytała.

W Polsce zasadę zapisuje art. 399 ustawy Prawo komunikacji elektronicznej: przechowywanie informacji lub uzyskiwanie dostępu do informacji w urządzeniu końcowym jest dozwolone po uprzednim poinformowaniu użytkownika i wyrażeniu przez niego zgody, z wyjątkami dla transmisji i usług, które są do tego niezbędne. To polskie wdrożenie art. 5 ust. 3 dyrektywy ePrivacy.

Zasięg tego przepisu ustalają dwa źródła unijne. TSUE orzekł w sprawie Planet49 (C-673/17), że zaznaczone z góry pole nie jest ważną zgodą i że przepis stosuje się bez względu na to, czy przechowywana informacja jest daną osobową. Wytyczne EROD 2/2023 o technicznym zakresie art. 5 ust. 3 (wersja 2.0 przyjęta 7 października 2024) idą dalej: kod JavaScript, którym podmiot każe przeglądarce wysyłać asynchroniczne zapytania z informacjami, mieści się w zakresie przepisu. Wytyczne mają osobne części o pikselach śledzących i o śledzeniu wyłącznie po adresie IP.

Zdanie “nie ustawiamy cookies” nie zamyka więc sprawy. EROD przypomina też, że zastosowanie przepisu nie oznacza automatycznie obowiązku zgody, bo istnieją wyjątki. Czy któryś pasuje, to pytanie do prawnika. Czy zapytanie w ogóle wychodzi, to pytanie techniczne i na nie odpowiesz sam.

#Jak sprawdzić baner cookies w narzędziach deweloperskich

Chrome, Brave, Firefox i Edge działają tu tak samo.

  1. Otwórz nowy profil albo okno prywatne bez rozszerzeń. Blokery reklam ukrywają dokładnie te zapytania, których szukasz.
  2. Otwórz narzędzia deweloperskie przed wczytaniem strony. W zakładce Network zaznacz “Preserve log” i “Disable cache”.
  3. Wczytaj stronę główną i nie dotykaj banera. Zapisz każdą zewnętrzną domenę z listy. Przed wyborem nic opcjonalnego nie powinno się ładować.
  4. Kliknij “Odrzuć” i przejdź przez kartę produktu, stronę z filmem, kontakt i koszyk. Wycieki często siedzą w szablonach, których strona główna nie używa.
  5. Filtruj listę po fragmentach domen: google, gstatic, doubleclick, facebook, tiktok, youtube, hotjar, clarity, nazwa dostawcy czatu.
  6. W zakładce Application (Storage w Firefoksie) przejrzyj Cookies, Local storage i Session storage dla każdego źródła. Wszystko poza zapisem samej odmowy i funkcjonalnymi ciasteczkami sesji wymaga wyjaśnienia.
  7. Powtórz test z “Akceptuj”, żeby potwierdzić, że narzędzia działają, gdy są dozwolone.

Wynik zapisz w tabeli: domena, strona, przed wyborem, po odmowie, po akceptacji. Ta tabela to twoja lista poprawek.

#Co najczęściej przecieka po kliknięciu “Odrzuć”

ŹródłoJak wygląda w NetworkTypowa przyczyna
Osadzony YouTube lub Vimeoyoutube.com, ytimg.com, googlevideo.com przy wczytaniu stronyZwykły iframe w treści albo bloku motywu
Google Fontsfonts.googleapis.com i fonts.gstatic.comMotyw lub wtyczka pobiera fonty z Google zamiast z plików lokalnych
Widżet czatuSkrypt dostawcy i websocket na każdej podstronieKod wklejony w stopkę albo ustawienia motywu
Mapymaps.googleapis.com, kafelki mapyMapa sklepów lub mapa na stronie kontaktu
Piksele wpisane w motywconnect.facebook.net, analytics.tiktok.com, tagi Google AdsKod w polach nagłówka, poza systemem zgód
Tagi w menedżerze tagówTagi odpalają się w podglądzie GTM przy odmowieTagi bez ustawień zgody albo reguły “All Pages”

Google w pomocy YouTube o osadzaniu opisuje tryb rozszerzonej prywatności (youtube-nocookie.com) jako taki, w którym obejrzenie osadzonego filmu nie wpływa na personalizację YouTube u widza. Nie pisze, że odtwarzacz nic do Google nie wysyła, więc sama zmiana domeny nie jest poprawką.

Fonty to przypadek z wyrokiem. Sąd krajowy w Monachium (LG München I, 3 O 17493/20, 20 stycznia 2022) uznał, że przekazanie dynamicznego adresu IP odwiedzającego do Google przez Google Fonts bez zgody naruszyło jego prawa, nakazał zaprzestania i zasądził 100 euro zadośćuczynienia. Sąd wskazał, że Google Fonts można używać bez łączenia przeglądarki z serwerem Google. Jeden z komentujących trafnie opisał zakres tej poprawki:

Fonty na własnym serwerze zamykają to jedno zapytanie.

(u/More_Initiative_9099, r/shopify, 22 października 2026, tłumaczenie własne)

#Tryb zgody Google v2: co wysyła wersja podstawowa, a co zaawansowana

Jeśli po odmowie widzisz zapytania do Google Analytics, sprawdź najpierw, który tryb masz włączony. Opis trybu zgody Google rozróżnia dwa warianty:

  • Podstawowy: tagi Google są zablokowane do interakcji z banerem. Według Google przed zgodą nie wychodzą żadne dane, nawet domyślny stan zgody.
  • Zaawansowany: tagi ładują się od razu z domyślną odmową. Dopóki zgody nie ma, wysyłają stan zgody i pomiary bez plików cookie. Przy odmowie analytics_storage Google Analytics nie czyta ani nie zapisuje swoich cookies, ale pomiary nadal trafiają do domen Google Analytics “na potrzeby podstawowego pomiaru i modelowania”. Przy odmowie ad_storage zapytania idą przez inną domenę, żeby nie przesyłać wcześniej ustawionych ciasteczek reklamowych.

Tryb zaawansowany wysyła więc zapytania do Google po odmowie celowo. Czy to w porządku na twojej stronie, to właśnie pytanie o art. 399 PKE i art. 5 ust. 3, które rozstrzygasz z doradcą, a nie tagiem. W trybie podstawowym “Odrzuć” oznacza brak zapytań do Google.

Dwa błędy konfiguracji z instrukcji wdrożenia Google dają realne wycieki w obu trybach. Polecenie z domyślnym stanem zgody musi wykonać się przed config i event, inaczej tagi startują bez żadnego stanu. Jeśli baner ładuje się asynchronicznie, Google zaleca wait_for_update, żeby tagi poczekały na aktualizację z banera.

#Shopify: Customer Privacy API i piksele aplikacji

Dokumentacja pikseli Shopify mówi, że rozszerzenia pikseli aplikacji respektują Customer Privacy API, a w regionach wymagających zgody uruchamiają się dopiero po jej udzieleniu. Dlatego piksele aplikacji zachowują się dobrze. Kod w motywie nie dostaje tej ochrony.

Dla wszystkiego, co siedzi w motywie, użyj Customer Privacy API. Daje metody analyticsProcessingAllowed(), marketingAllowed() i preferencesProcessingAllowed() oraz zdarzenie visitorConsentCollected przy zmianie wyboru. Shopify zaznacza, że stan domyślny zależy od ustawień prywatności sklepu: w regionach ustawionych na wymóg zgody cele nieniezbędne są wyłączone do czasu zgody, w pozostałych wszystko jest dozwolone. Zacznij od tych ustawień, bo region zostawiony na domyślnym “zezwalaj” wygląda jak zepsuty baner.

Autor wątku pokazał wzorzec, który ładuje skrypt dostawcy tylko wtedy, gdy analyticsProcessingAllowed() zwraca true, przy wczytaniu i ponownie po visitorConsentCollected. Zauważył, że dokumentacja podaje wersję API 0.2, a w sprawdzanych przez niego motywach baner wczytał już 0.1. To jego obserwacja; aktualna dokumentacja pokazuje 0.2.

#WooCommerce i WordPress: gdzie szukać kodu poza banerem

Tu nie ma piaskownicy na poziomie platformy, więc blokada jest po twojej stronie. Wtyczka zgód blokuje tylko skrypty, o których wie. W październiku 2026 na r/woocommerce ktoś pytał o wybór wtyczki zgód, a rozmowa szybko zeszła na testowanie. Jedna z odpowiedzi wskazała dwie luki, których nie widać przy konfiguracji przez GTM:

Consent Mode rozmawia tylko z tagami Google. Twój piksel Meta nie czyta tych sygnałów. […] Nie każdy piksel siedzi w GTM. Wtyczki WooCommerce (Meta for WooCommerce, Google for WooCommerce i podobne) często wstawiają własny piksel prosto do strony. Podgląd GTM w ogóle ich nie pokaże.

(u/Bignose_boy, r/woocommerce, 12 października 2026, tłumaczenie własne)

Ten sam komentujący radzi: jeśli po akceptacji widzisz dwa zapytania do fbevents.js, piksel ładuje się dwa razy, raz z GTM i raz z wtyczki. Jeśli odmowa opróżnia koszyk, ciasteczko sesji koszyka trafiło do kategorii opcjonalnych, a powinno być wśród niezbędnych. Sprawdź trzy miejsca w kodzie: pola wstawiania kodu w nagłówku i stopce (motyw albo wtyczka do fragmentów kodu), wtyczki, które drukują własne tagi (opinie, czat, marketing), i osadzenia zapisane w treści wpisów. W headless to samo dotyczy głównego layoutu i komponentu analityki. Nasz poradnik dodawania Google Analytics 4 opisuje podłączenie tagów Google przez zgodę, a tekst o ograniczaniu skryptów zewnętrznych pokazuje, jak sprawdzić, co ładuje każdy skrypt.

#Jak naprawić każdy wyciek

  • Filmy i mapy: zamień iframe na zaślepkę ładowaną kliknięciem, czyli przycisk albo miniaturę, która tworzy iframe dopiero po kliknięciu lub po zgodzie. Miniaturę serwuj z własnego serwera, inaczej sama jest zapytaniem do obcej domeny.
  • Fonty: pobierz pliki, serwuj je z własnej domeny przez @font-face i usuń każde odwołanie do fonts.googleapis.com.
  • Czat: pokaż lokalny przycisk “Napisz do nas” i ładuj skrypt dostawcy po kliknięciu albo po zgodzie.
  • Piksele w motywie: przenieś je do menedżera tagów albo systemu pikseli platformy, żeby objęło je sprawdzenie zgody.
  • Menedżer tagów: ustaw wymagania zgody dla każdego tagu, uruchom polecenie domyślne jako pierwsze i testuj w podglądzie przy odmowie.

Potem powtórz test w narzędziach deweloperskich. Jeśli po odmowie lista zapytań pokazuje tylko twoją domenę i to, na co świadomie się zgodziłeś, baner mówi prawdę.

Jeśli chcesz, żeby ktoś to sprawdził za ciebie, nasz audyt zgodności WooCommerce z wymogami UE obejmuje test zgody na każdym szablonie, a bezpłatne sprawdzenie strony pokazuje zapytania do zewnętrznych domen dla publicznego adresu.

Następny krok

Przekuj artykuł w realne wdrożenie

Pod tym wpisem dokładam linki, które domykają intencję użytkownika i prowadzą dalej w strukturze serwisu.

Powiązany klaster

Sprawdź inne usługi WordPress i bazę wiedzy

Wzmocnij swój biznes dzięki profesjonalnemu wsparciu technicznemu w kluczowych obszarach ekosystemu WordPress.

Często zadawane pytania

Najważniejsze odpowiedzi, które pomagają wdrożyć temat w praktyce.

Czy zapytanie bez pliku cookie też wymaga zgody#
Może wymagać. Wytyczne EROD traktują kod JavaScript, który każe przeglądarce wysłać informacje, jako uzyskanie dostępu do urządzenia, a wyrok Planet49 mówi, że przepis działa niezależnie od tego, czy chodzi o dane osobowe. Czy pasuje któryś wyjątek, to ocena prawna dla twojego przypadku. Brak cookie nie wyłącza jednak przepisu.
Czy youtube-nocookie.com wystarczy, żeby YouTube nie śledził#
Nie. Google opisuje tryb rozszerzonej prywatności jako taki, w którym obejrzenie osadzonego filmu nie wpływa na personalizację YouTube u widza. Nie pisze, że osadzony odtwarzacz nie łączy się z Google. Zapytanie znika dopiero wtedy, gdy iframe powstaje po kliknięciu albo po zgodzie.
Dlaczego piksele aplikacji w Shopify działają poprawnie, a moje skrypty w motywie nie#
Rozszerzenia pikseli aplikacji działają w piaskownicy Shopify i same respektują Customer Privacy API. Skrypt wklejony do theme.liquid albo do sekcji działa poza piaskownicą, więc ładuje się przy każdym wejściu, dopóki nie owiniesz go sprawdzeniem analyticsProcessingAllowed() lub marketingAllowed().
Czy fonty na własnym serwerze rozwiązują problem z wyroku z Monachium#
W zakresie fontów tak: sąd uzasadnił, że Google Fonts da się używać bez łączenia przeglądarki z serwerem Google. Po zmianie sprawdź, czy żadna wtyczka, motyw ani osadzony element nie ładuje dalej fonts.googleapis.com albo fonts.gstatic.com.

Potrzebujesz FAQ dopasowanego do branży i rynku? Przygotujemy wersję pod Twoje cele biznesowe.

Porozmawiajmy

Polecane artykuły