Ciąg TCF a tryb zgody: co tag Google naprawdę odczytuje
Klient ma certyfikowaną platformę CMP, w panelu widnieje logo TCF, a w GA4 połowa sesji nie ma źródła. Nikt nie zgłasza awarii, bo żadnej awarii nie ma. Tagi działają, zgoda jest zapisana, dane płyną. Tylko nie te, na których komuś zależało.
Przyczyna leży w założeniu, że ciąg TCF i tryb uzyskiwania zgody to dwie nazwy jednego mechanizmu. Nie są. To dwa języki, a Google czyta z pierwszego tylko wybrane fragmenty.
Dwie warstwy, których nie wolno mylić
TCF, czyli Transparency and Consent Framework, to standard IAB Europe. Ustala, jak platforma CMP zapisuje wybory użytkownika i jak przekazuje je dostawcom technologii reklamowej: sieciom, platformom zakupowym, narzędziom pomiarowym. Ciąg znaków jest dokumentem, który mówi każdemu z tych dostawców, na co użytkownik się zgodził.
Tryb uzyskiwania zgody to mechanizm Google. Nie jest standardem branżowym i nie interesuje go, kto czyta ciąg. Przekazuje tagom Google stan siedmiu typów zgody, a tagi same decydują, czy zapisać plik cookie, czy wysłać ping bez plików cookie.
Ani TCF, ani tryb zgody nie zbierają zgody. Robi to baner. One tylko przenoszą decyzję dalej.
Co jest w ciągu TCF
Globalna lista dostawców w wersji 3 opisuje 11 celów, 3 cele specjalne, 3 funkcje i 2 funkcje specjalne. Ciąg niesie osobno zgodę na każdy cel, osobno zgodę na każdego dostawcę z listy, a przy części celów także uzasadniony interes i restrykcje nakładane przez wydawcę.
Google jest jednym z tych dostawców. I tu zaczyna się rozbieżność, bo z jedenastu celów mapuje na tryb zgody sześć.
Sześć celów, które Google mapuje
Tabela w dokumentacji Google jest krótka i warto ją znać na pamięć, bo tłumaczy większość anomalii w danych:
- Cel 1, przechowywanie informacji na urządzeniu i dostęp do nich: ad_storage oraz ad_user_data na denied.
- Cel 3, tworzenie profilu reklam spersonalizowanych: ad_personalization na denied.
- Cel 4, wybór reklam spersonalizowanych: ad_personalization na denied.
- Cel 7, pomiar skuteczności reklam: ad_user_data na denied oraz wyłączenie funkcji sygnałów Google w GA4, co dotyczy tagów internetowych.
- Cel 9, badania rynkowe i statystyki odbiorców: wyłączenie funkcji sygnałów Google w GA4.
- Cel 10, opracowywanie i ulepszanie usług: wyłączenie funkcji sygnałów Google w GA4.
Nagłówek trzeciej kolumny brzmi dokładnie tak: działanie tagu Google w przypadku odrzucenia celu. Cała integracja jest reakcją na odmowę, nie na zgodę.
Cel pierwszy nie ustawia analytics_storage
To najważniejsze zdanie w całym mechanizmie i najczęściej pomijane. Odrzucenie celu 1 blokuje ad_storage i ad_user_data. Nie dotyka analytics_storage. Dokumentacja Google mówi wprost: aby kontrolować pliki cookie Google Analytics, zintegruj się z trybem uzyskiwania zgody.
Skutek bywa bolesny. Jeśli CMP wysyła wyłącznie ciąg TCF, analytics_storage zostaje na wartości domyślnej, a domyślna w większości wdrożeń to denied. GA4 pracuje wtedy bez plików cookie: sesje się rozpadają, liczba użytkowników rośnie, atrybucja traci sens. W Google Ads wszystko wygląda poprawnie, bo tam zgodę pilnuje cel 1. Dlatego problem zgłasza analityk, a nie handlowiec.
Wniosek jest jeden. CMP musi wysyłać sygnały trybu zgody samodzielnie, obok ciągu TCF. Integracja TCF jest dodatkiem dla dostawców zewnętrznych, nie zamiennikiem trybu zgody.
Czego w tabeli nie ma
Cele 2, 5, 6, 8 i 11 nie mają odpowiednika w trybie zgody. Użytkownik, który w banerze zaznaczy wyłącznie Pomiar treści, czyli cel 8, nie zmieni w tagu Google niczego. Jeśli cały baner zbudowano wokół celów treściowych, a analityka jest w nim tylko dopiskiem, dane w GA4 nie zależą od tego, co ludzie klikają.
Osobna pułapka to uzasadniony interes. Tabela reaguje na odrzucenie celu, a nie rozstrzyga, na jakim podłożu cel został przyznany. Jeśli CMP zapisuje przy celach Google uzasadniony interes zamiast zgody, zachowanie tagu trzeba sprawdzić w podglądzie. Z dokumentacji tego nie odczytasz.
Pięćset milisekund i trzy stany
Tag Google akceptuje wyłącznie ciągi wdrożone zgodnie z zasadami TCF i polityką Google w zakresie zgody użytkownika z UE. Jeśli CMP nie odpowie w ciągu 500 milisekund albo zwróci stan error, stub lub loading, tag uruchomi się z domyślnymi ustawieniami zgody. Na telefonie w roamingu to nie scenariusz teoretyczny.
Stąd bierze się najczęstsza anomalia: ten sam baner, ten sam ruch, a współczynnik zgody różni się między mobilem i desktopem. Czas odpowiedzi platformy CMP jest częścią wdrożenia, a nie szczegółem technicznym.
Jak włączyć integrację
Są trzy drogi. Platforma CMP może ustawić pole enableAdvertiserConsentMode na true w obiektach TCData. Witryna może ustawić window['gtag_enable_tcf_support'] na true, przy czym musi to zrobić na każdej stronie, także w tych wczytywanych przez iframe. Aplikacje mają własne przełączniki w AndroidManifest.xml oraz w info.plist.
Integrację zaktualizowano w listopadzie 2023 roku, żeby mapować na parametry ad_user_data i ad_personalization. Wdrożenia sprzed tej daty często obsługują tylko ad_storage, co przy dzisiejszych wymaganiach Google Ads wygląda jak brak zgody.
GTM: wbudowane i dodatkowe mechanizmy
W Menedżerze tagów każdy tag ma sekcję Ustawienia zaawansowane, a w niej Ustawienia dotyczące wyrażania zgody. Wbudowane mechanizmy sprawdzania zgody widoczne są dla tagów, które czytają stan zgody, i dla tagów Google są to zwykle ad_storage oraz analytics_storage. Tag sam dostosowuje działanie.
Dodatkowe mechanizmy mają trzy opcje: Nie ustawiono, Brak wymogu uzyskania dodatkowej zgody oraz Wymagaj dodatkowej zgody na uruchomienie tagu, z listą typów zgody. Lista obejmuje siedem typów: ad_storage, ad_user_data, ad_personalization, analytics_storage, functionality_storage, personalization_storage i security_storage.
Jest też ostrzeżenie, które warto zapamiętać: jeśli masz wdrożony tryb uzyskiwania zgody i jednocześnie używasz dodatkowych mechanizmów sprawdzania zgody, nie będą one działać prawidłowo. Dla tagów Google wybierasz Brak wymogu i zostawiasz decyzję wbudowanym mechanizmom.
Kolejność też ma znaczenie. Reguła Inicjacja zgody istnieje w każdym kontenerze internetowym i uruchamia się przed wszystkimi innymi regułami. Służy tagom, które ustawiają lub aktualizują stan zgody, czyli banerowi i domyślnym wartościom. Wgląd zbiorczy daje strona Przegląd ustawień uzyskiwania zgody, którą włącza się w Administracja, Ustawienia kontenerów, w sekcji Ustawienia dodatkowe. Dzieli tagi na dwie grupy i pozwala zmienić ustawienia wielu z nich jedną akcją.
Zgoda to nie ciąg
Art. 7 ust. 1 RODO wymaga, żeby administrator mógł wykazać, że użytkownik wyraził zgodę. Ciąg TCF jest takim dowodem tylko wtedy, gdy da się go odczytać i zachować. Art. 7 ust. 3 RODO wymaga, żeby wycofanie zgody było tak samo łatwe jak jej wyrażenie. Po stronie polskiej dochodzi art. 399 Prawa komunikacji elektronicznej dla zapisu i odczytu informacji na urządzeniu oraz art. 400 dla standardu zgody.
Wdrożenie, w którym po zamknięciu okna banera nie ma widocznego przycisku wycofania, nie spełnia tego warunku niezależnie od tego, jak poprawny ciąg wysyła.
Lista kontrolna na dziś
- Sprawdź w podglądzie GTM, czy polecenie consent default pada przed pierwszym tagiem Google.
- Sprawdź, czy CMP wysyła analytics_storage, a nie tylko ciąg TCF.
- Zmierz, jak szybko baner odpowiada na wolnym łączu, i czy tag startuje wtedy z domyślnymi ustawieniami.
- Usuń dodatkowe mechanizmy sprawdzania zgody z tagów Google, jeśli korzystasz z trybu zgody.
- Przejrzyj, którym celom TCF odpowiadają checkboxy w banerze, i czy cel 1 jest opisany zrozumiale.
- Wycofaj zgodę i sprawdź, czy stan w tagu wraca do denied.
North Digital sprawdza, czy zgoda w Twoim wdrożeniu faktycznie dociera do tagów Google, i porządkuje mapowanie celów TCF na tryb zgody. Zamów konsultację.