SEO techniczne i optymalizacja szybkości to nie jedna poprawka, a zestaw powiązanych elementów: indeksacja, wydajność serwera, architektura adresów, dane strukturalne i bezpieczeństwo. Poniżej znajdziesz procedurę audytu, którą wykonasz sam w 60 minut, oraz progi Core Web Vitals, które realnie mierzy Google. Zasady są identyczne dla sklepu w Toruniu i w Zamościu — różni się tylko kontekst lokalny i konkurencja w wynikach. Sama szybkość to warunek konieczny, ale niewystarczający: bez treści i dopasowania do intencji użytkownika nie wygeneruje ruchu.
SEO techniczne w sklepie internetowym to pięć obszarów, które muszą działać razem: indeksacja (co Google widzi i zapisuje), wydajność (serwer, baza danych, frontend), architektura adresów (kategorie, filtry, paginacja, canonical), dane strukturalne (Product, Offer, BreadcrumbList) i bezpieczeństwo (HTTPS, certyfikat, brak mieszanej treści). Poprawa jednego obszaru przy zaniedbanych pozostałych nie daje efektu — dlatego zdarza się sklep z wynikiem 92/100 w PageSpeed, który nadal nie rankuje na żadną frazę kategorii.
Praktycznie warto rozdzielić trzy warstwy:
Jeśli crawl i index są w porządku, a sklep stoi w miejscu, problem leży w warstwie rank, nie technicznej. I odwrotnie: nawet świetnie napisana karta kategorii nic nie da, gdy przy 20 żądaniach na sekundę serwer zwraca 500.
Optymalizacja szybkości to warunek konieczny, ale niewystarczający. Sklep w Toruniu z LCP 1,8 s i pustym opisem kategorii nie sprzeda, bo nie odpowiada na intencję użytkownika — zasady tworzenia takich treści opisuje dokumentacja Google o tworzeniu treści dla ludzi. Same reguły techniczne są identyczne dla sklepu w Toruniu i w Zamościu — różni się tylko kontekst lokalny: obsadzenie wyników lokalnych, nazwy dzielnic w treściach, frazy typu „sklep zoologiczny Toruń”. Rozwinięcie tematu znajdziesz w części poświęconej SEO technicznemu, a porównanie lokalne w materiale o SEO technicznym i optymalizacji szybkości w Zamościu dla firm.
| Warstwa | Pytanie kontrolne | Typowy objaw problemu |
|---|---|---|
| Crawl | Czy Googlebot pobiera stronę? | Blokada w robots.txt, 5xx, pętla przekierowań |
| Index | Czy Google zapisuje URL? | Duplikaty z parametrami, zły canonical, „odkryta, niezaindeksowana” |
| Rank | Czy strona wygrywa w wynikach? | Trafna technika, brak treści i dopasowania do intencji |
Zanim zlecisz audyt, zrób własny przegląd — 60 minut, bez płatnych narzędzi. Kolejność ma znaczenie: najpierw sprawdzasz, czy Google wchodzi, potem czy zapisuje, na końcu jak wypada wydajność.
Wejdź do Google Search Console → Indeksowanie → Strony i porównaj liczbę adresów zaindeksowanych z wykluczonymi. Powód „Odkryta — obecnie niezaindeksowana” oznacza problem z budżetem crawlowania, a „Zaindeksowana, mimo że zablokowana w pliku robots.txt” — konflikt do naprawy. W Ustawienia → Statystyki crawlowania sprawdź dzienną liczbę żądań Googlebota i udział odpowiedzi 5xx. Nawet 2–3% błędów serwera to sygnał, że maszyna nie wyrabia przy szczycie ruchu.
Potem weź 20 losowych URL-i: 5 produktów, 5 kategorii, 5 stron paginacji i 5 adresów z parametrami filtrów. Sprawdź kody odpowiedzi (`curl -I` albo rozszerzenie do podglądu nagłówków). Szukasz: 5xx, łańcuchów A→B→C→D, 302 na stałych adresach oraz 200 na stronach, które powinny zwracać 404 lub 410.
PageSpeed Insights uruchom dwa razy — na zakładce Mobile i Desktop. Ważniejsza od pojedynczego wyniku jest sekcja Ocena Core Web Vitals z danymi z ostatnich 28 dni, bo to pomiar realnych użytkowników, a nie symulacja.
Wpisz `site:domena.pl` i sprawdź, czy w wynikach pojawiają się adresy z `?page=`, `?sort=`, `?utm_` — to duplikaty rozdrabniające sygnały. Wyłącz JavaScript i obejrzyj kod źródłowy: jeśli nie widać cen, opisów i nazw produktów, Google ma problem z renderowaniem.
Na telefonie sprawdź, czy elementy klikalne mają co najmniej 48×48 px i czy pop-up z kodem rabatowym nie zasłania treści od razu po wejściu. Otwórz stronę po `https://`, zweryfikuj kłódkę, a w konsoli przeglądarki (zakładka Network) wyłap ostrzeżenia o mieszanej treści.
Blokujące są: 5xx, brak indeksacji kategorii, blokada w robots.txt, brak HTTPS i treść niedostępna bez JS. Reszta — wolny TTFB, łańcuchy przekierowań, parametry URL — pogarsza wyniki, ale sama nie wykluczy strony z indeksu. Szersze omówienie znajdziesz w przewodniku SEO techniczne i optymalizacja szybkości sklepu.
| # | Sygnał | Gdzie sprawdzasz | Czas | Wpływ |
|---|---|---|---|---|
| 1 | Status indeksacji | GSC → Indeksowanie → Strony | 5 min | Blokujący, gdy wypadają kategorie |
| 2 | Powody wykluczenia z indeksu | GSC → Strony | 5 min | Blokujący |
| 3 | Udział 5xx w Crawl Stats | GSC → Ustawienia → Statystyki crawlowania | 5 min | Blokujący |
| 4 | Kody odpowiedzi 20 URL-i | curl -I, rozszerzenie do nagłówków | 7 min | 5xx blokujący, reszta diagnostyczna |
| 5 | Łańcuchy przekierowań | curl -I -L, podgląd nagłówków | 5 min | Pogarszający |
| 6 | PageSpeed Insights Mobile vs Desktop | pagespeed.web.dev | 8 min | Diagnostyczny |
| 7 | Dane terenowe z 28 dni | PageSpeed Insights, sekcja CrUX | wliczone w pkt 6 | Diagnostyczny, decyduje o ocenie |
| 8 | site: i niechciane parametry URL | wyszukiwarka | 5 min | Pogarszający, blokujący przy duplikacji |
| 9 | Treść bez JavaScriptu | wyłącz JS + View Source | 5 min | Blokujący |
| 10 | Tap targety i czytelność na telefonie | telefon, Chrome DevTools | 5 min | Pogarszający |
| 11 | Pop-up przy wejściu | telefon | 3 min | Pogarszający |
| 12 | HTTPS, certyfikat, mixed content | kłódka, konsola → Network | 4 min | Blokujący |
Trzy metryki, trzy progi — wszystkie liczone na 75. percentylu. To znaczy: 3 na 4 wizyty muszą zmieścić się w limicie. Pojedynczy zielony wynik z Lighthouse nic nie znaczy, podobnie jak jeden słaby pomiar w raporcie.
| Metryka | Dobry | Wymaga poprawy | Słaby | Co najczęściej zawodzi w sklepie |
|---|---|---|---|---|
| LCP | poniżej 2,5 s | 2,5–4,0 s | powyżej 4,0 s | obraz hero, TTFB, blokujący CSS |
| INP | poniżej 200 ms | 200–500 ms | powyżej 500 ms | skrypty koszyka, pop-upy, long tasks |
| CLS | poniżej 0,1 | 0,1–0,25 | powyżej 0,25 | baner cookies, reklamy, fonty |
INP zastąpiło FID w marcu 2024 roku. FID mierzył wyłącznie opóźnienie pierwszej interakcji — nie widział, ile czasu strona potrzebuje, żeby faktycznie zareagować. Sklep, w którym „Dodaj do koszyka” odpowiadało po 600 ms, mógł mieć idealne FID i realną stratę konwersji. INP bierze pod uwagę wszystkie interakcje w sesji i raportuje najgorszą z nich.
Nie mieszaj dwóch typów danych. CrUX to pomiar realnych użytkowników Chrome z ostatnich 28 dni — na jego podstawie Google ocenia stronę. Lighthouse to symulacja na jednym urządzeniu o zadanej sieci i CPU: mówi, co poprawić, ale nie pokazuje, jak wypadasz na tle konkurencji. W PageSpeed Insights dane terenowe są u góry, wyniki laboratoryjne niżej. Pełne definicje metryk znajdziesz w materiałach web.dev o Web Vitals.
Słabe LCP najczęściej powodują: obraz hero w PNG ważący 1,5 MB, brak `fetchpriority="high"` i `preload` dla obrazu LCP, TTFB powyżej 1,2 s przez wolne zapytania do bazy na liście kategorii oraz blokujący CSS motywu ładowany przed treścią. Obraz i serwer odpowiadają za większość przypadków — nie JavaScript.
INP psują skrypty koszyka odpalane przy każdym kliknięciu, wtyczki pop-upów i czatów oraz synchroniczne zapytania w JS; long task powyżej 50 ms to już sygnał ostrzegawczy. CLS generują banery cookies bez zarezerwowanego miejsca, reklamy wstawiane nad treścią, fonty bez `font-display: swap` oraz obrazy bez atrybutów `width` i `height`.
Od czego zacząć? Od TTFB — zejście poniżej 0,8 s poprawia jednocześnie LCP i część INP, bo skraca oczekiwanie na każdy zasób. W PrestaShop to OPcache i cache szablonów, przegląd zapytań generowanych przez listę produktów oraz ograniczenie modułów ładujących własny JS na froncie. Licz się z tym, że CrUX aktualizuje się z 28-dniowym opóźnieniem — efekt zobaczysz po kilku tygodniach, nie następnego dnia.
| Metryka | Dobry | Wymaga poprawy | Słaby | Co najczęściej zawodzi w sklepie |
|---|---|---|---|---|
| LCP | poniżej 2,5 s | 2,5–4,0 s | powyżej 4,0 s | obraz hero, TTFB, blokujący CSS |
| INP | poniżej 200 ms | 200–500 ms | powyżej 500 ms | skrypty koszyka, pop-upy, long tasks |
| CLS | poniżej 0,1 | 0,1–0,25 | powyżej 0,25 | baner cookies, reklamy, fonty |
Google przetwarza stronę w dwóch etapach: najpierw pobiera kod HTML, a dopiero później — jeśli uzna to za potrzebne — uruchamia JavaScript i renderuje stronę. Jeśli nazwa produktu, cena i dostępność są wstawiane przez JavaScript po zapytaniu do API, robot widzi w pierwszym kroku pusty szkielet. Treść trafia wtedy do kolejki renderowania, a to opóźnienie liczy się w godzinach, nie w sekundach.
Zasada jest krótka: treści krytyczne dla SEO — nazwa produktu, cena, opis, dostępność, marka — muszą być w HTML po pobraniu, nie po hydratacji. Test zajmuje minutę: w Chrome wyłącz JavaScript (DevTools → Ctrl+Shift+P → „Disable JavaScript”), odśwież kartę produktu i sprawdź, czy widzisz cenę. Jeśli nie widzisz, Google w wielu przypadkach też jej nie zobaczy w pierwszym etapie. To fundament SEO technicznego — bez niego pozostałe poprawki pracują na treści, której robot nie czyta.
Analiza logów serwera pokazuje, na co realnie idzie budżet indeksowania. Pobierz access.log z 30 dni, odfiltruj Googlebota i policz wejścia na koszyk, panel klienta, /search, strony wyników filtrów (?q=, ?order=, ?page=) oraz adresy z parametrem sesji. Jeśli połowa wizyt bota dotyczy koszyka i sortowania, budżet ucieka na strony, których nikt nie wyszukuje. Analizator logów pokaże to w kilku widokach, ale wystarczy arkusz i zliczenie po adresach.
Szersze tło znajdziesz w przewodniku po SEO technicznym i optymalizacji szybkości sklepu, a tutaj zapamiętaj dwa limity sitemapy XML: 50 000 adresów i 50 MB na plik bez kompresji. Większy sklep dzieli mapę na kilka plików i wskazuje w Search Console indeks sitemap. Do sitemapy trafiają wyłącznie adresy zwracające 200, kanoniczne i indeksowalne — nie koszyk, nie wyniki wyszukiwania. W robots.txt nie blokuj /themes/, /js/, /css/ ani /modules/: Googlebot renderuje z zablokowanymi zasobami i strona wygląda wtedy jak uszkodzona.
| Adres | Co zrobić | Dlaczego |
|---|---|---|
| /koszyk, /zamowienie, /logowanie, /moje-konto | Disallow w robots.txt | Zero wartości dla wyszukiwania, generuje sesje i duplikaty |
| /search?q= i wyniki wyszukiwania wewnętrznego | Disallow | Nieskończona liczba kombinacji fraz |
| Parametry ?order=, ?page=, ?id_session= | Disallow albo noindex, follow | Ten sam zestaw produktów w innej kolejności |
| /kategoria?marka=x&rozmiar=y | noindex, follow poza wybranymi kombinacjami | Setki wariantów tej samej treści |
| /kategoria/ i /produkt/ | Indeksuj i dodaj do sitemapy | Główne źródło ruchu organicznego |
Kategoria z 40 markami i 12 rozmiarami daje teoretycznie ponad 480 kombinacji adresów, a do tego dochodzi sortowanie, widok siatki i listy oraz paginacja. Wszystkie te strony pokazują ten sam zestaw produktów w innej kolejności. Sam link do filtra nie boli — problem zaczyna się wtedy, gdy nawigacja facetowa linkuje setki wariantów, a robot pobiera je wszystkie.
Masz trzy strategie. Blokada w robots.txt (Disallow) sprawdza się dla sortowania i parametrów sesji, ale zablokowany adres może trafić do indeksu bez treści, jeśli coś na niego linkuje. noindex w meta robots (noindex, follow) działa tylko wtedy, gdy bot wejdzie na stronę i przeczyta znacznik — nie łącz blokady z noindex, bo te sygnały się wykluczają. Trzecia opcja jest najlepsza: indeksuj tylko kombinacje z realnym popytem, np. marka + kategoria („/obuwie/nike/”), z własnym H1, opisem i co najmniej kilkoma produktami. Resztę ustaw na noindex, follow.
Najczęstsze błędy w kanonicznych: link do innego produktu, adres z parametrem sesji, kanoniczny wskazujący na stronę z noindex. Domyślnie bezpieczny jest self-canonical. Przy paginacji rel next/prev nie jest już sygnałem — liczy się kolejność i to, że każda strona ma self-canonical; strony 2 nie wskazujesz na stronę 1. Linki do kolejnych stron muszą być w HTML, a nie tylko wywoływane JavaScriptem. Adresy typu /product.php?id_product=123 przekieruj 301 do najbliższego odpowiednika i pilnuj, żeby nie tworzyć łańcuchów przekierowań.
Dane strukturalne produktu i oferty (Product, Offer z ceną, walutą i dostępnością) oraz okruszków (BreadcrumbList) sprawdź w Rich Results Test i w raporcie elementów o strukturze danych w Search Console — lista typów obsługiwanych przez Google jest tu punktem odniesienia. Typowy błąd po promocji: cena w JSON-LD inna niż w HTML.
Kolejność tych prac jest identyczna niezależnie od miasta — przykład wdrożenia opisaliśmy w materiale o SEO technicznym i optymalizacji szybkości w Zamościu dla firm.
W PrestaShop wejdź w Zaawansowane parametry → Wydajność i włącz CCC (Combine, Compress, Cache), a kompilację szablonów ustaw na „nigdy nie kompiluj”, gdy motyw jest gotowy. W WooCommerce cache strony to za mało: potrzebujesz object cache (Redis, np. przez wtyczkę Redis Object Cache) i cache stron na poziomie serwera (nginx fastcgi_cache albo LiteSpeed). Pułapka: przy pełnym cache stron mini-koszyk i licznik muszą być ładowane przez AJAX i wyłączone z cache — inaczej klient zobaczy zawartość cudzego koszyka.
Nagłówki: statykom daj Cache-Control: public, max-age=31536000, immutable, HTML-owi krótszy max-age z ETag i stale-while-revalidate, do tego Vary: Accept-Encoding. CDN z kompresją Brotli: darmowy plan odciąża statykę i TLS w mniejszym sklepie, płatny ma sens, gdy potrzebujesz reguł cache dla HTML, WAF i natychmiastowego czyszczenia cache po zmianie ceny. Obrazy: WebP, a AVIF po testach, srcset i sizes, width i height przeciw skokom layoutu, lazy loading tylko poniżej pierwszego ekranu, obraz LCP z fetchpriority="high" i bez lazy.
OPcache: opcache.memory_consumption 256 MB, opcache.max_accelerated_files 20000, w produkcji opcache.validate_timestamps=0 i restart PHP-FPM po wdrożeniu. Baza: indeksy na kolumnach filtrowanych i sortowanych (active, id_category, id_manufacturer, price), usuwanie tabel po odinstalowanych wtyczkach, limit zapytań na kartę produktu. Karta produktu generująca kilkaset zapytań to problem modułu, nie hostingu.
Hosting współdzielony wystarcza przy stałym, umiarkowanym ruchu. Sygnały do VPS: TTFB powyżej 600 ms przy włączonym cache, spadki dostępności podczas kampanii, brak możliwości włączenia Redisa i własnych ustawień OPcache. Ostatnia rzecz: agresywna minifikacja i łączenie plików potrafią rozbić koszyk lub konfigurator. Po każdym włączeniu CCC albo optymalizacji w wtyczce przejdź pełną ścieżkę: koszyk, zmiana ilości, checkout, konfigurator. Punkt odniesienia dla metryk opisuje dokumentacja Web Vitals.
Zakres i koszt takich prac w innym mieście: SEO techniczne i optymalizacja szybkości Szczecin dla firmy oraz SEO techniczne i optymalizacja szybkości w Zamościu — koszt.
| Poziom cache | Co obejmuje | Czym włączyć |
|---|---|---|
| Przeglądarka | Obrazy, CSS, JS, fonty | Cache-Control, ETag, immutable |
| Proxy / CDN | Statyka, kompresja Brotli, TLS | Reguły cache w panelu CDN |
| Serwer (pełne strony) | HTML kategorii i kart produktów | nginx fastcgi_cache albo LiteSpeed Cache |
| Aplikacja (object cache) | Powtarzalne zapytania do bazy | Redis lub Memcached |
| Szablony | Kompilacja i łączenie plików | PrestaShop: CCC w Zaawansowanych parametrach |
Wizytówka Google to najtańszy kanał lokalny, ale działa tylko wtedy, gdy jest spójna ze stroną. Zacznij od jednej kategorii głównej — np. „Sklep z narzędziami”, a nie trzech konkurencyjnych, bo Google nie wie wtedy, na co Cię pokazać. Obszar działania ustaw na konkretne miejscowości (Toruń, Bydgoszcz, Włocławek, Grudziądz), nie na całe województwo — zbyt szeroki obszar rozmywa dopasowanie. Dodaj minimum 5 zdjęć (wnętrze, magazyn, zespół, realizacja), a wpisy publikuj co 7–10 dni: wpisy typu „wydarzenie” wygasają szybciej niż zwykłe aktualizacje.
NAP, czyli nazwa, adres i telefon, musi być identyczny znak po znaku: „ul.” kontra „ulica”, „+48 56 000 00 00” kontra „56 000 00 00” — to dla wyszukiwarki dwa różne rekordy. To samo w katalogach firmowych. Na stronie umieść te dane w JSON-LD jako LocalBusiness (pola: name, address, telephone, openingHoursSpecification, areaServed, priceRange). Kody i wymagane pola znajdziesz w dokumentacji Google na temat danych strukturalnych obsługiwanych w wynikach wyszukiwania. Sam kod bez treści na stronie nic nie da.
Podziel frazy na dwie grupy:
Podstrony dla Torunia, Bydgoszczy i Włocławka nie mogą być kopią z podmienionym miastem. Daj minimum 40–60% unikalnej treści: zdjęcia z realizacji w danym mieście, opinie klientów stamtąd, konkretny czas dostawy, adres punktu odbioru. Strony z opisem realizacji lokalnej mają własne dowody społeczne — i to jest element, o którym konkurencja zapomina. Całość spina się z SEO technicznym rozumianym szerzej niż szybkość.
| Element | Ustawienie w praktyce | Najczęstszy błąd |
|---|---|---|
| Kategoria główna | Jedna, najbliższa profilowi sklepu | Trzy kategorie „na wszelki wypadek” |
| Obszar działania | Konkretne miasta w promieniu ok. 50 km | Całe województwo lub cała Polska |
| Zdjęcia | Min. 5, aktualizowane co kwartał | Jedno logo dodane przy zakładaniu wizytówki |
| Dane strukturalne | JSON-LD LocalBusiness spójny z NAP | Mikrodane rozjechane ze stopką strony |
Kolejność ma większe znaczenie niż liczba poprawek. Jeśli wdrożysz 30 zmian naraz, nie będziesz wiedział, która zadziałała, a która zepsuła indeksację.
Priorytet 1 — tydzień 1: błędy 5xx, 404 na adresach linkowanych z zewnątrz, przypadkowe noindex, sprzeczne canonicale, nieaktualna sitemap. To błędy, które fizycznie wycinają karty produktów z indeksu. Sprawdź logi serwera i raport „Indeksowanie stron” w Search Console. Priorytet 2 — tydzień 2–3: TTFB i LCP. Tu wchodzi cache (Varnish, Redis), PHP-FPM z OPcache, kompresja obrazów do WebP/AVIF, lazy loading poniżej pierwszego ekranu. Priorytet 3 — miesiąc 2–3: mikrooptymalizacje CSS i JS, kolejność fontów. Progi, które realnie mierzy Google, opisuje dokumentacja Core Web Vitals w Google Search Central. Pełny zakres prac po kolei znajdziesz w przewodniku SEO techniczne i optymalizacja szybkości sklepu.
Mapa przekierowań przy zmianie domeny, platformy albo struktury URL wygląda tak:
curl -I na stagingu przed wdrożeniem.Okres przejściowy to realnie 4–12 tygodni. W tym czasie nie zmieniaj struktury URL, nie wdrażaj nowego layoutu i nie ruszaj masowo tytułów. Trzymaj starą domenę co najmniej 12 miesięcy, zweryfikuj obie wersje w Search Console i użyj narzędzia zmiany adresu. Po wdrożeniu zrób ponowny crawl porównawczy: liczba zaindeksowanych adresów nie powinna spaść.
| Etap | Kiedy | Co konkretnie |
|---|---|---|
| Indeksacja i błędy | Tydzień 1 | 5xx, 404, noindex, canonical, sitemap, robots.txt |
| Wydajność | Tydzień 2–3 | TTFB, cache, obrazy, LCP, INP |
| Mikrooptymalizacje | Miesiąc 2–3 | CSS/JS, fonty, dane strukturalne |
| Stabilizacja po migracji | Tydzień 4–12 | Bez zmian struktury i layoutu |
Nie wyceniaj całego SEO technicznego jedną kwotą — rozbij je na bloki, bo każdy ma inny czas i inną stawkę. Widełki poniżej to typowe, spotykane na rynku przedziały dla sklepu na PrestaShop lub WooCommerce ze średnim katalogiem (500–5 000 produktów).
Co zrobisz sam w panelu administracyjnym: meta title i description, teksty alt w zdjęciach produktów, opisy, wpisy w wizytówce, eksport listy URL. W PrestaShop do tego dochodzi konfiguracja wydajności (CCC, cache szablonów, kompresja). Co wymaga dostępu do serwera i kodu: php.ini (memory_limit, OPcache), konfiguracja MySQL/MariaDB (innodb_buffer_pool_size, slow query log), Nginx lub Apache, Varnish, modyfikacje szablonów .tpl, nadpisania modułów i dynamicznie generowane dane strukturalne. Bez tego drugiego zestawu uprawnień nie ruszysz TTFB.
Opieka po wdrożeniu powinna mieć trzy zapisane punkty: czas reakcji (typowo 24–48 h w dni robocze), miesięczny budżet zmian w abonamencie (np. 5 h) oraz stały raport: Core Web Vitals, liczba zaindeksowanych adresów, błędy 5xx, TTFB.
Różnica między pracą bezpośrednio z deweloperem a agencją z podwykonawcami jest głównie czasowa. Bezpośrednio decyzja zapada na jednym spotkaniu. Przy łańcuchu każda zmiana przechodzi przez 2–3 osoby i dodaje dni. Zapytaj wprost, kto fizycznie wykona prace — to pytanie ucina połowę nieporozumień. Przykład naszego podejścia do wyceny, bez kwot oderwanych od zakresu, opisaliśmy przy okazji wyceny SEO technicznego dla sklepu. Napisz, jaki masz sklep, ile produktów i co Cię blokuje — odpowiemy zakresem w godzinach, nie obietnicą „pierwszej strony”.
| Blok prac | Czas | Stawka godzinowa | Charakter |
|---|---|---|---|
| Audyt techniczny, crawl, raport | 8–16 h | 120–200 zł/h | Jednorazowo |
| Wdrożenie poprawek (front, dane strukturalne, indeksacja) | 12–40 h | 140–220 zł/h | Jednorazowo |
| Optymalizacja bazy i serwera | 6–20 h | 160–260 zł/h | Jednorazowo |
| Monitoring i opieka | 3–6 h/mies. | 140–220 zł/h | Abonament |
Traktowanie szybkości jako całego SEO — sklep ładuje się w 1,5 s, więc uznajemy temat za zamknięty.
Jak wykryć: PageSpeed Insights pokazuje zielone oceny, a w Google Search Console liczba kliknięć i wyświetleń stoi w miejscu od miesięcy. W raporcie Page Indexing wciąż widnieją setki adresów w kategorii Discovered – currently not indexed.
Jak naprawić: Rozdziel trzy warstwy: crawl (czy robot wchodzi), index (czy zapisuje strony), rank (czy wypozycjonuje). Sprawdź każdą osobno, bo szybkość działa dopiero na etapie rank i nie naprawi problemów z indeksacją.
Zamawianie audytu bez dostępu do Google Search Console i danych analitycznych.
Jak wykryć: W otrzymanym raporcie nie ma statusu indeksacji, liczby wejść robota ani zapytań, na które sklep się wyświetla. Wszystkie wnioski opierają się wyłącznie na zewnętrznych narzędziach.
Jak naprawić: Zweryfikuj własność domeny w GSC, dodaj sitemapę i poproś o raporty Page Indexing oraz Crawl Stats z ostatnich 90 dni. Bez tych danych audyt jest zgadywaniem.
Ocena szybkości wyłącznie na podstawie Lighthouse albo jednego testu w przeglądarce.
Jak wykryć: Wynik laboratoryjny jest wysoki, ale w zakładce Core Web Vitals w GSC metryki terenowe są na czerwono. Testy robiono tylko na desktopie, bez porównania z mobile.
Jak naprawić: Zestaw dane z CrUX (realni użytkownicy, ostatnie 28 dni, 75. percentyl) z raportem Lighthouse. Punktem odniesienia są dane terenowe, nie symulacja na jednym urządzeniu.
Wstawienie lazy loadingu na obraz, który jest elementem LCP w widoku hero.
Jak wykryć: W kodzie źródłowym strony głównej lub karty produktu obraz hero ma atrybut loading="lazy". Po ponownym teście LCP rośnie, zamiast maleć, a obraz pojawia się z opóźnieniem przy pierwszym wejściu.
Jak naprawić: Usuń lazy loading z obrazu powyżej linii zgięcia, dodaj fetchpriority="high" i preload dla tego pliku. Sprawdź też, czy obraz nie jest serwowany w zbyt dużej rozdzielczości.
Brak kontroli nad parametrami URL z filtrów, sortowania i paginacji.
Jak wykryć: Zapytanie site:twojadomena.pl pokazuje adresy z parametrami typu ?orderby, ?filter lub kolejnymi numerami stron, które zwracają tę samą treść co strona główna kategorii.
Jak naprawić: Ustaw canonical na wersję bazową, zablokuj niepotrzebne kombinacje filtrów w robots.txt lub na poziomie wtyczki i sprawdź, czy sitemapa zawiera tylko adresy kanoniczne.
Monitoring metryk kończy się po wdrożeniu poprawek i nikt nie sprawdza, czy coś się nie zepsuło.
Jak wykryć: Po aktualizacji wtyczki, szablonu albo zmiany hostingu nikt nie patrzy na Core Web Vitals. W GSC widać skok metryk w ostatnich 28 dniach, którego nikt nie potrafi wyjaśnić.
Jak naprawić: Ustaw powiadomienia w GSC i sprawdzaj raport CWV co dwa tygodnie oraz po każdej większej zmianie. Zapisuj daty wdrożeń, żeby porównać je z wykresem.
SEO techniczne to zestaw powiązanych elementów, a nie jedna poprawka do wdrożenia raz na zawsze. Zacznij od rozdzielenia trzech warstw: czy Google wchodzi, czy zapisuje strony i czy ma co pokazać użytkownikowi. Szybkość sprawdzaj w danych terenowych na 75. percentylu, nie w pojedynczym teście laboratoryjnym, i pilnuj TTFB poniżej 0,8 s. Dopiero potem zajmij się treścią i intencją — bez tego nawet najszybszy sklep nie zdobędzie ruchu.
Nie. Zasady indeksacji, wydajności i danych strukturalnych są identyczne — Google nie stosuje innych kryteriów technicznych ze względu na miasto. Różni się tylko kontekst lokalny: konkurencja w wynikach, frazy z nazwą miasta i to, jak wyglądają strony firm z okolicy. Techniczna podstawa sklepu jest ta sama niezależnie od tego, gdzie masz siedzibę.
Nie. Szybkość jest warunkiem koniecznym, ale niewystarczającym — działa dopiero wtedy, gdy strona jest zaindeksowana i odpowiada na realną intencję użytkownika. Sklep, który ładuje się w 1,2 s, ale ma puste opisy kategorii i brak treści, nie awansuje tylko dlatego, że jest szybki. Optymalizację traktuj jako usunięcie przeszkody, nie jako źródło ruchu.
INP (Interaction to Next Paint) mierzy opóźnienie reakcji strony na wszystkie interakcje użytkownika w trakcie wizyty, a nie tylko na pierwsze kliknięcie. FID mierzył wyłącznie pierwsze wejście w interakcję, więc nie wychwytywał problemów pojawiających się później — np. przy dodawaniu produktu do koszyka. Google zastąpiło FID metryką INP w marcu 2024 roku. Próg to poniżej 200 ms na 75. percentylu.
Częściowo. Zakładka z wynikiem laboratoryjnym to symulacja na jednym, wybranym urządzeniu i konkretnych warunkach sieciowych. Prawdziwe informacje o użytkownikach znajdziesz w sekcji danych terenowych opartych na CrUX, czyli na realnych wizytach z ostatnich 28 dni. Jeśli te dwie wartości się rozjeżdżają, wiążące są dane terenowe. Szersze omówienie metryk znajdziesz w artykule o SEO technicznym.
Zależy od tego, co wyjdzie w audycie. Zmiany na poziomie konfiguracji — cache, kompresja, nagłówki, canonical, robots.txt — domyka się zwykle w ciągu kilku dni. Przebudowa szablonu, optymalizacja zapytań do bazy albo zmiana sposobu ładowania skryptów koszyka to praca na tygodnie. Nie podaję tu sztywnych terminów, bo każdy sklep startuje z innego punktu i ma inny zestaw wtyczek.
Tak, w większości przypadków. Najczęstsze źródła opóźnień to niepotrzebne moduły, brak pełnego cache, zbyt wolne zapytania do bazy i zbyt duże obrazy produktowe. Porządek w tych obszarach daje zwykle większy efekt niż zmiana platformy. Dokumentacja techniczna PrestaShop opisuje między innymi strukturę modułów i hooków, co pomaga ocenić, które wtyczki obciążają sklep najbardziej.
Od TTFB i raportu indeksacji. Jeśli serwer odpowiada dłużej niż 0,8 s, żadna optymalizacja frontendu nie przyniesie trwałego efektu, bo problem jest wcześniej. Drugi krok to sprawdzenie, ile adresów faktycznie jest w indeksie i jakie powody blokady dominują. Te dwa testy zajmują kilkanaście minut i najczęściej wskazują, gdzie leży prawdziwe wąskie gardło — rozwinięcie tego tematu znajdziesz w przewodniku SEO techniczne i optymalizacja szybkości sklepu.
Jeśli chcesz mieć pewność, co realnie blokuje Twój sklep, DropDigital wykonuje audyty techniczne i optymalizację szybkości dla PrestaShop i WooCommerce. Napisz, na jakim etapie jesteś, a odpowiemy konkretnie — bez obiecywania pozycji w tydzień.