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.
Art. 399 PKE i art. 5 ust. 3 dyrektywy ePrivacy: nie tylko pliki cookie
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.
- Otwórz nowy profil albo okno prywatne bez rozszerzeń. Blokery reklam ukrywają dokładnie te zapytania, których szukasz.
- Otwórz narzędzia deweloperskie przed wczytaniem strony. W zakładce Network zaznacz “Preserve log” i “Disable cache”.
- Wczytaj stronę główną i nie dotykaj banera. Zapisz każdą zewnętrzną domenę z listy. Przed wyborem nic opcjonalnego nie powinno się ładować.
- 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.
- Filtruj listę po fragmentach domen:
google,gstatic,doubleclick,facebook,tiktok,youtube,hotjar,clarity, nazwa dostawcy czatu. - 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.
- 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ło | Jak wygląda w Network | Typowa przyczyna |
|---|---|---|
| Osadzony YouTube lub Vimeo | youtube.com, ytimg.com, googlevideo.com przy wczytaniu strony | Zwykły iframe w treści albo bloku motywu |
| Google Fonts | fonts.googleapis.com i fonts.gstatic.com | Motyw lub wtyczka pobiera fonty z Google zamiast z plików lokalnych |
| Widżet czatu | Skrypt dostawcy i websocket na każdej podstronie | Kod wklejony w stopkę albo ustawienia motywu |
| Mapy | maps.googleapis.com, kafelki mapy | Mapa sklepów lub mapa na stronie kontaktu |
| Piksele wpisane w motyw | connect.facebook.net, analytics.tiktok.com, tagi Google Ads | Kod w polach nagłówka, poza systemem zgód |
| Tagi w menedżerze tagów | Tagi odpalają się w podglądzie GTM przy odmowie | Tagi 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_storageGoogle Analytics nie czyta ani nie zapisuje swoich cookies, ale pomiary nadal trafiają do domen Google Analytics “na potrzeby podstawowego pomiaru i modelowania”. Przy odmowiead_storagezapytania 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-facei 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.






