Google indeksuje strony z parametrem gtm_latency=1, a nie powinien!

gtm latency

Wszystko zaczęło się od jednej linijki w logach serwera.

Przeglądając ruch Googlebota na jednej z analizowanych stron, zauważyłem coś dziwnego. Robot odwiedzał adresy URL z parametrem ?gtm_latency=1, którego nigdzie nie było w strukturze serwisu:

  • W linkowaniu wewnętrznym nie mam takiego parametru
  • Żadna mapa strony go nie zawierała (i nie zawiera)
  • Parametr ?gtm_latency=1 dosłownie pojawił się znikąd, a właściwie został dodany przez samego Googlebota, o czym dowiedziałem się później

Pierwszy raz Googlebot odwiedził adres z tym parametrem 15.08.2025 o 01:49.

Szybkie wyszukiwanie w Google nie dało odpowiedzi. W dokumentacja Google Tag Manager nie ma o tym informacji. Fora SEO nie znają tematu. Zapytałem znanych mi specjalistów SEO ale też nie znają parametru. Dokładnie 18 sierpnia 2025 zapytałem społeczność na LinkedIn… no była próba pomocy ale podobne twierdzenia dostawałem od AI, co kompletnie mnie nie usatysfakcjonowało, bo podchodzi to pod halucynacje.

Następnie dnia 21 sierpnia 2025 napisałem na LinkedIn nowy post wyjaśniający co to jest parametr ?gtml_latency=1 z drobnymi informacjami technicznymi oraz protipem aby nie blokować tego parametru w robots.txt

Odczekałem miesiąc i na LinkedIn pojawiła się nowa publikacja, tym razem w języku angielskim, w której wprost oznaczyłem takie osobistości jak Barry Schwartz oraz John Mueller pytając o ten parametr ponieważ w Google już było zaindeksowanych ponad 166k stron.

Zapytałem:

  • Co stoi za rosnącą indeksacją stron z parametrem gtm_latency?
  • Dwa lata temu Gary Illyes wspomniał, że GoogleOther miał odciążyć główny indeks od zadań niezwiązanych z wyszukiwaniem. Czy coś się zmieniło w sposobie, w jaki GoogleOther wpływa na wyniki wyszukiwania?

Jednak odpowiedzi nie uzyskałem, a mój post został… zignorowany 🥲

Dlaczego to powinno obchodzić każdego specjalistę SEO?

Jeśli pracujesz w SEO, wiesz jak istotna jest kontrola nad tym co trafia do indeksu. Duplicate content, kanibalizacja, crawl budget, render budget to fundamenty technicznego SEO, a tutaj mamy sytuację, w której:

  1. Google sam generuje warianty URLi poprzez dodawanie parametrów diagnostycznych
  2. Te warianty trafiają do indeksu mimo że nie powinny
  3. Strony bez poprawnego canonical mogą mieć realny problem z duplikacją
  4. Nikt o tym nie mówi!

Także zaczynam 🙂

Czym jest ?gtm_latency=1

Przekopałem chyba pół internetu w poszukiwaniu wytłumaczenia i znalazłem dosłownie nic. Temat jest praktycznie nieobecny w publicznej przestrzeni. Kilka osób zadawało podobne pytania, ale bez odpowiedzi. Oficjalna dokumentacja Google Tag Managera na ten temat milczy. Nie znajdziesz go w żadnym przewodniku, FAQ ani artykule pomocy. Postanowiłem zajrzeć do kodu źródłowego gtm.js – to ten plik, który Google Tag Manager ładuje na każdej stronie z zainstalowanym kontenerem.

Co to jest parametr ?gtm_latency=1

?gtm_latency=1 to wewnętrzny parametr diagnostyczny Google Tag Managera, który aktywuje rozszerzone zbieranie danych telemetrycznych o wydajności i zachowaniu tagów na stronie.

Mówiąc prościej: to przełącznik, który mówi GTM „włącz tryb pełnego monitoringu”.

⚠️ Bardzo techniczna treść dotycząca analizy pliku gtm.js – jeśli jestem tym zainteresowany, to możesz rozwinąć tą sekcję

Analiza kodu gtm.js

Skrypt gtm.js jest skompresowany, co oznacza że nazwy zmiennych są skrócone do pojedynczych liter lub krótkich ciągów. Mimo to, analizując logikę kodu zrekonstruowałem jego działanie.

Najważniejszy fragment wygląda następująco:

function il(a) {
    var b = String(a[mf.Na] || "").replace(/_/g, "");
    return Kb(b, "cvt") ? "cvt" : b
}

var jl = x.location.search.indexOf("?gtm_latency=") >= 0 || 
         x.location.search.indexOf("&gtm_latency=") >= 0;

var kl = Math.random(),
    ll, ml = dj(27);
ll = jl || kl < ml;

var nl, ol = dj(42);
nl = jl || kl >= 1 - ol;

var pl = function(a) {
    pl[" "](a);
    return a
};
pl[" "] = function() {};

W kodzie GTM działają trzy zmienne kontrolujące poziom zbierania danych:

ZmiennaZnaczenieKiedy aktywna
jlCzy parametr gtm_latency= jest w URLZawsze gdy parametr obecny
llPodstawowe logowanie wydajnościGdy jl=true LUB losowo 0.5% sesji
nlRozszerzona telemetriaPraktycznie tylko gdy jl=true

Mechanizm losowej próbki 0.5%

Nawet bez parametru w adresie, GTM automatycznie włącza podstawową diagnostykę (ll) dla 0.5% wszystkich sesji:

var kl = Math.random();      // losowa wartość 0-1
var ml = dj(27);             // = 0.005 (czyli 0.5%)
ll = jl || kl < ml;          // true jeśli wylosowano < 0.005

Oznacza to, że:

  • 99.5% sesji to standardowe działanie GTM, minimalna telemetria
  • 0.5% sesji ma losowo aktywowane podstawowe logowanie wydajności
  • 100% sesji z ?gtm_latency=1 to pełna diagnostyka wymuszona parametrem

Co to oznacza w skali?

Za przykłąd niech posłuży strona majaca 10,000 sesji dziennie:

  1. 50 sesji dziennie będzie objętych podstawową diagnostyką
  2. Właściciel strony nie zobaczy żadnego parametru w URL
  3. Użytkownik nie zobaczy żadnej różnicy w działaniu strony
  4. Dane telemetryczne zostaną wysłane do Google

W skali całego internetu – miliony stron z GTM, miliardy sesji – Google zbiera ogromną ilość danych o wydajności Tag Managera bez jakiejkolwiek widocznej interakcji.

Wymuszenie pełnej diagnostyki

Gdy ?gtm_latency=1 pojawia się w adresie URL, zmienna jl przyjmuje wartość true. To z kolei wymusza:

  1. ll = true — aktywacja podstawowego logowania
  2. nl = true — aktywacja rozszerzonej telemetrii

Flaga nl w normalnych warunkach jest prawie zawsze wyłączona (bo ol = 0, więc kl >= 1 praktycznie nigdy nie zachodzi dla Math.random()). Jedynym sposobem na jej aktywację jest obecność parametru gtm_latency w URL, a to czyni ?gtm_latency=1 przełącznikiem pełnego trybu diagnostycznego.

Co dokładnie mierzy GTM w trybie diagnostycznym

Analiza kodu ujawnia, że aktywacja flag ll i nl uruchamia zbieranie szerokiego zakresu danych:

Wydajność i czasy wykonania
ParametrZnaczenie
sloScript Load Order – kolejność ładowania skryptów
hloHTML Load Order – kolejność ładowania elementów HTML
lstLoad Script Type – typ ładowanego skryptu
trTag Runtime – czas wykonania poszczególnych tagów
tiTag Identifier – identyfikatory uruchomionych tagów
Statusy wykonania tagów
KodStatus
1Tag rozpoczął wykonanie
5Tag zakończony sukcesem
6Tag zakończony porażką
7Wyjątek podczas wykonania
Zgodność z Consent Mode
ParametrZnaczenie
gcsGoogle Consent Status
gcdGoogle Consent Details
dmaZgodność z Digital Markets Act
gdprGDPR / RODO
gdpr_consentZgody GDPR / RODO
Dane o kontenerze i sesji
ParametrZnaczenie
idIdentyfikator kontenera GTM (np. GTM-XXXXXX)
pidProcess ID – identyfikator procesu (odświeżany co 24h)
cvContainer Version – wersja kontenera
tag_expTag Experiments – aktywne eksperymenty
btBehavior Type – typ zachowania kontenera
ctContainer Type – typ kontenera
Kto używa wymuszenia parametrem?

Na podstawie moich obserwacji parametr ?gtm_latency=1 jest dodawany przez:

  1. GoogleOther – podczas crawlowania stron (o tym szczegółowo później)
  2. Deweloperów i analityków – świadomie, do debugowania problemów z GTM
  3. Nieświadomych użytkowników, którzy kliknęli w link z tym parametrem (np. z zaindeksowanej strony)

Przypadek pierwszy jest najbardziej interesujący, bo stanowi rdzeń tego śledztwa.

AspektLosowa próbka 0.5%Wymuszenie parametrem
AktywacjaAutomatyczna, losowaŚwiadoma / przez URL
Flaga jlfalsetrue
Flaga lltruetrue
Flaga nlfalsetrue
Zakres danychPodstawowyPełny
WidocznośćNiewidoczna dla użytkownikaWidoczna w URL
Prawdopodobieństwo0.5% sesji100% gdy parametr obecny
Porównanie trybów: losowa próbka vs wymuszony parametr

Dlaczego Google potrzebuje dwóch trybów?

To jest moja interpretacja oparta na analizie kodu:

Tryb losowy (0.5%) służy do:

  1. Ciągłego monitoringu wydajności GTM w „naturalnych warunkach”
  2. Zbierania statystyk bez wpływu na zachowanie użytkowników
  3. Wykrywania globalnych problemów z wydajnością

Tryb wymuszony:

  1. Szczegółowej diagnostyki konkretnych stron
  2. Testowania zgodności z Consent Mode
  3. Audytu poprawności konfiguracji tagów
  4. Debugowania problemów zgłaszanych przez użytkowników

Dwa tryby = dwa cele. Jeden działa w tle na próbce, drugi jest narzędziem do głębokiej analizy.

Gdzie trafiają te dane

Zebrane dane są wysyłane w formie piksela śledzącego (tracking pixel) do endpointu:

https://www.googletagmanager.com/td?id=...&v=3&t=t&pid=...

Analizując payloady przechwycone w DevTools, można zidentyfikować strukturę zbieranych danych. Jednak tego trochę jest i rozmywa główny wątek, więc nie będę przytaczał konkretnych parametrów.

Jednak warto zwrócić uwagę na nagłówki HTTP zwracane przez endpoint telemetryczny:

HTTP/3 204 
date: Thu, 21 Aug 2025 08:47:40 GMT
pragma: no-cache
expires: Fri, 01 Jan 1990 00:00:00 GMT
cache-control: no-cache, no-store, must-revalidate
content-type: text/plain
cross-origin-resource-policy: cross-origin
server: Golfe2
content-length: 0

Z powyższego można wyczytać kilka rzeczy:

  • Status 204 No Content – serwer przyjął dane, ale nie zwraca treści – standardowe
  • Agresywne cache-control – dane nie powinny być cache’owane
  • Data expires w przeszłości (1990) – dodatkowe zabezpieczenie przed cache’owaniem
  • Server: Golfe2 – wewnętrzna nazwa serwera Google

O telemetrii Google w SERP napisałem osobny artykuł opierając się na w dokumentacji technicznej Google API Content Warehouse, badaniu akademickim, patentowi i materiałom ujawnionym w postępowaniu prawnym oraz własnych testach. Zapraszam, bo jest co czytać!

TL;DR – kliknięcia w Google mają wpływ na pozycje strony, tak samo jak czas powrotu do SERP

Co Google wie dzięki telemetrii GTM

Zbierając dane z trybu diagnostycznego, Google otrzymuje pełny obraz:

O stronie:

  • URL i struktura
  • Wersja i konfiguracja kontenera GTM
  • Aktywne eksperymenty

O wydajności:

  • Czasy ładowania skryptów
  • Kolejność ładowania zasobów
  • Pozycja GTM względem innych skryptów

O tagach:

  • Lista wszystkich tagów w kontenerze
  • Status wykonania każdego tagu (sukces/porażka/błąd)
  • Czasy wykonania
  • Zależności między tagami

O zgodach:

  • Stan Consent Mode
  • Zgodność z GDPR/RODO i DMA
  • Historia zmian zgód
  • Wpływ zgód na wykonanie tagów

O błędach:

  • Które tagi zgłaszają błędy
  • Typy błędów (exception, failure)
  • Kontekst błędów

Pytanie brzmi: kto i dlaczego dodaje ten parametr do adresów URL podczas crawlowania?

GoogleOther – robot, który miał być niewidoczny

W 2023 roku Gary Illyes z Google oficjalnie ogłosił wprowadzenie nowego user-agenta: GoogleOther.

Zadaniem miało być odciążenie głównego Googlebota od zadań niezwiązanych bezpośrednio z wyszukiwarką. GoogleOther to robot przeznaczony do celów badawczo-rozwojowych (R&D) – testowania, eksperymentowania, zbierania danych diagnostycznych.

Gary Illyes o GoogleOther

Dodaliśmy nowego robota, GoogleOther, do naszej listy robotów, który ostatecznie odciąży Googlebota. To dla Ciebie zmiana bezużyteczna, ale i tak uważam, że ciekawa.

Optymalizując sposób i zakres indeksowania Googlebota, chcieliśmy zapewnić, aby zadania indeksowania Googlebota były wykorzystywane wyłącznie wewnętrznie do tworzenia indeksu używanego przez wyszukiwarkę. W tym celu dodaliśmy nowego robota indeksującego, GoogleOther, który zastąpi niektóre inne zadania Googlebota, takie jak indeksowanie w ramach prac badawczo-rozwojowych, aby zwolnić część zasobów indeksowania dla Googlebota.

Nowy robot korzysta z tej samej infrastruktury co Googlebot, a zatem ma te same ograniczenia i funkcje: ograniczenia obciążenia hosta, robotstxt (choć inny token agenta użytkownika), wersję protokołu HTTP, rozmiar pobierania i tak dalej. To w zasadzie Googlebot pod inną nazwą.

Dokładnie 20 kwietnia 2023 Gary Illyes napisał to na swoim profilu LinkedIn

To logiczne rozwiązanie, skoro Google chce testować strony, sprawdzać wydajność, przeprowadzać audyty techniczne – nie powinno to wpływać na to, co widzą użytkownicy w wynikach wyszukiwania.

Teoria brzmi sensownie. Praktyka wygląda inaczej.

Dane z logów serwera

Analizując logi serwera dla stron, na których zauważyłem parametr ?gtm_latency=1, zidentyfikowałem następujące wzorce:

ParametrWartość
Adresy IP66.249.74.41, 66.249.74.42, 66.249.74.43, 66.249.74.32
Zakres IPPotwierdzony jako należący do Google
User-AgentGoogleOther
Typ crawleraSpecial (nie główny Googlebot)
Liczba wejść (przykładowa strona)47 w analizowanym okresie

Obserwacja:

Parametr ?gtm_latency=1 jest dodawany przez robota GoogleOther – dokładnie tego, który według Google miał być oddzielony od głównego indeksu.

Robot R&D wykonuje test diagnostyczny GTM. To pasuje do jego przeznaczenia.

Problem pojawia się w następnym kroku.

URLe wyciekają do głównego indeksu

Sprawdziłem, ile stron z parametrem ?gtm_latency=1 znajduje się w indeksie Google:

inurl:gtm_latency=1

Timeline wzrostu:

MomentLiczba zaindeksowanych URLi
Początek obserwacji~5 000
2 dni później~18 000
4 miesiące później (11.01.2026)541 000+

Pół miliona adresów URL z parametrem diagnostycznym w głównym indeksie Google.

📈 Wzrost indeksacji w Google

Od 5,8k do 541k zaindeksowanych stron w 148 dni

0 100k 200k 300k 400k 550k 1 20 40 60 80 100 120 140 Dzień 📢 DZIEŃ 31 – POST NA LINKEDIN Oznaczono: John Mueller (Google) 166k → 138k (spadek -17%) Potem: ciągły wzrost! 🚀 ↓ 138k (minimum) 200k 🎯 300k 🎯 400k 🎯 500k+ 🚀 Zaindeksowane strony Spadek
🔍 Kliknij wykres aby powiększyć
+9,211%
Całkowity wzrost
541k
Stron w indeksie
-17%
Spadek LinkedIn
148
Dni

To nie powinno się zdarzyć moim zdaniem 🙂

Czy to bug?

Niestety nie ma oficjalnego stanowiska Google w tej sprawie. Próbowałem uzyskać odpowiedź:

  • Oznaczyłem Barry’ego Schwartza na LinkedIn – brak odpowiedzi
  • Oznaczyłem Johna Muellera na LinkedIn – brak odpowiedzi
  • Przeszukałem oficjalne kanały Google – brak wzmianki o problemie

Mogę jedynie spekulować na podstawie obserwacji:

Hipoteza 1: To niezamierzony bug

GoogleOther miał być odizolowany, ale gdzieś w pipeline’ie indeksowania następuje „wyciek” – URLe odwiedzone przez GoogleOther trafiają do głównego indeksu wbrew założeniom.

Hipoteza 2: Zmiana polityki

Google zmieniło sposób działania GoogleOther ale nie zakomunikowało tego publicznie. URLe są teraz celowo indeksowane.

Hipoteza 3: Częściowa izolacja

GoogleOther jest oddzielony tylko dla niektórych typów crawli ale nie dla wszystkich. Crawle z parametrem ?gtm_latency=1 prześlizgują się przez system.

Bez oficjalnego stanowiska Google, pozostajemy w sferze domysłów.

Potencjalne konsekwencje SEO

Niezależnie od przyczyny, fakt pozostaje faktem: ponad pół miliona URLi z parametrem diagnostycznym znajduje się w indeksie Google. Co to oznacza dla właścicieli stron?

Problem 1: Duplikacja treści

Każdy URL z ?gtm_latency=1 to potencjalny duplikat strony bez parametru:

strona.pl/produkt/nazwa/                ← oryginał
strona.pl/produkt/nazwa/?gtm_latency=1  ← duplikat w indeksie

Jeśli strona nie ma poprawnie skonfigurowanego tagu rel="canonical", Google może:

  • Traktować obie wersje jako osobne strony
  • Dzielić sygnały rankingowe między nimi
  • Wybrać „złą” wersję jako kanoniczną (małe szanse ale prawdopodobne)

Problem 2: Kanibalizacja słów kluczowych

Dwie wersje tej samej strony mogą konkurować o te same frazy kluczowe:

Problem 3: Crawl budget

Każdy URL, który Google indeksuje, to URL który musi crawlować. Dla dużych serwisów:

  • 10,000 stron produktowych = potencjalnie 10,000 dodatkowych URLi z parametrem
  • Podwojenie liczby URLi do crawlowania
  • Wolniejsze odkrywanie nowych treści
  • Wolniejsze odświeżanie istniejących stron
  • Gorszy wynik związany z render budget

Problem 4: Zanieczyszczenie raportów

W Google Search Console mogą pojawić się:

  • Strony oznaczone jako „Indexed, not submitted in sitemap”
  • Rozbieżności w danych między wersjami URL

Uwaga: W moich obserwacjach strony z ?gtm_latency=1 NIE pojawiały się w GSC – widoczne były tylko w logach serwera. To może oznaczać, że Google traktuje je inaczej, lub że problem jest jeszcze nie w pełni widoczny w standardowych narzędziach albo do GSC trafiają wyniki tylko i wyłącznie bezpośrednio od głównego Googlebota, a GoogleOther nie ma powiazania z GSC.

Problem 5: Użytkownicy trafiają na URLe diagnostyczne

Jeśli URL z parametrem jest zaindeksowany, to może pojawić się w wynikach wyszukiwania. Użytkownik klika i trafia na stronę z parametrem, a następnie:

  • Udostępnia URL z parametrem
  • Linkuje do URL z parametrem
  • Zapisuje w zakładkach URL z parametrem

Parametr się rozprzestrzenia i to nie przez bezpośrednie działanie Google!

Analiza canonical – co pokazały dane

Przeprowadziłem audyt 142 losowo wybranych adresów z parametrem ?gtm_latency=1 widocznych w indeksie Google:

Stan canonicalLiczba stron% próby
✅ Canonical wskazuje na URL bez parametru11077.5%
❌ Brak tagu canonical1510.6%
🔥 Canonical wskazuje na URL Z parametrem96.3%
🤔 Canonical wskazuje na stronę główną (błąd)10.7%
💀 Błędy HTTP (403, 404, 405, 504)74.9%

Interpretacja:

  • 77.5% stron jest „bezpiecznych” – nawet jeśli URL z parametrem jest w indeksie, Google powinno respektować canonical i pokazywać prawidłową wersję w wynikach
  • 10.6% stron nie ma żadnej ochrony – brak canonical oznacza, że Google sam decyduje która wersja jest „kanoniczna”
  • 6.3% stron ma poważny problem – canonical wskazuje na URL z parametrem, co może utrwalić duplikację
  • 0.7% ma błędną konfigurację – canonical na stronę główną zamiast na właściwą podstronę
  • 4.9% zwraca błędy – co może generować dodatkowe problemy z indeksacją

Rekomendacje i protipy, czyli moje rozwiązania dla tego problemu

Skoro znam już mechanizm działania ?gtm_latency=1, skalę problemu i potencjalne konsekwencje SEO, czas odpowiedzieć na najważniejsze pytanie: co z tym zrobić?

Poniżej przedstawiam konkretne rekomendacje oparte na moich obserwacjach i analizie problemu.

✅ Rekomendacja 1: Przeprowadź audyt tagów canonical

To jest absolutna podstawa higieny technicznego SEO. Mam kilka scenariuszy:

Scenariusz A – Canonical skonfigurowany poprawnie:

<!-- Na stronie: strona.pl/produkt/nazwa/?gtm_latency=1 -->
<link rel="canonical" href="hxxps://strona.pl/produkt/nazwa/" />

Google widzi canonical wskazujący na wersję bez parametru. W większości przypadków:

  • Respektuje ustawienie canonicala
  • Wyświetli w wynikach wyszukiwania wersję bez parametru
  • Skonsoliduje sygnały rankingowe na właściwym URL

Scenariusz B – Brak canonical:

<!-- Na stronie: strona.pl/produkt/nazwa/?gtm_latency=1 -->
<!-- Brak tagu canonical -->

Google nie otrzymuje sygnału o wersji kanonicznej. Sam musi zdecydować:

  • Która wersja jest „lepsza”
  • Którą wyświetlić w wynikach
  • Jak podzielić sygnały rankingowe

W praktyce może wybrać wersję z parametrem jako kanoniczną. Tym bardziej jeśli to ona została zaindeksowana jako pierwsza!

Scenariusz C – Canonical wskazuje na siebie (self-referencing z parametrem):

<!-- Na stronie: strona.pl/produkt/nazwa/?gtm_latency=1 -->
<link rel="canonical" href="hxxps://strona.pl/produkt/nazwa/?gtm_latency=1" />

To najgorszy scenariusz. Google otrzymuje wyraźny sygnał: „Wersja z parametrem jest wersją kanoniczną” – utrwala to duplikację

Jak przeprowadzić audyt canonical

Krok 1: Sprawdź czy Twoja strona jest dotknięta problemem

Wyszukaj w Google:

site:twojadomena.pl inurl:gtm_latency=1

Jeśli wyniki są puste, to z dużym prawdopodobienstwem strona nie ma zaindeksowanych URLi z tym parametrem na obecną chwile.

Jeśli wyniki się pojawiają – masz potwierdzenie problemu i listę konkretnych URLi do sprawdzenia.

Krok 2: Dla każdego znalezionego URL sprawdź canonical

Canonical powinien wskazywać na URL bez parametru ?gtm_latency=1.

Stany problematyczne:

<!-- PROBLEM: Brak tagu canonical -->
<!-- (nic nie znaleziono) -->

<!-- PROBLEM: Canonical z parametrem -->
<link rel="canonical" href="https://twojadomena.pl/sciezka/do/strony/?gtm_latency=1" />

<!-- PROBLEM: Canonical na stronę główną zamiast właściwą podstronę -->
<link rel="canonical" href="https://twojadomena.pl/" />

Krok 3: Sprawdź implementację canonical w całym serwisie

Problem może dotyczyć nie tylko stron już zaindeksowanych z parametrem ale całej logiki generowania tagów canonical.

Typowe błędy implementacyjne:

BłądOpisJak wykryć
Dynamiczny canonicalCanonical generowany dynamicznie na podstawie aktualnego URL (włącznie z parametrami)Otwórz tę samą stronę z różnymi parametrami
Brak canonical na niektórych szablonachNiektóre typy stron (np. wyniki wewnętrznej wyszukiwarki) nie mają canonicalSprawdź różne szablony: strona główna, kategoria, produkt, artykuł, wyszukiwarka
Względne URL w canonicalUżycie ścieżki względnej zamiast pełnego URLhref="/produkt/nazwa/" zamiast href="hxxps://domena.pl/produkt/nazwa/"
HTTP zamiast HTTPSCanonical wskazuje na wersję HTTP gdy strona działa na HTTPSSprawdź protokół w href
Typowe błędy implementacyjne z adresem kanonicznym

❌ Rekomendacja 2: NIE blokuj parametru w robots.txt

To jest błędne podejście. Nie rób tego, o to dlaczego tak uważam.

Powód 1: robots.txt blokuje crawlowanie, nie indeksowanie

To różnica, którą wielu specjalistów SEO nie rozumie w pełni:

  1. robots.txt → Mówi robotom: „Nie wchodź na tę stronę”
  2. Robot nie crawluje strony ale…
  3. …jeśli strona już jest w indeksie lub ma linki zewnętrzne…
  4. …to Google MOŻE ją dalej wyświetlać w wynikach (bez snippetu)

Blokując ?gtm_latency=1 w robots.txt:

  • Googlebot nie będzie crawlował tych URLi
  • Ale jeśli URL już jest w indeksie – pozostanie w indeksie, bo Google nie widzi że nie powinien jej wyindeksować
  • Jeśli URL ma linki zewnętrzne – Google może go wyświetlać z adnotacją „Opis niedostępny z powodu robots.txt”
  • Nie rozwiążesz problemu duplikacji, a jedynie go pogorszysz

Powód 2: Blokujesz dostęp do danych diagnostycznych

Parametr ?gtm_latency=1 służy Google do zbierania danych o wydajności GTM. Blokując go:

  • Google nie może przeprowadzić audytu wydajności strony
  • Tracisz potencjalne korzyści z optymalizacji GTM po stronie Google
  • Możesz być nieświadomie wykluczony z pewnych optymalizacji

Powód 3: Możesz zablokować więcej niż zamierzasz

Reguły w robots.txt mogą mieć niezamierzone konsekwencje:

# Próba zablokowania parametru
Disallow: /*?gtm_latency=1

# ALE ta reguła może też zablokować:
# /strona/?gtm_latency=1&inny_parametr=wartość
# /strona/?ważny_parametr=coś&gtm_latency=1

W zależności od implementacji, możesz przypadkowo zablokować URLe z innymi, ważnymi parametrami.

Powód 4: To leczenie objawów, nie przyczyny

Blokowanie w robots.txt jest jedynie próbą obejścia problemu, a nie jego rozwiązaniem. Nawet jeśli zablokujesz ?gtm_latency=1, co z innymi parametrami które mogą pojawić się w przyszłości? ?utm_source=...? ?fbclid=...? ?gclid=...?

Poprawny canonical rozwiązuje problem dla wszystkich parametrów, raz na zawsze.

Co zamiast robots.txt ?

ZamiastUżyj
Disallow: /*?gtm_latencyPoprawnego tagu rel="canonical"
Blokowania crawlowaniaWskazania wersji kanonicznej
Ukrywania problemuRozwiązania przyczyny

✅ Rekomendacja 3: Monitoruj logi serwera

Google Search Console jest świetnym narzędziem ale nie pokazuje wszystkiego. W przypadku ?gtm_latency=1 zauważyłem, że:

  • URLe z parametrem pojawiają się w logach serwera
  • Ale NIE pojawiają się w raportach GSC

To oznacza, że jeśli polegasz tylko na GSC, możesz przegapić problem.

Dlaczego logi serwera są najważniejsze

Logi serwera to jedyne źródło pełnej prawdy o tym, co roboty robią na stronie:

Źródło danychCo pokazujeCzego nie pokazuje
Google Search ConsoleZaindeksowane strony, błędy crawlowania, wydajnośćWszystkie żądania robotów, parametry URL, szczegóły techniczne
Logi serweraKażde żądanie, dokładny URL z parametrami, user-agent, IP, timestampInterpretacja po stronie Google, decyzje o indeksowaniu

Narzędzia do analizy logów

NarzędzieTypModelUwagi
Screaming Frog Log AnalyserDesktopPłatneDedykowane do SEO, łatwe w użyciu
GoAccessOpen sourceBezpłatneDziała w terminalu, szybkie
AWStatsOpen sourceBezpłatneKlasyczne, dostępne na wielu hostingach
Elasticsearch + KibanaOpen sourceBezpłatne (self-hosted)Zaawansowane, wymaga konfiguracji
Cloudflare LogsSaaSPłatneTylko dla użytkowników Cloudflare

Podsumowanie

To, co zaczęło się od jednej dziwnej linijki w logach serwera, okazało się znacznie większym problemem niż mogłem przypuszczać 🙂

?gtm_latency=1 to wewnętrzny parametr diagnostyczny Google Tag Managera, który:

  • Wymusza pełną telemetrię wydajności, tagów i Consent Mode
  • Jest dodawany przez robota GoogleOther podczas crawlowania
  • Teoretycznie nie powinien trafiać do głównego indeksu wyszukiwarki

Fakty

FaktProblem
Google sam generuje warianty URLiWłaściciele stron nie mają nad tym kontroli
URLe wyciekają do indeksuPotencjalna duplikacja treści na masową skalę
~22% stron ma problemy z canonicalDziesiątki tysięcy stron z realnym ryzykiem SEO
Google oficjalnie milczyNie wiemy czy to bug, czy zamierzone działanie

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *