GDPR i storage
Częstotliwość popupów wymaga przechowywania gdzieś stanu “już widziałem ten popup” na maszynie odwiedzającego. To potencjalnie regulowane przez ePrivacy / GDPR/RODO zależnie od jurysdykcji i tego jak agresywny chce być sklep. Plugin oferuje trzy tryby i fallback do sesji PHP, żeby dopasować się do twojej polityki prawnej.
Tryb wybiera się w Settings → Plugins → P2Lab Stage → Popup → Dismiss persistence (GDPR), per kanał sprzedaży.
Trzy tryby
Dział zatytułowany „Trzy tryby”Wait for cookie acceptance (consent) — domyślny
Dział zatytułowany „Wait for cookie acceptance (consent) — domyślny”Plugin nie dotyka sessionStorage / localStorage / cookies do momentu zaakceptowania cookies przez odwiedzającego przez twojego consent managera. Do czasu zgody suppression żyje w sesji PHP (server-side).
Efekt dla odwiedzających, którzy nie wyrażają zgody:
- Frequency = Session — działa w pełni, suppression żyje w sesji PHP.
- Frequency = Every N days — degraduje się do session-only suppression (sesja PHP wygasa gdy przeglądarka się zamyka, brak localStorage do pamiętania N dni).
- Frequency = Permanent — degraduje się do session-only suppression z tego samego powodu.
Efekt dla odwiedzających, którzy wyrażają zgodę:
- Stan suppression jest migrowany z sesji PHP do
localStorage/sessionStorage. - Wszystkie tryby częstotliwości działają zgodnie z dokumentacją.
Plugin nasłuchuje zmian zgody na zdarzeniach cookieAcceptedAndCacheable (standardowe zdarzenie cookie-consent Shopware), więc zaakceptowanie cookies w trakcie wizyty zaczyna działać natychmiast.
Use browser storage (storage)
Dział zatytułowany „Use browser storage (storage)”Plugin zapisuje do sessionStorage i localStorage natychmiast, bez bramki zgody.
Kiedy wybrać: jeśli twoja polityka prawna traktuje te magazyny jako wyłączone — typowo gdy suppression częstotliwości jest uznawane za cel “strictly necessary” / “functional”, np. zapobieganie temu, że ten sam modal denerwuje odwiedzającego na każdej stronie. Potwierdź ze swoim zespołem prawnym.
Efekt: wszystkie tryby częstotliwości działają zgodnie z dokumentacją dla każdego odwiedzającego.
Use cookies (cookie)
Dział zatytułowany „Use cookies (cookie)”Tak samo jak tryb storage, ale używa faktycznych cookies HTTP jako backing store. Niektóre frameworki prawne traktują cookies inaczej niż localStorage; niektóre blokują strictly first-party functional cookies, inne nie.
Kiedy wybrać: w sklepach, gdzie polityka prawna explicite wycina cookies pod ten cel, albo w środowiskach, gdzie localStorage jest niewiarygodny (legacy browsery, embedded konteksty).
Klucze przechowywania
Dział zatytułowany „Klucze przechowywania”Przy zapisie client-side:
sessionStorage— prefixp2lab-stage-. Plain flaga<popupId> → dismissed.localStorage— prefixp2lab-stage-. Zawiera timestamp expiry dla częstotliwościdays, bez expiry dlapermanent.- Licznik sesji —
p2lab-stage:shown-countśledzi distinct-popup count per sesja dla queue display mode cap.
Przy zapisie server-side (sesja PHP): tablica pod custom kluczem sesji.
Fallback sesji PHP
Dział zatytułowany „Fallback sesji PHP”Sesja PHP to zawsze-on backing store. Plugin używa jej bezwarunkowo do:
- Trackowania, które popupy zostały server-dismissed podczas tej sesji.
- Rejestrowania odrzucenia, gdy client storage jest zablokowany (brak zgody) albo niedostępny (private browsing wyłączające localStorage).
Fallback oznacza, że odwiedzający, którzy odrzucają cookies, nadal nie widzą tego samego popupu pięć razy w jednej sesji — serwerowa sesja zapewnia, że częstotliwość sesyjna działa niezależnie od trybu GDPR.
Trade-off: stan server-side ginie, gdy sesja PHP wygasa (typowo gdy przeglądarka się zamyka), więc częstotliwości dłuższe niż sesja (days, permanent) degradują się dla odwiedzających, którzy nigdy nie wyrażają zgody.
Migracja przy zmianie zgody
Dział zatytułowany „Migracja przy zmianie zgody”Gdy gdprMode = consent i odwiedzający akceptuje cookies po odrzuceniu popupu:
- Klient łapie zdarzenie
cookieAcceptedAndCacheable. - Wywołuje
GET /p2lab-stage/dismissed, żeby pobrać każde ID popupu obecnie zsuppresowane w sesji PHP. - Migruje je do
sessionStorage/localStorage(z semantyką expiry oryginalnego typu częstotliwości).
Po tej migracji sesja PHP nie musi już nosić suppression — zostaje jako redundantny backup, ale client storage jest teraz autorytatywny.
Co jest rejestrowane vs nie
Dział zatytułowany „Co jest rejestrowane vs nie”Stan odrzucenia to jedyne trwałe przechowywanie, którego pluginowi należy:
- Jeden wpis per popup, który odwiedzający odrzucił, z typem częstotliwości + (opcjonalnie) expiry.
- Licznik distinct-popup-shown dla limitu per-sesja.
Plugin nie przechowuje tożsamości odwiedzającego, danych osobowych ani zachowania poza tymi odrzuceniami. Eventy statystyk (impression / CTA-click / close / permanent_dismiss) są rejestrowane server-side w p2lab_stage_event i mogą zawierać customer ID jeśli odwiedzający był zalogowany — zobacz Analityka → Eventy.
Pattern cookie bannera
Dział zatytułowany „Pattern cookie bannera”Częste użycie to sam cookie banner: popup z częstotliwością Always show (żeby pokazywał się do potwierdzenia) + button z Click action = Don’t show again, który rejestruje event permanent_dismiss i zapisuje flagę permanent.
Dla tego patternu wybierz GDPR mode = Use browser storage albo Use cookies, żeby odrzucenie utrzymywało się poza sesją — inaczej odwiedzający widzi banner za każdym razem gdy otworzy przeglądarkę, co psuje jego cel.
Gdzie dalej
Dział zatytułowany „Gdzie dalej”- Targetowanie → Częstotliwość — jak każda częstotliwość interaguje ze storage.
- Storefront → Jak renderują się sceny — endpointy resolve / dismiss.
- Analityka → Eventy — co jest rejestrowane server-side niezależnie od trybu GDPR.