{"id":437,"date":"2026-09-02T17:00:00","date_gmt":"2026-09-02T15:00:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/?p=437"},"modified":"2026-10-09T22:56:30","modified_gmt":"2026-10-09T20:56:30","slug":"serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\/","title":{"rendered":"Serwerowe redagowanie PII: Jak zbudowa\u0107 firewall prywatno\u015bci w ssGTM"},"content":{"rendered":"\r\n<p class=\"wp-block-paragraph\">Przypadkowy wyciek danych osobowych (PII) w parametrach zapyta\u0144 HTTP stanowi jedno z najbardziej krytycznych ryzyk prawnych i technicznych w analityce cyfrowej. Gdy formularze przesy\u0142aj\u0105 dane metod\u0105 GET lub systemy automatyzacji marketingu do\u0142\u0105czaj\u0105 niezaszyfrowane adresy e-mail, numery telefon\u00f3w czy numery PESEL do adres\u00f3w URL, tagi dzia\u0142aj\u0105ce po stronie klienta przekazuj\u0105 te informacje bezpo\u015brednio do zewn\u0119trznych platform. Nowoczesne architektury analityczne minimalizuj\u0105 to ryzyko, wykorzystuj\u0105c Server-Side Google Tag Manager (ssGTM) jako po\u015brednicz\u0105cy firewall prywatno\u015bci, kt\u00f3ry automatycznie czy\u015bci wra\u017cliwe ci\u0105gi znak\u00f3w przed wys\u0142aniem \u0142adunku danych do Google Analytics 4 lub Meta Conversions API.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">1. Dlaczego wyciek PII w adresach URL stanowi krytyczne ryzyko regulacyjne<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Przekazywanie danych osobowych do podmiot\u00f3w trzecich bez wcze\u015bniejszego kryptograficznego haszowania narusza rygorystyczne przepisy o ochronie prywatno\u015bci (takie jak RODO\/GDPR) oraz regulaminy g\u0142\u00f3wnych platform reklamowych. Warunki korzystania z Google Analytics 4 zabraniaj\u0105 niezaszyfrowanych ci\u0105g\u00f3w PII tak\u017ce w standardowych wymiarach, takich jak <code>page_location<\/code>, b\u0105d\u017a w parametrach niestandardowych, a ju\u017c zebrane warto\u015bci usuwa dopiero wniosek o usuni\u0119cie danych w us\u0142udze. Tradycyjne metody maskowania po stronie klienta (w przegl\u0105darce) s\u0105 cz\u0119sto zawodne z powodu blokowania skrypt\u00f3w lub braku kontroli nad dynamicznie generowanymi adresami.<\/p>\r\n\r\n\r\n\r\n<figure class=\"lw-diagram\">\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/ssgtm-serwerowe-redagowanie-pii-pl.png\" width=\"1120\" height=\"580\" alt=\"Dwa tory pokazuj\u0105ce zdarzenie przed i po serwerowym redagowaniu, pomi\u0119dzy nimi zestaw regu\u0142 i cele docelowe\">\n<figcaption>Kontener jest w\u0105skim gard\u0142em: surowe zdarzenie przychodzi raz, regu\u0142y redaguj\u0105ce dzia\u0142aj\u0105 raz, a ka\u017cdy cel poni\u017cej otrzymuje ten sam oczyszczony \u0142adunek \u2014 zamiast osobnej regu\u0142y na tag.<\/figcaption>\n<\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">2. Server-Side GTM jako po\u015brednicz\u0105cy firewall prywatno\u015bci<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">W architekturze tagowania po stronie serwera zapytania analityczne generowane w przegl\u0105darce trafi\u0105 najpierw na w\u0142asny serwer tagowania (First-Party Endpoint). Poniewa\u017c \u017c\u0105danie HTTP jest kontrolowane w izolowanym \u015brodowisku serwerowym przed jak\u0105kolwiek wysy\u0142k\u0105 do zewn\u0119trznych dostawc\u00f3w, mo\u017cliwa jest pe\u0142na inspekcja, transformacja i redagowanie modelu danych zdarzenia:<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li><strong>Rozdzielenie odbioru od wysy\u0142ki:<\/strong> Przegl\u0105darka internetowa komunikuje si\u0119 wy\u0142\u0105cznie z kontenerem ssGTM. Zewn\u0119trzne systemy reklamowe nie otrzymuj\u0105 bezpo\u015bredniego dost\u0119pu do przegl\u0105darki u\u017cytkownika ko\u0144cowego.<\/li>\r\n<li><strong>Scentralizowana filtracja:<\/strong> Jedna regu\u0142a czyszcz\u0105ca zdefiniowana w kontenerze serwerowym zabezpiecza wszystkie tagi wychodz\u0105ce jednocze\u015bnie, zapobiegaj\u0105c wyciekom do wielu platform reklamowych na raz.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">3. Tworzenie zmiennych Sandboxed JavaScript do detekcji PII<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Aby automatycznie czy\u015bci\u0107 adresy URL w ssGTM, utw\u00f3rz niestandardow\u0105 zmienn\u0105 Sandboxed JavaScript. Sprawdza ona ci\u0105gi URL za pomoc\u0105 wyra\u017ce\u0144 regularnych i zast\u0119puje pasuj\u0105cy tekst bezpiecznymi symbolami zast\u0119pczymi. Wyra\u017cenia musz\u0105 by\u0107 zgodne z ograniczeniami interfejsu Sandboxed JavaScript API:<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li><strong>Redagowanie adres\u00f3w e-mail:<\/strong> Wzorzec RegEx identyfikuje standardowe struktury adres\u00f3w (<code>[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+<\/code>) i zast\u0119puje wykryty ci\u0105g statyczn\u0105 warto\u015bci\u0105 <code>[REDACTED_EMAIL]<\/code>.<\/li>\r\n<li><strong>Maskowanie numer\u00f3w telefon\u00f3w:<\/strong> Ci\u0105gi cyfr o d\u0142ugo\u015bci od 9 do 15 znak\u00f3w, cz\u0119sto poprzedzone prefiksem kraju (np. <code>+48<\/code>) lub separatorami, s\u0105 wykrywane i usuwane z parametr\u00f3w URL, co zapobiega transmisji danych kontaktowych.<\/li>\r\n<li><strong>Filtrowanie numer\u00f3w PESEL:<\/strong> Specjalistyczne regu\u0142y RegEx identyfikuj\u0105 11-cyfrowe ci\u0105gi numeryczne zgodne ze struktur\u0105 daty urodzenia lub sumami kontrolnymi PESEL, zast\u0119puj\u0105c je symbolem <code>[REDACTED_PESEL]<\/code>.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">4. Stosowanie redagowania danych w tagach GA4 oraz Meta Conversions API<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Po skonfigurowaniu zmiennej czyszcz\u0105cej nale\u017cy mapowa\u0107 j\u0105 na kluczowe parametry adres\u00f3w URL wewn\u0105trz kontenera serwerowego. W przypadku tag\u00f3w Google Analytics 4 nadpisanie parametr\u00f3w <code>page_location<\/code>, <code>page_referrer<\/code> oraz niestandardowych parametr\u00f3w URL oczyszczonym ci\u0105giem gwarantuje, \u017ce niezaszyfrowane PII nigdy nie opu\u015bci infrastruktury serwerowej. Tagi Meta Conversions API mog\u0105 bezpiecznie operowa\u0107 na zredagowanych adresach URL, podczas gdy w\u0142a\u015bciwa identyfikacja u\u017cytkownik\u00f3w realizowana jest wy\u0142\u0105cznie poprzez prawid\u0142owo za-haszowane algorytmem SHA-256 parametry User Data.<\/p>\r\n\n\n<h2>5. Regu\u0142a jako transformacja<\/h2>\n<p>Zmienna czy\u015bci dane; transformacja decyduje, dok\u0105d trafia oczyszczona warto\u015b\u0107. W kontenerze serwerowym transformacje dzia\u0142aj\u0105 po tym, jak klient utworzy obiekt danych zdarzenia, a przed odczytaniem go przez tagi. Spo\u015br\u00f3d trzech typ\u00f3w, Allow parameters, Augment event i Exclude parameters, to Augment event zmienia warto\u015b\u0107 istniej\u0105cego parametru zdarzenia. Bez dodatkowych ustawie\u0144 transformacja obejmuje wszystkie tagi, wi\u0119c r\u00f3wnie\u017c tag dodany p\u00f3\u017aniej otrzymuje oczyszczon\u0105 warto\u015b\u0107 bez w\u0142asnego przypisania.<\/p>\n<p>Konfiguracja sk\u0142ada si\u0119 z trzech cz\u0119\u015bci:<\/p>\n<ol>\n<li>Niestandardowy szablon zmiennej w Sandboxed JavaScript odczytuje jeden parametr z danych zdarzenia i zwraca go oczyszczonego. Nazwa parametru pochodzi z pola tekstowego szablonu, dzi\u0119ki czemu ten sam szablon obs\u0142uguje ka\u017cde pole.<\/li>\n<li>Z szablonu powstaje osobna zmienna dla ka\u017cdego pola, na przyk\u0142ad dla <code>page_location<\/code>, <code>page_referrer<\/code> i <code>search_term<\/code>.<\/li>\n<li>Transformacja typu Augment event ustawia ka\u017cdy z tych parametr\u00f3w na jego zmienn\u0105. Affected Tags i Matching Conditions pozostaj\u0105 przy ustawieniach domy\u015blnych, obejmuj\u0105cych wszystkie tagi i wszystkie zdarzenia.<\/li>\n<\/ol>\n<p>Skr\u00f3cona wersja szablonu:<\/p>\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"javascript\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">JavaScript<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-javascript\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-keyword\">const<\/span> getEventData = <span class=\"cbb-function\">require<\/span>(<span class=\"cbb-string\">'getEventData'<\/span>);\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">const<\/span> createRegex = <span class=\"cbb-function\">require<\/span>(<span class=\"cbb-string\">'createRegex'<\/span>);\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">const<\/span> getType = <span class=\"cbb-function\">require<\/span>(<span class=\"cbb-string\">'getType'<\/span>);\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">const<\/span> value = <span class=\"cbb-function\">getEventData<\/span>(data.parameter);\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">if<\/span> (<span class=\"cbb-function\">getType<\/span>(value) !== <span class=\"cbb-string\">'string'<\/span>) {\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">return<\/span> value;\n<\/span><span class=\"cbb-line\">}\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-comment\">\/\/ parametry zapytania, kt\u00f3re nie mog\u0105 opu\u015bci\u0107 serwera, bez rozr\u00f3\u017cniania wielko\u015bci liter<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">const<\/span> params = &#91;<span class=\"cbb-string\">'email'<\/span>, <span class=\"cbb-string\">'e-mail'<\/span>, <span class=\"cbb-string\">'user_email'<\/span>, <span class=\"cbb-string\">'phone'<\/span>, <span class=\"cbb-string\">'token'<\/span>, <span class=\"cbb-string\">'reset_key'<\/span>&#93;;\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">let<\/span> out = value;\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">for<\/span> (<span class=\"cbb-keyword\">let<\/span> i = <span class=\"cbb-number\">0<\/span>; i &lt; params.length; i++) {\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">const<\/span> re = <span class=\"cbb-function\">createRegex<\/span>(<span class=\"cbb-string\">'\\\\b'<\/span> + params&#91;i&#93; + <span class=\"cbb-string\">'=&#91;^&amp;#&#93;*'<\/span>, <span class=\"cbb-string\">'gi'<\/span>);\n<\/span><span class=\"cbb-line\">  out = out.<span class=\"cbb-function\">replace<\/span>(re, params&#91;i&#93; + <span class=\"cbb-string\">'=&#91;REDACTED_PARAM&#93;'<\/span>);\n<\/span><span class=\"cbb-line\">}\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-comment\">\/\/ adresy w innych miejscach warto\u015bci, tak\u017ce z @ zakodowanym procentowo<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">const<\/span> mail = <span class=\"cbb-function\">createRegex<\/span>(<span class=\"cbb-string\">'&#91;a-zA-Z0-9_.+-&#93;+(@|%40)&#91;a-zA-Z0-9-&#93;+\\\\.&#91;a-zA-Z0-9.-&#93;+'<\/span>, <span class=\"cbb-string\">'gi'<\/span>);\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">return<\/span> out.<span class=\"cbb-function\">replace<\/span>(mail, <span class=\"cbb-string\">'&#91;REDACTED_EMAIL&#93;'<\/span>);<\/span><\/code><\/pre><\/figure>\n<p><code>createRegex<\/code> wymaga obrazu serwera w wersji 2.0.0 lub nowszej i zwraca <code>null<\/code> tam, gdzie RE2 jest niedost\u0119pne; wersja obrazu nale\u017cy wi\u0119c do listy kontrolnej przed opublikowaniem kontenera. Wzorzec numeru telefonu z sekcji 3 zosta\u0142 celowo pomini\u0119ty: ka\u017cdy ci\u0105g od 9 do 15 cyfr trafia tak\u017ce w numery zam\u00f3wie\u0144, znaczniki czasu w sekundach lub milisekundach i d\u0142ugie identyfikatory produkt\u00f3w. Zastosowany do adresu URL zast\u0119puje numer zam\u00f3wienia w \u015bcie\u017cce; zastosowany do wszystkich p\u00f3l zdarzenia mo\u017ce nadpisa\u0107 <code>transaction_id<\/code>. Wzorce cyfrowe nale\u017c\u0105 wi\u0119c wy\u0142\u0105cznie do p\u00f3l z dowolnym tekstem, takich jak wyszukiwane frazy, a pola o znanym znaczeniu pozostaj\u0105 wy\u0142\u0105czone.<\/p>\n<p>Przed publikacj\u0105 trzy \u017c\u0105dania testowe pokazuj\u0105, czy regu\u0142a dzia\u0142a: jedno z <code>?email=test@example.com<\/code>, jedno z zakodowanym procentowo <code>test%40example.com<\/code> i jedno z nazw\u0105 parametru zapisan\u0105 jako <code>Email=<\/code>. W podgl\u0105dzie przychodz\u0105ce \u017c\u0105danie nadal pokazuje surowe warto\u015bci, co jest oczekiwane; wychodz\u0105ce \u017c\u0105dania tag\u00f3w GA4 i Meta musz\u0105 zawiera\u0107 symbole zast\u0119pcze. Zdarzenie testowe z prawdziwymi numerami zam\u00f3wie\u0144 obok pokazuje, czy nadpisane zosta\u0142o co\u015b, co powinno pozosta\u0107.<\/p>\n\n<div class=\"lw-faq\">\n<h2>Pytania i odpowiedzi<\/h2>\n\n<h3>Czy redagowanie chroni tak\u017ce tagi dodane p\u00f3\u017aniej do kontenera serwerowego?<\/h3>\n<p>Tylko wtedy, gdy dzia\u0142a przed tagami. Je\u015bli oczyszczona zmienna jest wpisywana w page_location i page_referrer w ka\u017cdym tagu osobno, tag utworzony p\u00f3\u017aniej bez takiego przypisania zn\u00f3w wy\u015ble surowy adres. Centralnie regu\u0142a dzia\u0142a dopiero jako transformacja w kontenerze serwerowym, kt\u00f3ra nadpisuje dane zdarzenia, zanim tagi je odczytaj\u0105.<\/p>\n\n<h3>Gdzie firewall prywatno\u015bci w kontenerze serwerowym napotyka swoje granice?<\/h3>\n<p>Firewall dzia\u0142a tylko na to, co przechodzi przez kontener serwerowy, a w nim przez zmienn\u0105 czyszcz\u0105c\u0105. \u0141atwo przy tym zostawi\u0107 otwarte cztery luki:<\/p>\n<ul>\n<li>Tagi, kt\u00f3re nadal dzia\u0142aj\u0105 w przegl\u0105darce. Piksel w kontenerze webowym wysy\u0142a adres prosto do dostawcy, z pomini\u0119ciem serwera. Firewall dzia\u0142a tylko wtedy, gdy przegl\u0105darka rzeczywi\u015bcie komunikuje si\u0119 wy\u0142\u0105cznie z kontenerem ssGTM.<\/li>\n<li>Samo przychodz\u0105ce \u017c\u0105danie. Dane docieraj\u0105 do serwera tagowania nieoczyszczone, a dzienniki \u017c\u0105da\u0144 serwera lub platformy hostingowej cz\u0119sto zapisuj\u0105 adres razem z ci\u0105giem zapytania. Te dzienniki nale\u017cy obj\u0105\u0107 t\u0105 sam\u0105 ocen\u0105.<\/li>\n<li>Warto\u015bci zakodowane. W adresie URL znak @ z adresu e-mail cz\u0119sto wyst\u0119puje jako <code>%40<\/code>, a wzorzec szukaj\u0105cy @ go wtedy nie znajdzie. Zmienna powinna wi\u0119c zdekodowa\u0107 warto\u015b\u0107 przed sprawdzeniem.<\/li>\n<li>Pola poza adresem URL. Tytu\u0142y stron, wyszukiwane frazy i parametry niestandardowe bez adresu URL, na przyk\u0142ad pola formularzy, mog\u0105 zawiera\u0107 te same dane, nawet gdy page_location i page_referrer s\u0105 czyste.<\/li>\n<\/ul>\n<p>Firewall jest zatem drug\u0105 lini\u0105 obrony. Pierwsz\u0105 pozostaje to, by dane osobowe w og\u00f3le nie trafia\u0142y do adresu URL, na przyk\u0142ad dzi\u0119ki temu, \u017ce formularze wysy\u0142aj\u0105 dane metod\u0105 POST zamiast GET.<\/p>\n<\/div>\n\n<div class=\"lw-quellen\">\n<h2>\u0179r\u00f3d\u0142a<\/h2>\n<ul>\n<li><a href=\"https:\/\/developers.google.com\/tag-platform\/tag-manager\/server-side\" target=\"_blank\" rel=\"noopener noreferrer\">Server-side tagging overview<\/a><\/li>\n<li><a href=\"https:\/\/eur-lex.europa.eu\/eli\/reg\/2016\/679\/oj\" target=\"_blank\" rel=\"noopener noreferrer\">Regulation (EU) 2016\/679 (GDPR)<\/a><\/li>\n<li><a href=\"https:\/\/developers.google.com\/tag-platform\/tag-manager\/server-side\/transformations\" target=\"_blank\" rel=\"noopener noreferrer\">Server-side tagging: Transformations<\/a><\/li>\n<li><a href=\"https:\/\/developers.google.com\/tag-platform\/tag-manager\/server-side\/api\" target=\"_blank\" rel=\"noopener noreferrer\">Server-side tagging APIs<\/a><\/li>\n<\/ul>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Praktyczne tworzenie zmiennych Sandboxed JavaScript w Server-Side GTM, kt\u00f3re automatycznie wykrywaj\u0105, maskuj\u0105 lub usuwaj\u0105 adresy e-mail, telefony i numery PESEL z adres\u00f3w URL.<\/p>\n","protected":false},"author":1,"featured_media":13997,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[92151,92247,92133,92271,92412,92136],"class_list":["post-437","post","type-post","status-publish","format-standard","hentry","category-digital-marketing-pl","tag-prywatnosc-danych-pl-pl","tag-gdpr-pl","tag-google-tag-manager-pl","tag-javascript-pl","tag-pii-protection-pl","tag-server-side-gtm-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Serwerowe redagowanie PII: Jak zbudowa\u0107 firewall prywatno\u015bci w ssGTM | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Redakcja PII w Server-Side GTM: wykrywanie e-maili, telefon\u00f3w i numer\u00f3w PESEL w URL przez zmienne lub transformacje.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Serwerowe redagowanie PII: Jak zbudowa\u0107 firewall prywatno\u015bci w ssGTM | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Redakcja PII w Server-Side GTM: wykrywanie e-maili, telefon\u00f3w i numer\u00f3w PESEL w URL przez zmienne lub transformacje.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-02T15:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-09T20:56:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-437-server-side-pii-redaction-privacy-fi-g.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Serwerowe redagowanie PII: Jak zbudowa\u0107 firewall prywatno\u015bci w ssGTM\",\"datePublished\":\"2026-09-02T15:00:00+00:00\",\"dateModified\":\"2026-10-09T20:56:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\\\/\"},\"wordCount\":1240,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-437-server-side-pii-redaction-privacy-fi-g.png\",\"keywords\":[\"Data Privacy\",\"GDPR\",\"Google Tag Manager\",\"JavaScript\",\"PII Protection\",\"Server-Side GTM\"],\"articleSection\":[\"Digital Marketing\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\\\/\",\"name\":\"Serwerowe redagowanie PII: Jak zbudowa\u0107 firewall prywatno\u015bci w ssGTM | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-437-server-side-pii-redaction-privacy-fi-g.png\",\"datePublished\":\"2026-09-02T15:00:00+00:00\",\"dateModified\":\"2026-10-09T20:56:30+00:00\",\"description\":\"Redakcja PII w Server-Side GTM: wykrywanie e-maili, telefon\u00f3w i numer\u00f3w PESEL w URL przez zmienne lub transformacje.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-437-server-side-pii-redaction-privacy-fi-g.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-437-server-side-pii-redaction-privacy-fi-g.png\",\"width\":1200,\"height\":630,\"caption\":\"Serwerowe redagowanie PII: Jak zbudowa\u0107 firewall prywatno\u015bci w ssGTM\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Serwerowe redagowanie PII: Jak zbudowa\u0107 firewall prywatno\u015bci w ssGTM\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Serwerowe redagowanie PII: Jak zbudowa\u0107 firewall prywatno\u015bci w ssGTM | Lukas Wojcik","description":"Redakcja PII w Server-Side GTM: wykrywanie e-maili, telefon\u00f3w i numer\u00f3w PESEL w URL przez zmienne lub transformacje.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\/","og_locale":"en_US","og_type":"article","og_title":"Serwerowe redagowanie PII: Jak zbudowa\u0107 firewall prywatno\u015bci w ssGTM | Lukas Wojcik","og_description":"Redakcja PII w Server-Side GTM: wykrywanie e-maili, telefon\u00f3w i numer\u00f3w PESEL w URL przez zmienne lub transformacje.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-02T15:00:00+00:00","article_modified_time":"2026-10-09T20:56:30+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-437-server-side-pii-redaction-privacy-fi-g.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Serwerowe redagowanie PII: Jak zbudowa\u0107 firewall prywatno\u015bci w ssGTM","datePublished":"2026-09-02T15:00:00+00:00","dateModified":"2026-10-09T20:56:30+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\/"},"wordCount":1240,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-437-server-side-pii-redaction-privacy-fi-g.png","keywords":["Data Privacy","GDPR","Google Tag Manager","JavaScript","PII Protection","Server-Side GTM"],"articleSection":["Digital Marketing"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\/","name":"Serwerowe redagowanie PII: Jak zbudowa\u0107 firewall prywatno\u015bci w ssGTM | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-437-server-side-pii-redaction-privacy-fi-g.png","datePublished":"2026-09-02T15:00:00+00:00","dateModified":"2026-10-09T20:56:30+00:00","description":"Redakcja PII w Server-Side GTM: wykrywanie e-maili, telefon\u00f3w i numer\u00f3w PESEL w URL przez zmienne lub transformacje.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-437-server-side-pii-redaction-privacy-fi-g.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-437-server-side-pii-redaction-privacy-fi-g.png","width":1200,"height":630,"caption":"Serwerowe redagowanie PII: Jak zbudowa\u0107 firewall prywatno\u015bci w ssGTM"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/serwerowe-redagowanie-pii-jak-zbudowac-firewall-prywatnosci-w-ssgtm\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Serwerowe redagowanie PII: Jak zbudowa\u0107 firewall prywatno\u015bci w ssGTM"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/437","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=437"}],"version-history":[{"count":5,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/437\/revisions"}],"predecessor-version":[{"id":22023,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/437\/revisions\/22023"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/13997"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=437"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=437"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=437"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}