LW IT Solutions
«« Blog Overview « Digital Marketing
This post in other languages:

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).

  1. Utwórz Zmienną (Variable) typu Data Layer Variable.
  2. 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ść true lub false.

Krok B: Zabezpieczenie Meta Pixela (Client-Side)

Meta Pixel operujący w przeglądarce musi respektować decyzję użytkownika.

  1. Otwórz swój tag Meta Pixel.
  2. Przejdź do sekcji Wyzwalanie (Triggers).
  3. Utwórz nowy Trigger typu Niestandardowe zdarzenie (Custom Event).
  4. Ustaw nazwę zdarzenia na consent_status (lub inne zdarzenie, na którym odpalasz pageview po załadowaniu Usercentrics).
  5. Zaznacz „Niektóre zdarzenia niestandardowe” i dodaj warunek: {{UC - Meta Consent}} równa się true.
  6. (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_storage oraz ad_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.

  1. 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).
  2. Przejdź do sekcji Event Parameters (Parametry Zdarzenia).
  3. Dodaj nowy parametr. Nazwij go meta_consent_state.
  4. Jako wartość przypisz naszą zmienną: {{UC - Meta Consent}}.
  5. 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)

  1. W kontenerze ssGTM przejdź do zakładki Variables (Zmienne).
  2. Utwórz nową Zmienną typu Event Data (Dane Zdarzenia).
  3. W polu Key Path (Ścieżka klucza) wpisz dokładnie tę samą nazwę, którą wysłałeś z Client GTM: meta_consent_state.
  4. 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ą.

  1. Przejdź do zakładki Triggers (Wyzwalacze).
  2. Utwórz nowy Trigger typu Custom Event (Niestandardowe zdarzenie).
  3. 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.
  4. Zaznacz opcję odpylania dla Some Custom Events (Niektóre zdarzenia).
  5. Dodaj bezwzględny warunek: {{EventData - Meta Consent}} równa się true.
  6. Jeśli chcesz wymagać także konkretnego klienta (Client Name), dodaj warunek: Client Name równa się GA4.
  7. Zapisz Trigger jako Trigger - Meta CAPI - Consent Granted.

Krok C: Podpięcie Triggera do Tagu Meta CAPI

  1. Otwórz swój tag Meta Conversions API w ssGTM.
  2. W sekcji Wyzwalanie usuń domyślny wyzwalacz (np. „All Events”).
  3. Dodaj swój nowo utworzony wyzwalacz: Trigger - Meta CAPI - Consent Granted.
  4. 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_state przyjął 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.

Lukas Wojcik

Lukas Wojcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

ALL ARTICLES & CATEGORIES

CCTV

Data Privacy

Digital Analytics

Digital Marketing

IT & Networks

Smart Home