
Indeksacja sklepu internetowego - dlaczego Google nie indeksuje produktów i kategorii i jak to naprawić
Indeksacja sklepu internetowego to pytanie, które strony sprzedażowe Google ma w indeksie, a które pomija i dlaczego. Reguła na start: policz udział zaindeksowanych kategorii i produktów z mapy witryny. Jeśli jest niższy niż ok. 80%, sprawdź, który status dominuje w Search Console. „Wykryto - obecnie nie zindeksowano” oznacza, że Google nie dotarł do stron (linkowanie, wydajność, za dużo adresów), a „Zeskanowano - obecnie nie zindeksowano” - że dotarł i uznał je za mało wartościowe (duplikaty, puste karty). Produkt chwilowo niedostępny zostaw z kodem 200 i dostępnością OutOfStock. Wycofany produkt z ruchem lub linkami przekieruj kodem 301 na następcę albo kategorię, a bez nich zwróć 404 lub 410.
Dlaczego Google nie indeksuje produktów i kategorii: statusy z Search Console przełożone na przyczyny w sklepie, „Wykryto” czy „Zeskanowano - obecnie nie zindeksowano”, produkty niedostępne i wycofane, warianty, mapy witryn 30 polskich sklepów, skrypt URL Inspection API i pułapka z lastmod.
/// WPIS W SKRÓCIE
W tym wpisie pokazuję, jak policzyć indeksację stron sprzedażowych, co oznacza w sklepie każdy status z raportu Indeksowanie stron, jak odróżnić „Wykryto” od „Zeskanowano”, co zrobić z produktem niedostępnym i wycofanym, jak obsłużyć warianty, wyniki mojego sprawdzenia map witryn w polskich sklepach, skrypt do mierzenia indeksacji przez API Search Console i pułapkę z datą lastmod.
Czy brak indeksacji to w ogóle problem - pierwsza decyzja
Nie każdy niezaindeksowany adres to problem. Google pisze wprost, że większość stron ma kilka niezaindeksowanych adresów, a status „Niezindeksowana” nie musi być niczym złym - w indeksie mają być strony kanoniczne, a nie każdy adres w sklepie. Problemem jest dopiero brak w indeksie stron, które mają sprzedawać.
| Co nie jest w indeksie | Czy to problem | Co zrobić |
|---|---|---|
| Adresy filtrów, sortowania, wyszukiwarki wewnętrznej | Nie, jeśli to celowe | Nic, sprawdź tylko, czy nie ma ich w mapie witryny |
| Duplikaty wariantów z canonicalem do produktu głównego | Nie | Nic - status „Strona alternatywna z prawidłowym tagiem strony kanonicznej” jest w porządku |
| Usunięte produkty bez linków i ruchu (404) | Nie | Usuń je z mapy witryny i z linków wewnętrznych |
| Kategorie z ruchem i popytem | Tak | Diagnoza według tabeli statusów niżej |
| Produkty, które się sprzedają albo mają popyt | Tak | Diagnoza według tabeli statusów niżej |
| Nowe produkty po tygodniach od dodania | Tak, gdy dotyczy większości nowości | Linkowanie, mapa witryny z lastmod, wydajność serwera |
Jak policzyć udział zaindeksowanych stron sprzedażowych: podziel mapę witryny na osobne pliki dla kategorii i dla produktów, prześlij je w Search Console i w raporcie Indeksowanie stron wybierz filtr dla każdego pliku. Dostajesz liczbę zaindeksowanych i niezaindeksowanych adresów osobno dla kategorii i produktów, a nie jedną liczbę dla całego serwisu z filtrami i stronami regulaminów.
Statusy w Search Console - co oznaczają w sklepie i jak je naprawić
Najważniejsza tabela wpisu. Każdy status z raportu Indeksowanie stron przełożyłem na typowe przyczyny w sklepie i poprawkę.
| Status w Search Console | Co mówi Google | Typowa przyczyna w sklepie | Poprawka |
|---|---|---|---|
| Wykryto - obecnie nie zindeksowano | Google zna adres, ale jeszcze go nie pobrał | Produkty linkowane tylko z dalekich stron paginacji, za dużo adresów filtrów zjada crawl, wolny serwer | Linki do produktów z kategorii i stron głównych, porządek z filtrami, szybszy serwer |
| Zeskanowano - obecnie nie zindeksowano | Google pobrał stronę, ale jej nie zindeksował | Karta z opisem producenta, prawie pusta kategoria, wariant bez różnic, strona bez produktów | Unikalna treść kart z popytem, scalenie wariantów, usunięcie pustych stron |
| Duplikat, użytkownik nie oznaczył strony kanonicznej | Duplikat bez wskazanej wersji kanonicznej | Ten sam produkt pod kilkoma adresami (kategoria w ścieżce, parametry), brak canonicala | Jeden adres produktu i canonical do niego |
| Duplikat, Google wybrał inną stronę kanoniczną niż użytkownik | Google uznał inny adres za lepszy kanoniczny | Canonical do strony, która różni się treścią, sprzeczne sygnały (linki, mapa witryny wskazują co innego) | Ujednolicić canonical, linki wewnętrzne i mapę witryny |
| Strona alternatywna z prawidłowym tagiem strony kanonicznej | Strona poprawnie wskazuje kanoniczną | Warianty i parametry z canonicalem | Nic - to stan prawidłowy |
| Strona wykluczona za pomocą tagu „noindex” | Google trafił na noindex | Wtyczka filtrów, motyw albo ustawienie platformy dało noindex kategoriom lub produktom | Sprawdzić, czy noindex jest celowy; usunąć go ze stron sprzedażowych |
| Nie znaleziono (404) | Strona zwraca 404 | Usunięte produkty | Usunąć z mapy witryny i linków; 301 tylko, gdy jest następca lub ruch |
| Błąd soft 404 | Strona wygląda na błąd, ale zwraca 200 | Pusta kategoria, produkt z komunikatem „brak w ofercie” bez treści | Treść i zamienniki na stronie albo prawdziwy kod 404 |
| Strona zawiera przekierowanie | Adres przekierowuje gdzie indziej | Stare adresy w mapie witryny i linkach po migracji | Podmienić adresy w mapie i linkach na docelowe |
| Zablokowana przez plik robots.txt | Robot nie może pobrać strony | Reguła w robots.txt łapie też strony sprzedażowe | Poprawić regułę |
| Zaindeksowana, ale zablokowana przez plik robots.txt | W indeksie mimo blokady | Filtry zablokowane po tym, jak trafiły do indeksu | Najpierw noindex, blokada później - opisuję to we wpisie o [filtrach w sklepie](/pl/blog/filtry-w-sklepie-internetowym-seo) |
Po poprawce kliknij „Sprawdź poprawkę” w raporcie. Google podaje, że weryfikacja trwa zwykle do ok. dwóch tygodni, a czasem dłużej.
„Wykryto” czy „Zeskanowano” - drzewo decyzyjne
Te dwa statusy brzmią podobnie, ale mają różne przyczyny i różne naprawy. Tak je diagnozuję:
- 1.Większość nieindeksowanych produktów ma status „Wykryto - obecnie nie zindeksowano”? Google nie zdążył ich pobrać. Sprawdź w raporcie Statystyki indeksowania, ile adresów dziennie pobiera Googlebot i jaki jest czas odpowiedzi serwera. Jeśli robot pobiera głównie adresy filtrów i parametrów, zacznij od nich. Jeśli czas odpowiedzi rośnie, problemem jest serwer.
- 2.Produkty są linkowane tylko z dalekich stron paginacji? Dodaj linki z kategorii, podkategorii, sekcji „nowości” i powiązanych produktów. Google zaleca linkowanie do wszystkich produktów, które mają być w indeksie.
- 3.Dominuje „Zeskanowano - obecnie nie zindeksowano”? Google pobrał strony i je pominął. Porównaj kilka takich kart z zaindeksowanymi: zwykle różnią się długością i unikalnością opisu, liczbą parametrów, zdjęć i opinii albo są wariantem innego produktu.
- 4.„Zeskanowano” dotyczy kategorii? Sprawdź, czy kategoria ma wystarczająco produktów i czy nie jest prawie identyczna z inną (np. dwie kategorie z tą samą listą). Puste i zdublowane kategorie scal albo usuń.
- 5.Strony mają status „Duplikat”? To nie problem jakości, tylko adresów: ten sam produkt pod kilkoma adresami. Ustal jeden adres i ujednolić canonical, linki i mapę witryny.
O tym, jak Google przydziela zasoby na pobieranie stron, piszę szerzej we wpisie o crawl budgecie.
Produkt niedostępny i wycofany - co zrobić z jego stroną
Najczęstsze pytanie z mojej praktyki. Odpowiedź zależy od tego, czy produkt wróci, czy ma następcę i czy jego strona ma ruch albo linki z zewnątrz.
| Sytuacja | Co zrobić ze stroną | Kod HTTP | Dane Product |
|---|---|---|---|
| Chwilowo niedostępny, wróci | Zostaw stronę, pokaż termin dostawy lub zapis na powiadomienie | 200 | availability: OutOfStock (albo BackOrder, PreOrder) |
| Wycofany, jest następca | Przekieruj na następcę | 301 | Na stronie następcy normalne dane Product |
| Wycofany, bez następcy, strona ma ruch lub linki | Zostaw stronę z informacją i zamiennikami albo przekieruj na kategorię | 200 albo 301 | availability: Discontinued, gdy zostawiasz stronę |
| Wycofany, bez ruchu i linków | Usuń stronę | 404 lub 410 | Brak |
| Produkt sezonowy | Zostaw stronę przez cały rok | 200 | OutOfStock poza sezonem |
Dwie rzeczy, o których warto pamiętać. Po pierwsze, Google traktuje wszystkie kody 4xx (poza 429) tak samo, więc wybór między 404 a 410 nie ma praktycznego znaczenia - zaindeksowane adresy z kodem 4xx wypadają z indeksu. Po drugie, przekierowanie wycofanego produktu na stronę główną albo niepasującą kategorię często kończy się statusem soft 404. Przekierowuj tylko tam, gdzie jest naprawdę podobny produkt.
Warianty produktów - jeden adres czy wiele
Rozmiary i kolory potrafią wielokrotnie powiększyć liczbę adresów. Zasada: osobny, indeksowany adres dostaje tylko wariant, którego ludzie szukają osobno (np. kolor w modzie, pojemność w elektronice). Pozostałe warianty to parametr na jednej stronie produktu albo osobne adresy z canonicalem do produktu głównego.
| Wariant | Przykład | Zalecenie |
|---|---|---|
| Rozmiar | buty 38, 39, 40 | Jeden adres produktu, rozmiar jako wybór na stronie |
| Kolor z popytem | czarne vs białe sneakersy jednego modelu | Osobne adresy, każdy z canonicalem do siebie i własnym zdjęciem |
| Kolor bez popytu | 10 odcieni podkładu | Jeden adres albo osobne z canonicalem do głównego |
| Pojemność, wersja | smartfon 128 GB vs 256 GB | Osobne adresy, jeśli różnią się ceną i ludzie ich szukają |
| Zestaw vs produkt pojedynczy | ekspres + kawa | Osobne produkty |
Jak opisać warianty w danych strukturalnych (ProductGroup, hasVariant), pokażę w osobnym wpisie z tej serii.
Mapa witryny dla dużego katalogu
Mapa witryny nie gwarantuje indeksacji, ale dla sklepu z tysiącami produktów to główne źródło informacji o nowych i zmienionych stronach. Zasady Google: jeden plik to maksymalnie 50 tys. adresów albo 50 MB, w mapie mają być adresy kanoniczne, które chcesz widzieć w wynikach, Google ignoruje priority i changefreq, a datę lastmod bierze pod uwagę tylko wtedy, gdy jest konsekwentnie zgodna z prawdą.
| Element | Dobrze | Źle |
|---|---|---|
| Podział plików | Osobne pliki: kategorie, produkty (po 10-50 tys.), poradniki | Jeden plik z całym sklepem i stronami informacyjnymi |
| Zawartość | Tylko adresy z kodem 200, bez noindex, z canonicalem do siebie | Przekierowania, 404, filtry, adresy z noindex |
| lastmod | Data ostatniej istotnej zmiany: cena, dostępność, opis | Bieżąca data przy każdym wygenerowaniu mapy |
| Aktualizacja | Automatycznie przy dodaniu lub zmianie produktu | Ręcznie raz na jakiś czas |
Co pokazały mapy witryn polskich sklepów - moje sprawdzenie
Jak sprawdzałem: 22 października 2026 skrypt odczytał mapy witryn 30 polskich sklepów (z pliku robots.txt, a gdy go tam nie było - spod /sitemap.xml). Dla każdego sklepu wylosował 40 adresów z plików z produktami i sprawdził kod HTTP (bez podążania za przekierowaniami), meta robots, nagłówek X-Robots-Tag i canonical. Osobno sprawdziłem daty lastmod w maksymalnie trzech plikach mapy na sklep. Kody HTTP udało się sprawdzić w 20 sklepach (800 adresów), daty lastmod w 23. Pozostałe sklepy blokowały automatyczne pobieranie albo nie udało się odczytać ich map.
| Co sprawdzałem | Wynik | Przykład |
|---|---|---|
| Adresy z przekierowaniem w mapie witryny | 43 z 800 (5,4%), w 6 z 20 sklepów | neonet.pl: 21 z 40 wylosowanych produktów przekierowywało na nowy adres po zmianie nazwy produktu |
| Adresy z noindex w mapie witryny | 5 z 800, w 2 sklepach | mediamarkt.pl: 3 karty produktów z noindex; melisa.pl: 2 strony grup |
| Adresy 404 w mapie witryny | 0 z 800 | Sklepy usuwają wycofane produkty z mapy |
| Canonical do innej strony | 0 z 800 | - |
| Lastmod z bieżącą datą dla (prawie) wszystkich adresów | 3 z 23 sklepów | morele.net: 3 000 z 3 000 adresów, neonet.pl: 604 z 604, drogerienatura.pl: 96% |
| Jedna stara data dla większości adresów | 1 z 23 | castorama.pl: 80% adresów z tą samą datą z kwietnia 2026 |
| Brak lastmod (poniżej 10% adresów) | 5 z 23 | mediamarkt.pl, kontri.pl, ezebra.pl, melisa.pl, vox.pl |
| Zróżnicowane, wiarygodne daty lastmod | 14 z 23 | m.in. zooplus.pl, sportano.pl, gemini.pl, obi.pl |
Wnioski:
- Duże sklepy rzadko mają w mapie błędy 404, za to często przekierowania. Najczęstsza przyczyna to zmiana adresu produktu albo kategorii bez aktualizacji mapy. Pojedyncze przekierowanie nie szkodzi, ale gdy dotyczy połowy próbki, robot co dzień pobiera tysiące adresów, które nie trafią do indeksu, a w raporcie rośnie liczba stron ze statusem „Strona zawiera przekierowanie”.
- Data lastmod to najsłabszy element map. W 9 z 23 sklepów jest bezużyteczna: albo jest wszędzie dzisiejsza, albo wszędzie taka sama, albo jej nie ma. Tylko 14 sklepów podaje daty, które mogą realnie pomóc Google znaleźć zmienione produkty.
- Noindex w mapie witryny to sprzeczny sygnał - mapa mówi „indeksuj”, strona mówi „nie indeksuj”. W próbce zdarzało się to rzadko, ale w dużym katalogu nawet 1-2% to setki takich adresów.
Ograniczenia: to próbka 40 adresów na sklep i do trzech plików mapy na sklep przy lastmod, a canonical i noindex sprawdzałem w surowym HTML, bez wykonywania JavaScriptu.
Ile to pracy - dwie skale
Szacunek z moich wycen (październik 2026) dla diagnozy i napraw indeksacji, bez przebudowy treści kart produktów.
| Założenie | Sklep A: 500 produktów | Sklep B: 20 000 produktów |
|---|---|---|
| Pliki mapy witryny | 1 plik albo 2 (kategorie, produkty) | kategorie + 1 plik produktów, przy 50 tys. i więcej kilka plików |
| Diagnoza statusów i próbka adresów | 4-6 godz. | 15-25 godz., w tym skrypt i analiza logów |
| Poprawki techniczne (canonical, noindex, mapa, przekierowania) | 6-12 godz. | 30-60 godz. |
| Weryfikacja poprawki w Search Console | zwykle do 2 tygodni | zwykle do 2 tygodni, przy dużych zmianach dłużej |
| Kiedy widać efekt w liczbie zaindeksowanych stron | 2-6 tygodni | 1-3 miesiące |
Taką diagnozę i poprawki robię dla sklepów w ramach pozycjonowania sklepów internetowych - zaczynam zawsze od próbki adresów z mapy witryny, jak w skrypcie poniżej.
Skrypt: udział zaindeksowanych produktów przez API Search Console
Raport w panelu pokazuje statusy, ale nie dla wybranej próbki adresów. Skrypt pobiera adresy z mapy witryny, losuje próbkę i sprawdza każdy przez URL Inspection API. Limit API to 2 000 sprawdzeń dziennie na usługę, dlatego dla dużego sklepu sprawdzasz próbkę, a nie wszystko.
# pip install google-api-python-client google-auth requestsimport collections, random, re, requestsfrom google.oauth2 import service_accountfrom googleapiclient.discovery import buildSITE = "sc-domain:twojsklep.pl"SITEMAPS = {"kategorie": "https://twojsklep.pl/sitemap-kategorie.xml", "produkty": "https://twojsklep.pl/sitemap-produkty-1.xml"}SAMPLE = 200 # na typ strony; limit API: 2000 dziennie na usługęcreds = service_account.Credentials.from_service_account_file( "sa.json", scopes=["https://www.googleapis.com/auth/webmasters.readonly"])gsc = build("searchconsole", "v1", credentials=creds)for kind, sm in SITEMAPS.items(): urls = re.findall(r"<loc>\s*([^<\s]+)\s*</loc>", requests.get(sm, timeout=30).text) sample = random.Random(1).sample(urls, min(SAMPLE, len(urls))) states = collections.Counter() for u in sample: res = gsc.urlInspection().index().inspect(body={"inspectionUrl": u, "siteUrl": SITE}).execute() idx = res["inspectionResult"]["indexStatusResult"] states[idx.get("coverageState", "brak danych")] += 1 ok = sum(v for k, v in states.items() if k.startswith("Submitted and indexed") or k.startswith("Indexed")) print(f"\n{kind}: {len(urls)} adresów w mapie, próbka {len(sample)}, zaindeksowane {ok / len(sample):.0%}") for state, n in states.most_common(): print(f" {n:4d} {state}")
Wynik to udział zaindeksowanych stron osobno dla kategorii i produktów oraz lista najczęstszych statusów w próbce, które od razu wskazują wiersz w tabeli statusów. Uruchamiaj go co miesiąc i zapisuj wyniki, żeby widzieć trend.
Pułapka produkcyjna: lastmod z dzisiejszą datą
Najczęstszy błąd w mapach witryn sklepów: generator wpisuje do lastmod bieżącą datę przy każdym wygenerowaniu mapy, dla wszystkich adresów naraz. Wygląda to, jakby cały katalog zmieniał się codziennie. W moim sprawdzeniu robiły tak 3 z 23 sklepów. Google używa lastmod tylko wtedy, gdy jest konsekwentnie i sprawdzalnie zgodny z prawdą, więc taka data przestaje cokolwiek znaczyć, a sklep traci najprostszy sposób, żeby wskazać robotowi nowe i zmienione produkty.
Poprawka: lastmod brany z bazy sklepu, aktualizowany przy zmianie, która ma znaczenie dla kupującego - cena, dostępność, opis, zdjęcia. Zmiana stopki, daty w copyright czy przeliczenie stanu magazynowego bez zmiany dostępności to nie są istotne zmiany.
Czego nie robić
- Nie walcz o indeksację wszystkich adresów w sklepie - w indeksie mają być strony sprzedażowe, nie filtry i parametry.
- Nie wysyłaj ręcznie do indeksowania setek adresów przez Sprawdzanie adresu URL - to nie rozwiązuje przyczyny.
- Nie usuwaj z kodem 404 produktów chwilowo niedostępnych.
- Nie przekierowuj wycofanych produktów na stronę główną.
- Nie trzymaj w mapie witryny przekierowań, adresów 404 i stron z noindex.
- Nie ustawiaj lastmod na dzisiejszą datę dla całego katalogu.
- Nie klikaj „Sprawdź poprawkę” kilka razy - Google prosi, żeby poczekać na wynik.
FAQ
Kolejność wszystkich prac w sklepie opisuję w strategii SEO dla sklepu internetowego. Jeśli chcesz, żebym zdiagnozował indeksację Twojego sklepu i wdrożył poprawki, zobacz pozycjonowanie sklepów internetowych.
/// RELATED_SERVICES
Potrzebujesz wdrożenia tych koncepcji? Zobacz usługi powiązane z tym tematem.
/// ŹRÓDŁA
- 01Google Search Console Help - Page indexing report
- 02Google Search Central - Build and submit a sitemap
- 03Google Search Central - How HTTP status codes affect Google's crawlers
- 04Google Search Central - Help Google understand your ecommerce site structure
- 05Google Search Central - How to launch an ecommerce website
- 06Google Search Central - How to specify a canonical URL
- 07Google Search Console API - URL Inspection
- 08Schema.org - ItemAvailability
/// RELATED_RECORDS
Filtry w sklepie internetowym a SEO - które indeksować, a które blokować (noindex, canonical, robots.txt)
Które filtry w sklepie internetowym indeksować, a które blokować: reguła z progami, noindex vs canonical vs robots.txt vs nofollow w jednej tabeli, sprawdzenie filtrów w 11 polskich sklepach, ustawienia Shopify, WooCommerce, PrestaShop i IdoSell, liczba adresów przy dwóch skalach, robots.txt, skrypt i dwie pułapki.
Słowa kluczowe dla sklepu internetowego - jak przypisać frazy do kategorii, filtrów i produktów
Jak dobrać słowa kluczowe do sklepu internetowego i przypisać je do kategorii, filtrów, kart produktów i poradników: reguła mapowania z progami, mapa fraz z 1 109 podpowiedzi Google i liczb produktów w prawdziwym sklepie, Search Console, Planer, Senuto i Ahrefs z cenami, szablon arkusza i skrypt do wykrywania kanibalizacji.
Strategia SEO dla sklepu internetowego - plan na 3, 6 i 12 miesięcy
Jak ułożyć strategię SEO sklepu internetowego według przychodu: diagnoza w jeden dzień z Search Console, macierz priorytetów, roadmapa na 3, 6 i 12 miesięcy z KPI, koszt SEO wobec Google Ads przy dwóch skalach, audyt danych produktowych 26 polskich sklepów i skrypt do szybkich zysków.
Signal received?
Przerwij
Ciszę
Zainicjuj protokół. Nawiąż połączenie. Zbudujmy coś głośnego.
