Jak przekazać zgody z Client GTM do Server-Side GTM
Część 4 z 4 serii Jak poprawnie okablować zgodę
Spis treści
Wdrażanie analityki po stronie serwera (Server-Side GTM) to potężny krok w stronę niezawodności danych. Środowisko serwerowe ma jednak jedną fundamentalną „wadę” architektoniczną: nie ma bezpośredniego dostępu do przeglądarki użytkownika, jego plików cookie, ani banera zgód (CMP).
Jeśli użytkownik odrzuci śledzenie w banerze Usercentrics, serwer sam z siebie się o tym nie dowie. Gdy trafią do niego dane bez statusu zgody, Meta Conversions API (CAPI) wyśle payload do Facebooka, łamiąc tym samym RODO i przepisy DMA.
Jako analitycy musimy zbudować „most”, który przetransportuje decyzję o zgodzie (Consent State) z przeglądarki (Client GTM) prosto do kontenera serwerowego (Server GTM). Oto techniczny przewodnik, jak to zrobić krok po kroku na przykładzie Usercentrics, Meta Pixela oraz Meta CAPI.
1. Logika: Jak działa ten „most”?
Zamiast polegać wyłącznie na wbudowanym Google Consent Mode (który czasem bywa trudny do zdebugowania po stronie serwera przy tagach non-Google), użyjemy najpewniejszej metody – jawnego przekazania decyzji użytkownika jako Parametru Zdarzenia (Event Parameter) w tagu transportowym (np. GA4).
- Zgoda: Usercentrics zapisuje wybór.
- Client GTM: Blokujemy klasycznego Meta Pixela, jeśli brak zgody. Następnie chwytamy status zgody i dołączamy go jako parametr do tagu wysyłającego dane na nasz serwer (ssGTM).
- Server GTM: Odbieramy parametr jako Event Data. Budujemy Trigger, który warunkuje odpalenie Meta CAPI tylko wtedy, gdy parametr zgody ma wartość
true.
2. Konfiguracja w Client GTM (Przeglądarka)
Zaczynamy od kontenera przeglądarkowego. Zakładam, że masz już wdrożony tag Usercentrics CMP, który wypycha zdarzenia do DataLayer.
Krok A: Zmienna sprawdzająca zgodę
Usercentrics domyślnie posiada własne zmienne lub pozwala na sprawdzenie statusu danej usługi (tzw. Data Processing Service).
- Utworzyć Zmienną (Variable) typu Data Layer Variable.
- Wprowadzić nazwę klucza, pod którym Usercentrics trzyma zgodę dla Meta. (W oficjalnym szablonie Usercentrics jest to często zmienna dostarczana przez ich DataLayer, np. stworzona z użyciem niestandardowego kodu JS sprawdzającego obiekt
Usercentrics). Na potrzeby poradnika nazwijmy tę zmienną:{{UC - Meta Consent}}. Zmienna ta powinna zwracać wartośćtruelubfalse.
Krok B: Zabezpieczenie Meta Pixela (Client-Side)
Meta Pixel operujący w przeglądarce musi respektować decyzję użytkownika.
- Otworzyć tag Meta Pixel.
- Przejść do sekcji Wyzwalanie (Triggers).
- Utworzyć nowy Trigger typu Niestandardowe zdarzenie (Custom Event).
- Ustawić nazwę zdarzenia na
consent_status(lub inne zdarzenie, na którym odpala się pageview po załadowaniu Usercentrics). - Zaznaczyć „Niektóre zdarzenia niestandardowe” i dodać warunek:
{{UC - Meta Consent}}równa siętrue. - (Opcjonalnie) Przy Google Consent Mode v2 w sekcji Advanced Settings > Consent Settings tagu Meta Pixel można dodatkowo wymagać zgód
ad_storageorazad_user_data.
Krok C: Przekazanie zgody do serwera (Tag Transportowy)
Najczęściej dane do ssGTM przesyła się za pomocą tagu GA4. Musimy „doczepić” naszą zgodę do tego requestu.
- Otworzyć główny tag transportowy (np. Google Tag lub GA4 Configuration/Event), który ma ustawiony Routing na własny serwer (np.
sgtm.twojadomena.pl). - Przejść do sekcji Event Parameters (Parametry Zdarzenia).
- Dodać nowy parametr o nazwie
meta_consent_state. - Jako wartość przypisać naszą zmienną:
{{UC - Meta Consent}}. - Zapisać i opublikować Client GTM. Od teraz każdy request lecący na serwer niesie w sobie flagę mówiącą, czy użytkownik zezwolił na tracking Meta.
3. Konfiguracja w Server-Side GTM (Serwer)
Przechodzimy do kontenera serwerowego. Tutaj musimy odebrać przesyłany parametr i użyć go do zablokowania tagu Meta CAPI.
Krok A: Odebranie parametru (Event Data Variable)
- W kontenerze ssGTM przejść do zakładki Variables (Zmienne).
- Utworzyć nową Zmienną typu Event Data (Dane Zdarzenia).
- W polu Key Path (Ścieżka klucza) wpisać dokładnie tę samą nazwę, która została wysłana z Client GTM:
meta_consent_state. - Zapisać zmienną jako
{{EventData - Meta Consent}}.
Krok B: Budowa Triggera blokującego dla Meta CAPI
Nie chcemy, aby tag Meta CAPI odpalał się za każdym razem. Musi zostać wysterowany przez naszą zmienną.
- Przejść do zakładki Triggers (Wyzwalacze).
- Utworzyć nowy Trigger typu Custom Event (Niestandardowe zdarzenie).
- Jako nazwę zdarzenia wpisać
.*i zaznaczyć opcję Use regex matching (aby odpalać to dla każdego eventu e-commerce) LUB wpisać konkretne zdarzenie, np.page_view. - Zaznacz opcję odpylania dla Some Custom Events (Niektóre zdarzenia).
- Dodać bezwzględny warunek:
{{EventData - Meta Consent}}równa siętrue. - Aby wymagać także konkretnego klienta (Client Name), dodać warunek:
Client Namerówna sięGA4. - Zapisać Trigger jako
Trigger - Meta CAPI - Consent Granted.
Krok C: Podpięcie Triggera do Tagu Meta CAPI
- Otworzyć tag Meta Conversions API w ssGTM.
- W sekcji Wyzwalanie usunąć domyślny wyzwalacz (np. „All Events”).
- Dodać nowo utworzony wyzwalacz:
Trigger - Meta CAPI - Consent Granted. - Zapisać tag i uruchomić tryb Preview, aby przetestować wdrożenie.
4. Weryfikacja wdrożenia
Aby mieć 100% pewności, że prawo pozostaje nienaruszone, warto wykonać poniższy test:
- Wejdź na swoją stronę w trybie Incognito. W banerze Usercentrics odrzuć wszystkie zgody.
- Sprawdzić w Debuggerze Client GTM, czy Meta Pixel powstrzymał się od odpalenia (Trigger powinien pokazać krzyżyk przy warunku
{{UC - Meta Consent}} == true). - Sprawdzić request wysyłany do ssGTM. W podglądzie zdarzenia w Server GTM parametr
meta_consent_stateprzyjmie wartośćfalse. - Tag Meta CAPI na serwerze nie powinien się odpalić. Środowisko jest wtedy szczelne i w pełni legalne.
Podsumowanie
Przekazywanie statusu zgody pomiędzy przeglądarką a serwerem to podstawa dzisiejszej inżynierii danych. Jawne definiowanie parametru meta_consent_state w tagu transportowym daje pełną kontrolę i przejrzystość nad tym, co i kiedy trafia do zewnętrznych vendorów. To gwarancja, że architektura jest nie tylko technicznie bezbłędna, ale również w pełni zgodna z polityką prywatności Usercentrics, RODO oraz przepisami DMA.
Jak poprawnie okablować zgodę
- Jak wdrożyć Google Consent Mode v2
- Jak działają pingi bez cookies w Google Consent Mode
- GA4 Consent Mode v2: Dekodowanie parametru gcd (Analiza żądań sieciowych)
- Jak przekazać zgody z Client GTM do Server-Side GTM