Architektura Prywatności: Jak przekazać Consent State z Client GTM do Server-Side GTM (Usercentrics, Meta Pixel & CAPI)
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, Twój serwer sam z siebie się o tym nie dowie. Jeśli prześlesz mu 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).
- Utwórz Zmienną (Variable) typu Data Layer Variable.
- Wprowadź nazwę klucza, pod którym Usercentrics trzyma zgodę dla Meta. (Jeśli używasz oficjalnego szablonu Usercentrics, często jest to 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.
- Otwórz swój tag Meta Pixel.
- Przejdź do sekcji Wyzwalanie (Triggers).
- Utwórz nowy Trigger typu Niestandardowe zdarzenie (Custom Event).
- Ustaw nazwę zdarzenia na
consent_status(lub inne zdarzenie, na którym odpalasz pageview po załadowaniu Usercentrics). - Zaznacz „Niektóre zdarzenia niestandardowe” i dodaj warunek:
{{UC - Meta Consent}}równa siętrue. - (Opcjonalnie) Jeśli korzystasz z Google Consent Mode v2, możesz dodatkowo w sekcji Advanced Settings > Consent Settings tagu Meta Pixel 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.
- Otwórz swój główny tag transportowy (np. Google Tag lub GA4 Configuration/Event), który ma ustawiony Routing na Twój serwer (np.
sgtm.twojadomena.pl). - Przejdź do sekcji Event Parameters (Parametry Zdarzenia).
- Dodaj nowy parametr. Nazwij go
meta_consent_state. - Jako wartość przypisz naszą zmienną:
{{UC - Meta Consent}}. - Zapisz i opublikuj Client GTM. Od teraz każdy request lecący na Twój 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 przejdź do zakładki Variables (Zmienne).
- Utwórz nową Zmienną typu Event Data (Dane Zdarzenia).
- W polu Key Path (Ścieżka klucza) wpisz dokładnie tę samą nazwę, którą wysłałeś z Client GTM:
meta_consent_state. - Zapisz 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ą.
- Przejdź do zakładki Triggers (Wyzwalacze).
- Utwórz nowy Trigger typu Custom Event (Niestandardowe zdarzenie).
- Jako nazwę zdarzenia wpisz
.*i zaznacz opcję Use regex matching (jeśli chcesz odpalać to dla każdego eventu e-commerce) LUB wpisz konkretne zdarzenie, np.page_view. - Zaznacz opcję odpylania dla Some Custom Events (Niektóre zdarzenia).
- Dodaj bezwzględny warunek:
{{EventData - Meta Consent}}równa siętrue. - Jeśli chcesz wymagać także konkretnego klienta (Client Name), dodaj warunek:
Client Namerówna sięGA4. - Zapisz Trigger jako
Trigger - Meta CAPI - Consent Granted.
Krok C: Podpięcie Triggera do Tagu Meta CAPI
- Otwórz swój tag Meta Conversions API w ssGTM.
- W sekcji Wyzwalanie usuń domyślny wyzwalacz (np. „All Events”).
- Dodaj swój nowo utworzony wyzwalacz:
Trigger - Meta CAPI - Consent Granted. - Zapisz tag i uruchom tryb Preview, aby przetestować wdrożenie.
4. Weryfikacja wdrożenia
Aby mieć 100% pewności, że nie łamiesz prawa, wykonaj poniższy test:
- Wejdź na swoją stronę w trybie Incognito. W banerze Usercentrics odrzuć wszystkie zgody.
- Sprawdź w Debuggerze Client GTM, czy Meta Pixel powstrzymał się od odpalenia (Trigger powinien pokazać krzyżyk przy warunku
{{UC - Meta Consent}} == true). - Sprawdź request wysyłany do ssGTM. W podglądzie zdarzenia w Server GTM zobaczysz, że parametr
meta_consent_stateprzyjął wartośćfalse. - Tag Meta CAPI na serwerze nie powinien się odpalić. Twoje środowisko jest 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 wysyłasz do zewnętrznych vendorów. To gwarancja, że Twoja architektura jest nie tylko technicznie bezbłędna, ale również w pełni zgodna z polityką prywatności Usercentrics i RODO.