{"id":13207,"date":"2026-09-29T18:25:00","date_gmt":"2026-09-29T16:25:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=13207"},"modified":"2026-09-25T15:07:52","modified_gmt":"2026-09-25T13:07:52","slug":"tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\/","title":{"rendered":"Tutorial: Co dociera do page_location i dlaczego fragment nigdy nie trafia na serwer"},"content":{"rendered":"<p>Adres w pasku przegl\u0105darki wygl\u0105da jak jeden ci\u0105g znak\u00f3w. W drodze do raportu przechodzi przez cztery systemy, a ka\u017cdy z nich zachowuje inn\u0105 jego cz\u0119\u015b\u0107.<\/p>\n<p>Wi\u0119kszo\u015b\u0107 tego jest spodziewana. Jedna cz\u0119\u015b\u0107 nie: wszystko za krzy\u017cykiem w og\u00f3le nigdy nie dociera do serwera WWW, a do us\u0142ugi analitycznej dociera w ca\u0142o\u015bci &#8211; przeciwnie do tego, co zak\u0142ada wi\u0119kszo\u015b\u0107, i to rozstrzyga, gdzie l\u0105duj\u0105 trasy aplikacji jednostronicowej.<\/p>\n<figure class=\"lw-diagram\">\n<img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/page-location-lesen-pl.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"Adres podzielony na host, \u015bcie\u017ck\u0119, zapytanie i fragment, wraz z macierz\u0105 pokazuj\u0105c\u0105 dla ka\u017cdej cz\u0119\u015bci, czy zawiera j\u0105 dziennik serwera, page_location, pagePathPlusQueryString i pagePath\"><figcaption>Cztery systemy, cztery r\u00f3\u017cne wybory. Wiersz fragmentu biegnie inaczej ni\u017c wszystkie pozosta\u0142e.<\/figcaption><\/figure>\n<h2>Cz\u0119\u015bci adresu i to, kto kt\u00f3r\u0105 widzi<\/h2>\n<p>Adres sk\u0142ada si\u0119 z pi\u0119ciu kawa\u0142k\u00f3w, a rozdzielniki mi\u0119dzy nimi s\u0105 tym, czego szuka parser.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>https:\/\/shop.example\/kasse\/schritt-2?utm_source=newsletter&amp;gclid=Cj0KEQ#zahlung\n\u2514\u2500\u252c\u2500\u2518   \u2514\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2518\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\u2514\u2500\u2500\u2500\u252c\u2500\u2500\u2518\nSchemat    Host        Sciezka                Zapytanie              Fragment<\/code><\/pre>\n<p>Serwer WWW dostaje host w nag\u0142\u00f3wku, a \u015bcie\u017ck\u0119 i zapytanie w linii \u017c\u0105dania. Fragmentu nie dostaje nigdy, bo przegl\u0105darka go nie wysy\u0142a &#8211; ta cz\u0119\u015b\u0107 jest z za\u0142o\u017cenia po stronie klienta i tam pozostaje. Nie widzi jej \u017caden dziennik dost\u0119pu, \u017caden serwer po\u015brednicz\u0105cy ani \u017cadna regu\u0142a po stronie serwera.<\/p>\n<p>Tag analityczny dzia\u0142a w przegl\u0105darce, czyta <code>document.location.href<\/code>, a ten ci\u0105g zawiera wszystko \u0142\u0105cznie z fragmentem. Warto\u015b\u0107 w <code>page_location<\/code> jest przez to pe\u0142niejsza ni\u017c cokolwiek, co ma serwer.<\/p>\n<h2>Fragment i miejsce, w kt\u00f3rym l\u0105duje<\/h2>\n<p>Liczy si\u0119 to najbardziej przy aplikacjach k\u0142ad\u0105cych nawigacj\u0119 we fragmencie. \u015acie\u017cka postaci <code>\/#\/produkt\/42<\/code> jest dla serwera jedn\u0105 stron\u0105 &#8211; widzi on zawsze tylko <code>\/<\/code> &#8211; podczas gdy us\u0142uga analityczna dostaje dla ka\u017cdej trasy w\u0142asne <code>page_location<\/code>.<\/p>\n<p>Wynikaj\u0105 z tego trzy rzeczy i ci\u0105gn\u0105 w r\u00f3\u017cne strony.<\/p>\n<p>Pomiar takiej aplikacji po stronie serwera jest bez pomocy niemo\u017cliwy: analiza dziennik\u00f3w widzi jedn\u0105 stron\u0119 i sto tysi\u0119cy ods\u0142on. To argument za pomiarem po stronie klienta, kt\u00f3rego nic innego nie zast\u0119puje.<\/p>\n<p>Redakcja takiej aplikacji po stronie serwera jest r\u00f3wnie niemo\u017cliwa. Fragmentu z numerem zam\u00f3wienia albo adresem pocztowym nie usunie \u017caden serwer po\u015brednicz\u0105cy, bo nigdy go nie dostaje &#8211; jedynym miejscem usuni\u0119cia jest przegl\u0105darka, zanim tag odczyta.<\/p>\n<p>A wymiary raportowe traktuj\u0105 go niejednolicie, i to jest cz\u0119\u015b\u0107 praktyczna.<\/p>\n<h2>Co naprawd\u0119 zawiera ka\u017cdy wymiar<\/h2>\n<p>GA4 zapisuje jeden parametr i wyprowadza z niego kilka wymiar\u00f3w &#8211; a ka\u017cde wyprowadzenie co\u015b pomija.<\/p>\n<table style=\"width:100%;border-collapse:collapse\">\n<thead>\n<tr>\n<th style=\"white-space:nowrap;vertical-align:top\">Wymiar<\/th>\n<th style=\"vertical-align:top\">Zawarto\u015b\u0107 dla powy\u017cszego przyk\u0142adu<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top\">Adres strony<\/td>\n<td>https:\/\/shop.example\/kasse\/schritt-2?utm_source=\u2026&amp;gclid=\u2026#zahlung<\/td>\n<\/tr>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top\">Nazwa hosta<\/td>\n<td>shop.example<\/td>\n<\/tr>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top\">\u015acie\u017cka strony i ci\u0105g zapytania<\/td>\n<td>\/kasse\/schritt-2?utm_source=newsletter&amp;gclid=Cj0KEQ<\/td>\n<\/tr>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top\">\u015acie\u017cka strony<\/td>\n<td>\/kasse\/schritt-2<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Fragment pojawia si\u0119 wy\u0142\u0105cznie w pierwszym wierszu. Oznacza to, \u017ce raport pogrupowany po \u015bcie\u017cce strony pokazuje dla aplikacji prowadzonej krzy\u017cykiem jeden wiersz, a ten sam raport pogrupowany po adresie strony pokazuje sto &#8211; i jedno, i drugie to te same dane.<\/p>\n<p>Ci\u0105g zapytania jest drug\u0105 rzecz\u0105 wymagaj\u0105c\u0105 uwagi. Stoi w dw\u00f3ch z czterech wymiar\u00f3w, a ka\u017cdy parametr w nim staje si\u0119 cz\u0119\u015bci\u0105 warto\u015bci: strona osi\u0105gni\u0119ta z <code>gclid<\/code> i ta sama strona bez niego to dwa r\u00f3\u017cne wiersze. W witrynie z ruchem kampanijnym samo to rozbija pojedyncz\u0105 stron\u0119 na dziesi\u0105tki.<\/p>\n<h2>Ograniczenie d\u0142ugo\u015bci<\/h2>\n<p>Wi\u0119kszo\u015b\u0107 parametr\u00f3w zdarze\u0144 w GA4 przyjmuje sto znak\u00f3w. Adres strony jest przypadkiem szczeg\u00f3lnym i przyjmuje tysi\u0105c &#8211; hojnie, lecz nie bez granic.<\/p>\n<p>Adres d\u0142u\u017cszy zostaje skr\u00f3cony, a skr\u00f3cenie jest ciche. Boli dok\u0142adnie tam, gdzie adresy staj\u0105 si\u0119 d\u0142ugie: filtrowana strona kategorii z o\u015bmioma cechami, wynik wyszukiwania z zapytaniem w adresie oraz aplikacja prowadzona krzy\u017cykiem, kt\u00f3rej trasa niesie stan.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>\/\/ sprawdzic przed tagiem, jak dlugi jest adres naprawde\nconsole.log(document.location.href.length,\n            document.location.href.slice(0, 120));<\/code><\/pre>\n<p>Tam, gdzie granica jest prawdziwym ryzykiem, odpowied\u017a brzmi: skraca\u0107 celowo, zamiast pozwala\u0107 platformie ci\u0105\u0107. Zast\u0119pstwo <code>page_location<\/code> zachowuj\u0105ce \u015bcie\u017ck\u0119 i tylko wa\u017cne parametry jest zarazem kr\u00f3tsze i po\u017cyteczniejsze, bo usuwa r\u00f3wnie\u017c parametry kampanijne rozbijaj\u0105ce stron\u0119 na dziesi\u0105tki wierszy.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>function () {\n  var behalten = [\"seite\", \"sortierung\", \"filter\"];\n  var u = new URL(document.location.href);\n  var neu = new URL(u.origin + u.pathname);\n\n  behalten.forEach(function (name) {\n    if (u.searchParams.has(name)) {\n      neu.searchParams.set(name, u.searchParams.get(name));\n    }\n  });\n  return neu.href;          \/\/ bez fragmentu, bez parametrow kampanijnych\n}<\/code><\/pre>\n<p>Ostrze\u017cenie co do tej zmiennej: nale\u017cy j\u0105 przypi\u0105\u0107 do tagu ods\u0142ony i do ka\u017cdego tagu zdarzenia, inaczej us\u0142uga prowadzi dwa r\u00f3\u017cne wyobra\u017cenia tej samej strony. A parametry kampanijne trzeba odczyta\u0107, zanim zostan\u0105 usuni\u0119te &#8211; tag konfiguracyjny potrzebuje adresu pierwotnego, inaczej przypisanie znika razem z nimi.<\/p>\n<h2>Aplikacje jednostronicowe: odczyt we w\u0142a\u015bciwej chwili<\/h2>\n<p>Wczytanie strony odczytuje adres raz. Zmiana trasy w aplikacji nie wczytuje niczego na nowo, wi\u0119c nikt nie odczytuje go ponownie, dop\u00f3ki nikomu si\u0119 tego nie powie.<\/p>\n<p>Powstaje z tego najcz\u0119stsza b\u0142\u0119dna liczba w ca\u0142ym tym obszarze: druga trasa sesji melduje adres pierwszej, bo tag zadzia\u0142a\u0142, zanim szkielet zaktualizowa\u0142 adres. Kolejno\u015b\u0107 tych dw\u00f3ch czynno\u015bci jest w\u0142a\u015bciwo\u015bci\u0105 szkieletu, a nie mened\u017cera tag\u00f3w.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>\/\/ meldowac dopiero po zmianie adresu, nie przed\n(function () {\n  var alt = document.location.href;\n  [\"pushState\", \"replaceState\"].forEach(function (name) {\n    var original = history[name];\n    history[name] = function () {\n      var r = original.apply(this, arguments);\n      melde();\n      return r;\n    };\n  });\n  window.addEventListener(\"popstate\", melde);\n  window.addEventListener(\"hashchange\", melde);\n\n  function melde() {\n    if (document.location.href === alt) { return; }\n    alt = document.location.href;\n    window.dataLayer.push({\n      event: \"seitenwechsel\",\n      seite_adresse: document.location.href,\n      seite_titel: document.title\n    });\n  }\n})();<\/code><\/pre>\n<p>Dwa szczeg\u00f3\u0142y w tym fragmencie wykonuj\u0105 prawdziw\u0105 prac\u0119. Por\u00f3wnanie z poprzednim adresem t\u0142umi podw\u00f3jne zdarzenia wytwarzane przez szkielet zast\u0119puj\u0105cy stan bez zmiany trasy. A <code>hashchange<\/code> stoi osobno, bo sama zmiana krzy\u017cyka nie zawsze idzie przez <code>pushState<\/code> &#8211; i to jest dok\u0142adnie przypadek aplikacji prowadz\u0105cych trasy we fragmencie.<\/p>\n<p>Tytu\u0142 warto przekazywa\u0107 z tego samego powodu co adres: zmienia si\u0119 po trasie, a tag odczytuj\u0105cy go zbyt wcze\u015bnie melduje tytu\u0142 poprzedniej strony do \u015bcie\u017cki bie\u017c\u0105cej. Taka niezgodna para \u0142atwo rzuca si\u0119 w oczy w raporcie i bez tej wiedzy trudno j\u0105 wyja\u015bni\u0107.<\/p>\n<h2>Rozstrzygni\u0119cie, co nale\u017cy do raportu<\/h2>\n<p>Wszystko powy\u017csze opisuje to, co mo\u017cliwe. Rozstrzygni\u0119ciem jest to, co ma tam sta\u0107, a wyja\u015bniaj\u0105 to trzy pytania.<\/p>\n<p>Kt\u00f3re parametry rozr\u00f3\u017cniaj\u0105 strony, a kt\u00f3re jedynie oznaczaj\u0105, jak kto\u015b przyszed\u0142. Sortowanie i stronicowanie rozr\u00f3\u017cniaj\u0105; <code>gclid<\/code>, <code>fbclid<\/code> i zestaw kampanijny nie &#8211; a pozostawienie ich w wymiarze strony rozbija ka\u017cd\u0105 stron\u0119 wej\u015bcia na d\u0142ugi ogon wierszy po jednej ods\u0142onie.<\/p>\n<p>Czy fragment niesie informacj\u0119, czy po\u0142o\u017cenie. Trasa nale\u017cy do raportu; kotwica do nag\u0142\u00f3wka jest szumem, a jedno i drugie wygl\u0105da w warto\u015bci tak samo.<\/p>\n<p>Oraz czy cokolwiek w \u015brodku jest dan\u0105 osobow\u0105. W tym miejscu wcze\u015bniejsze pytanie o redakcj\u0119 wraca z ostrzejsz\u0105 kraw\u0119dzi\u0105: warto\u015bci we fragmencie nie wy\u0142apie \u017cadna regu\u0142a na serwerze WWW ani \u017caden serwer po\u015brednicz\u0105cy, a zanim opu\u015bci urz\u0105dzenie, usun\u0105\u0107 da si\u0119 j\u0105 wy\u0142\u0105cznie w przegl\u0105darce &#8211; przez co tag jest ostatni\u0105 lini\u0105, a nie wygod\u0105.<\/p>\n<div class=\"lw-faq\">\n<h2>Pytania i odpowiedzi<\/h2>\n<h3>Czy aplikacj\u0119 prowadzon\u0105 krzy\u017cykiem da si\u0119 przestawi\u0107 na prawdziwe \u015bcie\u017cki przekierowaniem po stronie serwera?<\/h3>\n<p>Nie wy\u0142\u0105cznie po stronie serwera. \u017b\u0105danie \/#\/produkt\/42 dociera do niego jako \/, wi\u0119c serwer nie wie, o kt\u00f3r\u0105 tras\u0119 chodzi\u0142o, i nie mo\u017ce dobra\u0107 pasuj\u0105cego przekierowania. Je\u015bli przekieruje \/ hurtowo na nowy adres, przegl\u0105darka sama do\u0142\u0105czy fragment z powrotem: standard HTTP stanowi, \u017ce cel przekierowania bez w\u0142asnego fragmentu dziedziczy fragment adresu pierwotnego. Z \/#\/produkt\/42 powstaje wi\u0119c \/app\/#\/produkt\/42, a nie \/app\/produkt\/42.<\/p>\n<p>Prze\u0142o\u017cenie starych tras musi zatem nast\u0105pi\u0107 w przegl\u0105darce: niewielki skrypt odczytuje <code>location.hash<\/code> i zast\u0119puje adres now\u0105 \u015bcie\u017ck\u0105 za pomoc\u0105 <code>history.replaceState<\/code> albo <code>location.replace<\/code>. Powinno si\u0119 to sta\u0107, zanim tag analityczny zg\u0142osi pierwsz\u0105 ods\u0142on\u0119, inaczej ka\u017cdy stary adres pojawi si\u0119 jeszcze raz jako osobna ods\u0142ona.<\/p>\n<p>W raportach zmiana przerywa szereg czasowy. Wcze\u015bniej wszystkie trasy znajdowa\u0142y si\u0119 pod jedn\u0105 \u015bcie\u017ck\u0105 strony i r\u00f3\u017cni\u0142y si\u0119 tylko adresem strony, p\u00f3\u017aniej rozk\u0142adaj\u0105 si\u0119 na w\u0142asne \u015bcie\u017cki. Por\u00f3wnanie okres\u00f3w sprzed zmiany i po niej wymaga wi\u0119c przyporz\u0105dkowania starych fragment\u00f3w do nowych \u015bcie\u017cek.<\/p>\n<h3>Czy skrypt z artyku\u0142u zg\u0142asza tak\u017ce skoki do kotwic na tej samej stronie?<\/h3>\n<p>Tak. Klikni\u0119cie kotwicy zmienia <code>document.location.href<\/code> i wywo\u0142uje hashchange, a por\u00f3wnanie z poprzednim adresem przepuszcza zdarzenie, bo adres rzeczywi\u015bcie si\u0119 zmieni\u0142. Na stronach ze spisem tre\u015bci ka\u017cdy skok daje wtedy zmian\u0119 trasy. Zapobiega temu dodatkowy warunek, kt\u00f3ry liczy fragment tylko wtedy, gdy niesie tras\u0119, na przyk\u0142ad gdy zaczyna si\u0119 od <code>#\/<\/code>.<\/p>\n<h3>Czy kontener po stronie serwera widzi fragment?<\/h3>\n<p>Tak, ale inn\u0105 drog\u0105 ni\u017c serwer WWW. Kontener nie dostaje \u017c\u0105dania strony, tylko \u017c\u0105danie pomiarowe tagu, a w nim page_location jako warto\u015b\u0107, \u0142\u0105cznie z fragmentem, dok\u0142adnie tak, jak tag odczyta\u0142 j\u0105 z <code>document.location.href<\/code>. Tam warto\u015b\u0107 da si\u0119 przepisa\u0107 albo skr\u00f3ci\u0107, zanim trafi dalej do us\u0142ugi analitycznej.<\/p>\n<p>Dla danych osobowych we fragmencie niewiele to zmienia: gdy kontener je usuwa, opu\u015bci\u0142y ju\u017c przegl\u0105dark\u0119 i dotar\u0142y na w\u0142asny serwer, gdzie zale\u017cnie od konfiguracji mog\u0105 trafi\u0107 tak\u017ce do dziennik\u00f3w. Je\u015bli warto\u015b\u0107 w og\u00f3le nie ma opu\u015bci\u0107 urz\u0105dzenia, nadal trzeba j\u0105 usun\u0105\u0107 w przegl\u0105darce, zanim tag j\u0105 odczyta.<\/p>\n<\/div>\n<div class=\"lw-quellen\">\n<h2>\u0179r\u00f3d\u0142a<\/h2>\n<ul>\n<li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc3986.html\" target=\"_blank\" rel=\"noopener noreferrer\">RFC 3986: URI Generic Syntax<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Adres ma pi\u0119\u0107 cz\u0119\u015bci, a ka\u017cdy system po drodze widzi inny ich wyb\u00f3r. Cz\u0119\u015b\u0107 za krzy\u017cykiem jest t\u0105 zaskakuj\u0105c\u0105: niewidoczna w ka\u017cdym dzienniku serwera i zapisywana w ca\u0142o\u015bci przez tag analityczny.<\/p>\n","protected":false},"author":1,"featured_media":13272,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[117],"tags":[92100,92238,92116],"class_list":["post-13207","post","type-post","status-publish","format-standard","hentry","category-tutorials-pl","tag-google-analytics-4-pl","tag-tutorial-pl","tag-web-analytics-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tutorial: Co dociera do page_location i dlaczego fragment nigdy nie trafia na serwer | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Kt\u00f3ra cz\u0119\u015b\u0107 adresu dociera do kt\u00f3rego systemu, dlaczego fragmentu brak w dzienniku serwera, a stoi w GA4, i co zawiera ka\u017cdy wymiar strony.\" \/>\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-analytics-pl\/tutorials-pl\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial: Co dociera do page_location i dlaczego fragment nigdy nie trafia na serwer | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Kt\u00f3ra cz\u0119\u015b\u0107 adresu dociera do kt\u00f3rego systemu, dlaczego fragmentu brak w dzienniku serwera, a stoi w GA4, i co zawiera ka\u017cdy wymiar strony.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-29T16:25:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13207-tutorial-co-dociera-do-page-location-i-d.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=\"8 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-analytics-pl\\\/tutorials-pl\\\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Tutorial: Co dociera do page_location i dlaczego fragment nigdy nie trafia na serwer\",\"datePublished\":\"2026-09-29T16:25:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\\\/\"},\"wordCount\":1460,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13207-tutorial-co-dociera-do-page-location-i-d.png\",\"keywords\":[\"Google Analytics 4\",\"Tutorial\",\"Web Analytics\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\\\/\",\"name\":\"Tutorial: Co dociera do page_location i dlaczego fragment nigdy nie trafia na serwer | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13207-tutorial-co-dociera-do-page-location-i-d.png\",\"datePublished\":\"2026-09-29T16:25:00+00:00\",\"description\":\"Kt\u00f3ra cz\u0119\u015b\u0107 adresu dociera do kt\u00f3rego systemu, dlaczego fragmentu brak w dzienniku serwera, a stoi w GA4, i co zawiera ka\u017cdy wymiar strony.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13207-tutorial-co-dociera-do-page-location-i-d.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13207-tutorial-co-dociera-do-page-location-i-d.png\",\"width\":1200,\"height\":630,\"caption\":\"Tutorial: Co dociera do page_location i dlaczego fragment nigdy nie trafia na serwer\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial: Co dociera do page_location i dlaczego fragment nigdy nie trafia na serwer\"}]},{\"@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":"Tutorial: Co dociera do page_location i dlaczego fragment nigdy nie trafia na serwer | Lukas Wojcik","description":"Kt\u00f3ra cz\u0119\u015b\u0107 adresu dociera do kt\u00f3rego systemu, dlaczego fragmentu brak w dzienniku serwera, a stoi w GA4, i co zawiera ka\u017cdy wymiar strony.","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-analytics-pl\/tutorials-pl\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\/","og_locale":"en_US","og_type":"article","og_title":"Tutorial: Co dociera do page_location i dlaczego fragment nigdy nie trafia na serwer | Lukas Wojcik","og_description":"Kt\u00f3ra cz\u0119\u015b\u0107 adresu dociera do kt\u00f3rego systemu, dlaczego fragmentu brak w dzienniku serwera, a stoi w GA4, i co zawiera ka\u017cdy wymiar strony.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-29T16:25:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13207-tutorial-co-dociera-do-page-location-i-d.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Tutorial: Co dociera do page_location i dlaczego fragment nigdy nie trafia na serwer","datePublished":"2026-09-29T16:25:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\/"},"wordCount":1460,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13207-tutorial-co-dociera-do-page-location-i-d.png","keywords":["Google Analytics 4","Tutorial","Web Analytics"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\/","name":"Tutorial: Co dociera do page_location i dlaczego fragment nigdy nie trafia na serwer | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13207-tutorial-co-dociera-do-page-location-i-d.png","datePublished":"2026-09-29T16:25:00+00:00","description":"Kt\u00f3ra cz\u0119\u015b\u0107 adresu dociera do kt\u00f3rego systemu, dlaczego fragmentu brak w dzienniku serwera, a stoi w GA4, i co zawiera ka\u017cdy wymiar strony.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13207-tutorial-co-dociera-do-page-location-i-d.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13207-tutorial-co-dociera-do-page-location-i-d.png","width":1200,"height":630,"caption":"Tutorial: Co dociera do page_location i dlaczego fragment nigdy nie trafia na serwer"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-co-dociera-do-page_location-i-dlaczego-fragment-nigdy-nie-trafia\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tutorial: Co dociera do page_location i dlaczego fragment nigdy nie trafia na serwer"}]},{"@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\/13207","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=13207"}],"version-history":[{"count":3,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13207\/revisions"}],"predecessor-version":[{"id":20848,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13207\/revisions\/20848"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/13272"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=13207"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=13207"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=13207"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}