Fundusze Europejskie Województwo Łódzkie Unia Europejska
WooCommerce

Consent Mode v2 bez utraty wizyt, które zgodę dały

W skrócie

Odmowy zgody nie da się cofnąć i żadna metoda first-party tego nie zmieni. Zbieranie danych first-party rozwiązuje odwrotny problem: większość wdrożeń traci również tych, którzy zgodę dali, bo przy pierwszej wizycie z reklamy ciasteczka zgody jeszcze nie ma w chwili, gdy serwer je sprawdza — a to właśnie ta wizyta niesie ad id.

Do dotychczasowych sygnałów doszły dwa nowe: ad_user_data i ad_personalization. Dokumentacja Google mówi, że dla ruchu z Europejskiego Obszaru Gospodarczego trzeba zebrać zgodę na wykorzystanie danych osobowych i przekazać te sygnały, a strony z własnym banerem muszą go zaktualizować, żeby je wysyłał. Bez tych sygnałów tracisz możliwość personalizacji reklam.

To wymóg dotyczący tego, co mówisz Google. Nie mówi nic o tym, co wolno ci zapisywać na własnej infrastrukturze — to osobne pytanie z osobną odpowiedzią, a mylenie jednego z drugim to najprostszy sposób, żeby projekt pomiarowy nabawił się ryzyka prawnego, którego wcale nie musiał mieć.

Co możesz zmierzyć po odmowie

Nic o tym odwiedzającym. Żadnego punktu styku, żadnej ścieżki, żadnej atrybucji.

Warto powiedzieć to wprost, bo rynek wokół tego tematu wprost nie mówi. Odwiedzający, który odrzucił kategorię reklamową, odrzucił ją — i nie ma sztuczki first-party, która zamieni odmowę w legalny zapis. Każdy dostawca obiecujący odzyskanie tych konwersji sprzedaje albo niezrozumienie przepisów, albo ryzyko prawne z dashboardem w komplecie.

Podejście first-party zmienia coś innego — nie tracisz odwiedzających, którzy zgodę dali. Większość wdrożeń traci ich sporą część, i to z powodów, które z prawem nie mają nic wspólnego.

Luka, przez którą tracisz wizyty ze zgodą

Tak wygląda ta awaria — w konfiguracjach server-side niemal powszechna.

Odwiedzający wchodzi z reklamy. W adresie jest utm_content, gclid, cokolwiek dokłada tam twoje tagowanie. Pojawia się baner zgody. W tej chwili ciasteczka zgody jeszcze nie ma — pytanie zostało zadane i nie ma na nie odpowiedzi.

Zbieranie po stronie serwera dzieje się wcześnie w obsłudze żądania. Sprawdza zgodę, nie znajduje jej i słusznie odpuszcza. Odwiedzający akceptuje baner. Ale żądanie, które niosło parametry kampanii, już się skończyło, a kolejna odsłona ma czysty adres.

Wizyta, która nazwała kampanię, przepadła — mimo że zgoda była.

Lekarstwem nie jest więcej kodu po stronie serwera. Wystarczy mały listener w przeglądarce, który odpala się przy akceptacji i wysyła parametry — wciąż obecne w pasku adresu — do endpointu zapisującego je już z potwierdzoną zgodą. W naszej wtyczce tym endpointem jest loyalz_tp_capture, zarejestrowany zarówno dla zalogowanych, jak i niezalogowanych — i to jest ten istotny szczegół, bo przy pierwszej wizycie zalogowany jest prawie nikt.

Wdrożenie server-side bez tego traci pierwszy punkt styku przy każdej wizycie z reklamy, na którą była zgoda. A pierwszy punkt styku to ten, który niesie ad id.

PoleŹródłoPo co jest
ad_idutm_contentWiąże wizytę z konkretną kreacją, nie tylko z kampanią
utm_*URLSource, medium, campaign, term
gclid, fbclid, ttclid, msclkidURLIdentyfikatory kliknięć z Google, Meta, TikTok i Microsoft
referrer, landing_urlŻądanieTylko host i ścieżka, bez query stringa
tsSerwerISO-8601, UTC

Zapisywane w ciasteczku first-party z flagami httponly, secure i SameSite=Lax, które mieści najwyżej 20 punktów styku przez 90 dni, a przy składaniu zamówienia przechodzi na to zamówienie.

Dwie własności warto oddzielić od marketingu tej kategorii. Identyfikator odwiedzającego to 128 bitów z random_bytes — nie jest hashem adresu e-mail, adresu IP ani odcisku urządzenia, więc identyfikuje przeglądarkę i nic poza tym. A zdarzenie lejka ma dwie bramki: nie ma zgody — nie ma zdarzenia; nie ma wcześniejszego identyfikatora — też nie ma zdarzenia. Odwiedzający, którego nigdy nie śledzono, bo nie wyraził zgody, nie dostaje wstecznie lejka w chwili, gdy wrzuca coś do koszyka.

Ruch bez oznaczeń kampanijnych też jest klasyfikowany — direct, organic albo referral, na podstawie referrera — więc te kanały pojawiają się w ścieżce, zamiast zostawiać pustkę. Nawigacja wewnętrzna jest pomijana, żeby zwykłe przeglądanie sklepu nie wyprodukowało dwudziestu punktów styku z samych odsłon.

W naszym własnym wdrożeniu jest decyzja, którą lepiej pokazać, niż zakopać, bo każde wdrożenie w tej kategorii podejmuje jakąś jej wersję.

Gdy odwiedzający wysyła miękką konwersję — zapis na newsletter, formularz kontaktowy — wtyczka traktuje to jako zgodę i tworzy identyfikator, nawet jeśli z banera nie przyszedł żaden sygnał. Uzasadnienie jest takie, że ktoś, kto zostawia adres e-mail, zaangażował się świadomie.

To uzasadnienie nie jest oczywiście błędne ani oczywiście słuszne. Kto zapisuje się na newsletter, zgodził się na newsletter. Czy jest to zarazem zgoda na pomiar reklamowy, to osobne pytanie — zależy od tego, co naprawdę mówi twój baner i polityka prywatności, i jest to pytanie do twojego prawnika, a nie do autora wtyczki ani do tego artykułu.

Piszemy o tym, bo alternatywa — tekst o zgodach przedstawiający własne wdrożenie jako sprawę zamkniętą — czyta się dobrze do chwili, w której ktoś zajrzy do kodu. Jeśli prowadzisz jakiekolwiek zbieranie first-party za bramką zgody, znajdź u siebie odpowiednik tej decyzji. Na pewno tam jest.

O tym, co psuje się w WooCommerce niezależnie od zgód, piszemy w tekście dlaczego śledzenie konwersji się psuje i jak je sprawdzić, a cały zestaw powiązanych tekstów zebraliśmy pod hasłem pomiar dla WooCommerce.

Częste pytania

Czy mogę śledzić użytkowników, którzy odmówili zgody?

Nie. Nie ma dla nich punktu styku, ścieżki ani atrybucji — i to jest poprawny wynik, a nie ograniczenie, które trzeba obejść. Sufit pomiaru w każdej konfiguracji wyznacza udział ruchu ze zgodą, a jedyna dźwignia, która nim rusza, to projekt banera.

Czy śledzenie server-side omija wymogi zgody?

Nie. To, gdzie wykonuje się kod, nie ma wpływu na to, czy masz podstawę prawną, żeby coś zapisać. Zbieranie po stronie serwera rozwiązuje problemy z niezawodnością — blokery, porzucone odsłony, zepsute skrypty — a nie problemy ze zgodami. Każdą ofertę, która zaciera tę różnicę, warto przeczytać dwa razy.

Czym jest luka czasowa przy zgodzie?

Przy pierwszej wizycie z reklamy baner nie ma jeszcze odpowiedzi, więc sprawdzenie po stronie serwera nie znajduje zgody i słusznie pomija zapis. Zanim odwiedzający zaakceptuje, żądanie niosące parametry kampanii już się skończyło. Bez listenera, który po akceptacji wyśle te parametry jeszcze raz, każda pierwsza wizyta ze zgodą traci punkt styku wskazujący reklamę.

Czy identyfikator odwiedzającego first-party to dane osobowe?

To zależy od tego, z czego jest wyprowadzony i z czym go łączysz — dlatego sposób jego powstania ma znaczenie. Nasz to 128 losowych bitów, nie hash e-maila ani IP, więc sam z siebie identyfikuje przeglądarkę. Czy identyfikator w twojej konfiguracji ma tę samą własność, warto sprawdzić, a nie zakładać.

PS

Paweł Strzelecki

Head of Growth, Loyalz · mechaniki pozyskania i retencji

Zobacz to na swoich danych

Loyalz łączy wydatki reklamowe z rozliczonymi pozycjami zamówień, więc POAS jest kolumną, a nie arkuszem, który co miesiąc składasz od nowa.

Umów demo