# DataFirefly Cookie Consent: kompletny przewodnik

> Prezentacja DataFirefly Cookie Consent to wtyczka WordPressa i WooCommerce do zarządzania zgodą na pliki cookie. Łączy trzy elementy: baner zgody zgodny z RODO oraz wytycznymi CNIL i Garante, natywne emitowanie…

- Strona: <https://www.datafirefly.com/pl/documentation/datafirefly-cookie-consent-rgpd-consent-mode-v2/>
- Język: pl
- Zaktualizowano: 2026-07-29
- Inne języki: [fr](https://www.datafirefly.com/documentation/datafirefly-cookie-consent-rgpd-consent-mode-v2/index.md), [en](https://www.datafirefly.com/en/documentation/datafirefly-cookie-consent-rgpd-consent-mode-v2/index.md), [es](https://www.datafirefly.com/es/documentation/datafirefly-cookie-consent-rgpd-consent-mode-v2/index.md), [de](https://www.datafirefly.com/de/documentation/datafirefly-cookie-consent-rgpd-consent-mode-v2/index.md), [it](https://www.datafirefly.com/it/documentation/datafirefly-cookie-consent-rgpd-consent-mode-v2/index.md), [nl](https://www.datafirefly.com/nl/documentation/datafirefly-cookie-consent-rgpd-consent-mode-v2/index.md), [pt](https://www.datafirefly.com/pt/documentation/datafirefly-cookie-consent-rgpd-consent-mode-v2/index.md)
- Indeks: <https://www.datafirefly.com/pl/documentation/llms.txt>

## Prezentacja

DataFirefly Cookie Consent to wtyczka WordPressa i WooCommerce do zarządzania zgodą na pliki cookie. Łączy trzy elementy: baner zgody zgodny z RODO oraz wytycznymi CNIL i Garante, natywne emitowanie sygnałów Google Consent Mode v2 przed jakimkolwiek tagiem Google oraz audyt wykrywający trackery faktycznie ładowane na Twojej witrynie, z eksportowalnym dziennikiem dowodowym.

## Wymagania

- WordPress 6.2 lub nowszy
- PHP 8.0 lub nowszy
- WooCommerce 8.0+ (opcjonalnie, wtyczka działa też na samym WordPressie, zgodność z HPOS zadeklarowana)
- Zainstalowany już GTM albo GA4, jeśli chcesz korzystać z Consent Mode v2 (wtyczka nie instaluje tagów Google za Ciebie)

## Instalacja

1. Pobierz plik `df-cookie-consent.zip` ze swojego konta DataFirefly.
2. W administracji WordPressa przejdź do **Wtyczki → Dodaj nową → Wyślij wtyczkę na serwer**, wybierz ZIP i kliknij **Zainstaluj teraz**.
3. Kliknij **Włącz**. Przy aktywacji wtyczka tworzy tabelę dziennika `wp_dfcc_consent_log`, generuje losowy salt do hashowania adresów IP i planuje dwa zadania cron (dobowe czyszczenie dziennika i skan trackerów).
4. W pasku bocznym administracji pojawia się nowe menu **Cookie Consent** z czterema stronami: Panel, Ustawienia, Audyt i Dziennik.

Baner wyświetla się na froncie natychmiast, z ustawieniami domyślnymi (układ paska u dołu strony, jasny motyw, tryb opt-in, wszystkie 4 kategorie włączone).

## Konfiguracja banera

Wszystkie ustawienia znajdują się w **Cookie Consent → Ustawienia**.

### Zachowanie ogólne

- **Włącz baner**: globalny przełącznik wtyczki.
- **Tryb**: opt-in (obowiązkowy w UE, żadnych plików cookie innych niż niezbędne przed zgodą) albo opt-out.
- **Przycisk Odrzuć wszystko na pierwszym poziomie**: włączony domyślnie, zgodnie z rekomendacją CNIL z 17 września 2020. Nie wyłączaj go, jeśli Twoja publiczność jest europejska.
- **Czas życia ciasteczka zgody**: domyślnie 180 dni. Wybór użytkownika przechowywany jest w ciasteczku `dfcc_consent` (zakodowanym, first-party).
- **Wersja polityki**: zwiększaj ten numer, gdy Twoja polityka cookies zmienia się istotnie: baner zostanie automatycznie ponownie pokazany wszystkim odwiedzającym, a dziennik zapisze nową wersję.

### Wygląd

- **Układ**: pasek na pełną szerokość, karta w rogu albo wyśrodkowany modal.
- **Pozycja**: góra albo dół strony (dla układów paska i karty).
- **Motyw**: jasny, ciemny albo automatyczny (podąża za preferencją systemową odwiedzającego przez prefers-color-scheme).
- **Kolor akcentu**: personalizuje kolor głównego przycisku.

Na urządzeniach mobilnych (poniżej 640 px) baner automatycznie przechodzi na pełny ekran, aby pozostać czytelnym. Animacje respektują prefers-reduced-motion.

### Kategorie plików cookie

Wstępnie skonfigurowane są cztery kategorie, każda z edytowalną etykietą i opisem:

- **Niezbędne** (necessary): zawsze aktywne, niewyłączalne przez odwiedzającego: koszyk, sesja, bezpieczeństwo.
- **Funkcjonalne** (functional): preferencje, język, czat.
- **Pomiar ruchu** (analytics): Google Analytics, Matomo i inne.
- **Reklama spersonalizowana** (marketing): Google Ads, Meta Pixel, remarketing.

### Teksty i linki

Tytuł banera, tekst wprowadzający i etykiety czterech przycisków (Zaakceptuj wszystko, Odrzuć wszystko, Dostosuj, Zapisz moje wybory) są edytowalne w ustawieniach. Uzupełnij też adresy swojej polityki prywatności i polityki cookies: wyświetlają się jako dyskretne linki pod przyciskami. Wszystkie teksty przechodzą przez funkcje tłumaczeń WordPressa: wtyczka dostarczana jest z 5 katalogami (FR, EN, ES, DE, IT) i pozostaje nadpisywalna przez Loco Translate.

## Google Consent Mode v2

To techniczne serce wtyczki. Od marca 2024 Google wymaga, aby witryny europejskie emitowały 7 sygnałów Consent Mode v2, żeby dalej mierzyć konwersje Google Ads i budować grupy odbiorców w GA4.

### Działanie

Wtyczka drukuje blok `gtag('consent', 'default', ...)` w sekcji head HTML z priorytetem 1 w wp_head, czyli przed jakimkolwiek kontenerem GTM albo tagiem GA4 ładowanym standardowo. Emitowane 7 sygnałów:

- `ad_storage`, `ad_user_data`, `ad_personalization`: sterowane kategorią Reklama spersonalizowana
- `analytics_storage`: sterowany kategorią Pomiar ruchu
- `functionality_storage`, `personalization_storage`: sterowane kategorią Funkcjonalne
- `security_storage`: zawsze granted (rekomendacja Google)

Mapowanie kategorii na sygnały jest automatyczne: żadne ręczne ustawianie nie jest potrzebne. Gdy odwiedzający dokona wyboru, natychmiast emitowany jest `gtag('consent', 'update', ...)`, a wybór jest ponownie stosowany jako stan domyślny na każdej kolejnej stronie.

### Ustawienia Consent Mode

- **Region EOG**: domyślnie ścisłe deny stosuje się wyłącznie do 31 krajów EOG (plus Wielka Brytania i Szwajcaria) przez parametr region w gtag, reszta świata pozostaje w granted. Natywne wykrywanie Cloudflare przez nagłówek CF-IPCountry.
- **url_passthrough**: włączone domyślnie. Zachowuje identyfikatory kliknięć gclid i dclid w adresach URL nawet przy odmowie, co pozwala mierzyć konwersje bez plików cookie.
- **ads_data_redaction**: włączone domyślnie. Cenzuruje dane użytkownika wysyłane do Google, gdy ad_storage jest denied.
- **wait_for_update**: domyślnie 500 ms. Czas dany tagom Google na oczekiwanie na aktualizację zgody.

### Sprawdzenie, czy wszystko działa

1. Otwórz swoją witrynę w trybie prywatnym, otwórz konsolę przeglądarki i wpisz `dataLayer`: musisz zobaczyć wpis consent default przed wpisem gtm.js.
2. W Google Tag Assistant albo w trybie Preview w GTM zakładka Consent musi pokazywać 7 sygnałów wraz z ich stanem.
3. Zaakceptuj baner i wpisz ponownie `dataLayer`: musi pojawić się wpis consent update z nowymi stanami.

## Audyt zgodności

Strona **Cookie Consent → Audyt** uruchamia skan, który pobiera Twoją stronę główną i analizuje faktycznie serwowany HTML.

### Co wykrywa skan

- **23 znane trackery**: Google Analytics 4, GTM, Meta Pixel, TikTok, LinkedIn, Pinterest, Snapchat, Twitter/X, Bing UET, Matomo, Microsoft Clarity, Hotjar, Mixpanel, Plausible, HubSpot, Intercom, Crisp, Tawk, YouTube, Vimeo, Stripe i inne, każdy przypisany do oczekiwanej kategorii zgody.
- **11 ryzykownych wtyczek WordPressa**: MonsterInsights, Site Kit, PixelYourSite, Facebook/Pinterest/TikTok for WooCommerce, HubSpot, MC4WP i inne wtyczki wstrzykujące trackery po swojej stronie.
- **Pliki cookie ustawiane po stronie serwera**: zrzut z automatyczną identyfikacją dostawcy (_ga, _fbp, _gcl i podobne).

### Wynik i rekomendacje

Skan generuje wynik zgodności od 0 do 100, oparty na rozbieżności między zadeklarowanymi kategoriami a faktycznie wykrytymi trackerami. Problemy klasyfikowane są na trzech poziomach: critical, warning, info, każdy z możliwą do wdrożenia rekomendacją (na przykład: wykryty tracker marketingowy przy kategorii wyłączonej w banerze). Automatyczny skan działa też w tle przez cron `dfcc_cron_scan_trackers`.

## Dziennik zgód

Strona **Cookie Consent → Dziennik** wypisuje każde zdarzenie zgody zapisane w dedykowanej tabeli `wp_dfcc_consent_log`.

### Zapisywane dane

- Znacznik czasu UTC, trwały anonimowy UID (śledzenie wielu zdarzeń tego samego odwiedzającego)
- Typ zdarzenia: accept_all, reject_all, custom, withdraw
- Pełny stan per kategoria, wersja polityki i banera
- Podwójnie chroniony adres IP: hash SHA-256 z losowym saltem wygenerowanym przy aktywacji (nieodwracalny) plus IP skrócone do /24 (IPv4) albo /64 (IPv6) na potrzeby anonimowej analizy
- User agent, adres strony, referer, region, język, user_id WordPressa jeśli zalogowany

### Filtry i eksport

Filtruj po okresie, typie zdarzenia albo UID, a następnie eksportuj do CSV (BOM UTF-8, separator średnika, otwiera się wprost we francuskim Excelu) albo do JSON pretty. Te eksporty stanowią Twój dowód zgody w razie kontroli CNIL albo Garante.

### Retencja

Domyślnie dziennik przechowywany jest 1825 dni (5 lat, okres zalecany przez CNIL). Automatyczne czyszczenie działa każdej nocy przez cron `dfcc_cron_purge_logs`. Retencję można ustawić w ustawieniach. Uwaga: wyłączenie wtyczki zachowuje logi (dowód zgody); tylko pełna deinstalacja przez Wtyczki → Usuń czyści tabelę, opcje i crony.

## Link „Zarządzaj plikami cookie" w stopce

Przepisy wymagają, aby odwiedzający mógł w każdej chwili zmienić swój wybór. Dwie opcje:

- **Shortcode**: umieść `` w widżecie albo w menu stopki, generuje link ponownie otwierający modal personalizacji.
- **API JavaScript**: wywołaj `window.dfcc.open()` z dowolnego elementu swojego motywu.

## API dla deweloperów

### API JavaScript

Globalny obiekt `window.dfcc` udostępnia:

- `dfcc.open()`: otwiera modal personalizacji
- `dfcc.accept()`: akceptuje wszystkie kategorie
- `dfcc.reject()`: odrzuca wszystkie kategorie opcjonalne
- `dfcc.withdraw()`: wycofuje zgodę (zdarzenie withdraw trafia do dziennika)
- `dfcc.getConsent()`: zwraca pełny stan zgody
- `dfcc.hasConsent('analytics')`: sprawdza daną kategorię (przydatne do warunkowania własnych skryptów)

### Endpoint REST

Endpoint POST dostępny jest pod `wp-json/dfcc/v1/consent` i pozwala zapisać zdarzenie zgody z Twojego własnego kodu (chroniony przez nonce).

### Hooki WordPressa

- `dfcc_before_banner_render`: akcja wyzwalana przed renderowaniem banera (na przykład do ukrycia go na wybranych stronach)
- `dfcc_after_consent_logged`: akcja wyzwalana po każdym zapisie do dziennika (na przykład do synchronizacji z CRM)
- `dfcc_consent_mode_defaults`: filtr na stany domyślne 7 sygnałów Consent Mode
- `dfcc_scan_trackers_patterns`: filtr do dodania własnych wzorców wykrywania do skanera

## Rozwiązywanie problemów

- **Sygnały Consent Mode nie pojawiają się przed GTM**: sprawdź, czy żadna wtyczka wydajnościowa nie przenosi ani nie odracza skryptów z sekcji head. Blok dfcc-consent-mode-default musi pozostać inline i nieodroczony.
- **Baner pojawia się przy każdej wizycie**: sprawdź, czy system cache nie serwuje zamrożonej strony ze starym ciasteczkiem oraz czy czas życia ciasteczka nie wynosi 0.
- **Skan audytu się nie udaje**: serwer musi móc wykonać żądanie HTTP do własnej strony głównej. Na niektórych hostingach z zablokowanym loopbackiem zezwól na żądania lokalne albo sprawdź zaporę.
- **Zapisane adresy IP to adresy Cloudflare**: wtyczka czyta w pierwszej kolejności CF-Connecting-IP; jeśli problem się utrzymuje, sprawdź, czy konfiguracja serwera prawidłowo przekazuje nagłówki Cloudflare.
