Tryb zgody Google na WordPressie bez płatnej wtyczki

Klient chce mierzyć ruch i puszczać reklamy. Prawo mówi, że przed zgodą na urządzeniu odwiedzającego nie wolno zapisać niczego, co nie jest niezbędne do działania strony. Wtyczka, która ma to pogodzić, w wersji bezpłatnej postawi baner i na tym skończy, a obsługę trybu zgody schowa w pakiecie za kilkadziesiąt dolarów rocznie.

Da się to zrobić inaczej i nie jest to obejście przepisu. Wystarczy przenieść sterowanie tagami tam, gdzie jest bezpłatne.

Na czym polega pułapka

Popularne wtyczki do zgód mają kreator, który generuje fragmenty kodu do wstawienia na stronę. W jednym z nich, przy okazji ostatniego wdrożenia, wyszła rzecz, której nie widać w cenniku: pole na kod kontenera Menedżera tagów jest dostępne bez licencji, a osobna opcja opisana jako obsługa trybu zgody wymaga płatnego pakietu.

Wniosek jest praktyczny. Jeśli spróbujesz sterować zgodami po stronie wtyczki, zapłacisz. Jeśli wstawisz kontener i zgodami pokieruje Menedżer tagów, nie zapłacisz nic, bo tryb zgody jest tam wbudowany.

Druga rzecz, która potrafi zaskoczyć: wersja bezpłatna wtyczki często w ogóle nie wstawia kontenera na stronę. Pole w kreatorze jest, kod się generuje, a na stronie go nie ma. Trzeba go wstawić samodzielnie, przez sekcję do wklejania własnych skryptów, i przypisać do kategorii funkcjonalnej albo statystycznej, zależnie od tego, jak opisujesz kontener w polityce.

Jak to poskładać

Kolejność ma znaczenie, bo stan domyślny musi być ustawiony, zanim cokolwiek zdąży się załadować.

Krok pierwszy: stan domyślny w kontenerze. W Menedżerze tagów ustaw domyślny stan zgody na odmowę dla wszystkich kategorii, z zasięgiem na wszystkie regiony (opis mechanizmu jest w dokumentacji Google dla trybu zgody). To znaczy, że dopóki nikt nie powie inaczej, narzędzia Google działają w trybie ograniczonym: wysyłają sygnał bez identyfikatorów i nie zapisują ciasteczek.

Krok drugi: aktualizacja stanu po decyzji. Wtyczka po kliknięciu w baner zapisuje decyzję i zwykle wysyła zdarzenie do warstwy danych albo zapisuje wartość w pamięci przeglądarki. To jest sygnał, na który czeka kontener: w regule wyzwalającej nasłuchujesz tego zdarzenia i podnosisz zgodę do stanu udzielonej.

Krok trzeci: bramka na tagi, które nie należą do Google. I tu jest gotcha, na którą trzeba uważać, bo kosztowała mnie ładnych parę godzin.

Ustawienie zgody w Menedżerze nie zatrzyma taga spoza Google

W Menedżerze tagów przy każdym tagu można ustawić dodatkowe warunki zgody. Wygląda to na uniwersalny bezpiecznik i przy tagach Google faktycznie nim jest. Przy tagach zewnętrznych, na przykład pikselu serwisu społecznościowego, mechanizm zachowuje się inaczej, niż podpowiada nazwa.

Stan domyślny idzie z Twojego własnego fragmentu kodu na stronie. Menedżer przetwarza wpis o zmianie zgody dopiero po tym, jak oceni tagi z tej samej odsłony. Stanu, o którym nic nie wie, nie traktuje jak odmowy. Efekt jest taki, że tag zewnętrzny z ustawionym warunkiem zgody i tak się wykonuje przy pierwszym wejściu.

Rozwiązanie, które działa: bramka w kodzie samego taga. Zamiast polegać na ustawieniu w panelu, tag sprawdza zapisaną decyzję sam i jeśli jej nie ma, nie robi nic. Wtedy nie ma znaczenia, jak Menedżer poukłada sobie kolejność.

Dodatkowa korzyść jest taka, że ten sam tag działa poprawnie także tam, gdzie nie masz dostępu do banera, na przykład w zewnętrznym systemie rezerwacji podpiętym pod tę samą domenę.

Fonty, o których się zapomina

Zgoda dotyczy nie tylko pomiaru. Krój pisma wczytywany z obcego serwera wysyła tam adres IP odwiedzającego, zanim ten zdąży kliknąć cokolwiek. Przy stronie, która deklaruje, że przed zgodą nic nie wychodzi na zewnątrz, to jest dziura w deklaracji.

Przeniesienie krojów na własny serwer zamyka temat i zwykle poprawia szybkość, bo znika osobne odpytanie serwera nazw i nawiązanie połączenia z obcym hostem. W bibliotece plików WordPressa pliki krojów bywają odrzucane, więc trzeba wgrać je przez menedżer krojów w motywie albo bezpośrednio na serwer.

Jak sprawdzić, czy to działa

To jest część, którą najczęściej się pomija, a ona decyduje, czy masz zgodność, czy tylko wrażenie zgodności.

Europejska Rada Ochrony Danych w wytycznych 05/2020 o zgodzie przypomina, że zgoda ma być dobrowolna i konkretna, a odmowa równie łatwa jak akceptacja. Warto to zestawić z tym, co strona faktycznie robi.

Otwórz stronę w oknie prywatnym z otwartymi narzędziami deweloperskimi i przed kliknięciem czegokolwiek sprawdź dwie rzeczy:

  • w zakładce Sieć: czy leci żądanie do domeny zbierającej pomiar i jaką ma wartość parametru zapisującego stan zgody. G100 znaczy obie zgody odrzucone, G111 obie udzielone. Przed kliknięciem chcesz zobaczyć G100;
  • w zakładce Aplikacja: czy w ciasteczkach są już identyfikatory pomiaru albo reklam. Przed zgodą nie powinno ich być.

Potem kliknij akceptację i powtórz oba sprawdzenia. Teraz powinno być G111 i komplet ciasteczek. Jeśli obraz przed zgodą i po zgodzie wygląda tak samo, coś jest nie tak, niezależnie od tego, co pokazuje panel wtyczki.

Warto to sprawdzić na obu adresach, jeśli masz stronę i osobny system pod tą samą marką. Baner z jednego miejsca zwykle nie steruje tym, co dzieje się w drugim.

Kiedy to nie ma sensu

Trzy sytuacje, w których odradzam zabawę w konfigurację i mówię to przed wyceną.

Nie prowadzisz i nie zamierzasz prowadzić reklam. Jeśli mierzysz tylko ruch dla własnej orientacji, prościej jest w ogóle nie ładować pomiaru przed zgodą. Mniej ruchomych części, mniej rzeczy do zepsucia.

Strona ma kilkadziesiąt wejść miesięcznie. Przy takiej skali modelowanie ruchu osób bez zgody nie ma z czego liczyć, a wnioski z raportów i tak będą przypadkowe. Najpierw ruch, potem precyzja pomiaru.

Nie masz dostępu do wszystkich miejsc, w których siedzą tagi. Jeśli część pomiaru wisi w systemie, do którego nie masz panelu, samo poprawienie strony głównej daje zgodność połowiczną. Lepiej najpierw ustalić, kto ma dostęp do czego.

Podsumowanie

Płatny pakiet we wtyczce do zgód kupujesz najczęściej za wygodę, nie za zgodność z prawem. Kontener Menedżera tagów obsługuje tryb zgody bez dopłaty, więc jeśli i tak masz go na stronie, sterowanie zgodami możesz przenieść tam.

Dwie rzeczy, o których łatwo zapomnieć: tagi spoza Google potrzebują bramki w swoim własnym kodzie, a kroje pisma z obcego serwera wysyłają dane, zanim ktokolwiek cokolwiek kliknie. I najważniejsze na koniec: dopóki nie porównasz listy żądań przed zgodą i po zgodzie, nie wiesz, w jakim stanie jest Twoja strona. Panel wtyczki tego nie powie.

Najczęstsze pytania

Sam tryb zgody nie jest wymogiem prawnym, tylko sposobem, w jaki narzędzia Google reagują na decyzję odwiedzającego. Wymogiem jest to, żeby przed zgodą nie zapisywać na urządzeniu niczego poza tym, co niezbędne do działania strony, co wynika z artykułu 5 ustęp 3 dyrektywy o prywatności i łączności elektronicznej. Bez trybu zgody musisz to osiągnąć inaczej, na przykład w ogóle nie ładując pomiaru do momentu kliknięcia. Od marca 2024 kampanie Google Ads kierowane do Europejskiego Obszaru Gospodarczego wymagają trybu zgody do pełnego działania odbiorców i pomiaru konwersji.
Do zebrania zgody i zapisania decyzji zwykle tak. Problem zaczyna się przy sterowaniu tagami: część wtyczek trzyma obsługę trybu zgody w płatnym pakiecie, a w wersji bezpłatnej zostawia sam baner. Wtedy baner ładnie wygląda, a tagi i tak się ładują. Wyjściem jest przeniesienie sterowania do Menedżera tagów, który obsługuje tryb zgody bez dopłaty.
Otwórz stronę w oknie prywatnym, włącz narzędzia deweloperskie, zakładka Sieć, i przefiltruj żądania po nazwie usługi. Przed kliknięciem zgody nie powinno być żądań do domen analitycznych ani ciasteczek zaczynających się od podkreślenia typu identyfikatorów Google. W zakładce Aplikacja sprawdzisz ciasteczka. Powtórz to samo po kliknięciu zgody i porównaj obie listy.
To zapis stanu zgody wysyłany razem z pomiarem. G100 znaczy, że obie zgody, analityczna i reklamowa, są odrzucone. G111 znaczy, że obie są udzielone. Jeśli przed kliknięciem widzisz G111 albo brak tego parametru, tryb zgody nie działa tak, jak myślisz.
Jeśli zależy Ci na tym, żeby przed zgodą nie wychodziło nic do serwerów Google, to tak. Wczytanie kroju pisma z obcego serwera oznacza wysłanie adresu IP odwiedzającego, zanim ten cokolwiek kliknie. Przy okazji strona zwykle na tym zyskuje, bo znika osobne połączenie i odpytanie serwera nazw.
Kontener sam w sobie nie zapisuje niczego na urządzeniu i nie zbiera danych, więc bywa traktowany jako element funkcjonalny. Zapisują dopiero tagi, które on uruchamia, i to nimi trzeba sterować. W praktyce warto opisać kontener w polityce cookies i mieć pewność, że żaden tag nie odpala się przed decyzją.

Sprawdzam, co dokładnie wysyła Twoja strona przed zgodą i po zgodzie, i doprowadzam pomiar do stanu, w którym zgadza się z tym, co deklaruje baner. Wycena po obejrzeniu strony.

Porozmawiajmy