
Masz sklep na Shopify. Działa, wygląda dobrze, produkty są, ruch - no, może mogłoby być lepiej. I tu właśnie zaczyna się rozmowa o technicznym SEO. Problem z technicznym SEO jest taki, że nie widać go gołym okiem. Nie ma jednego przycisku do kliknięcia, jednego ustawienia do włączenia. To wiele małych decyzji - część podjęta świadomie, część przez przypadek - które razem decydują, czy Google sprawnie crawluje Twój sklep, czy błądzi po nim jak turysta bez mapy. Ten przewodnik jest po to, żebyś wiedział dokładnie co sprawdzić, w jakiej kolejności i jak to naprawić. Krok po kroku, bez owijania w bawełnę.

Zacznijmy od podstaw. URL to adres strony - ale też sygnał dla Google i pierwsza wskazówka dla użytkownika. Jeśli adres produktu wygląda jak /products/Nike_AirMax_id_12345_nowe_2024, to już na starcie tracisz punkty.
Zasada jest prosta: krótko, czytelnie, małymi literami, myślniki zamiast spacji, żadnych zbędnych parametrów. Adres powinien od razu mówić, o czym jest strona.
// Źle:
/products/Nike_AirMax_90_buty-do-biegania_rozmiar_42_2024_new
/collections/collection_1?sort=price&view=grid&page=2
// Dobrze:
/products/nike-air-max-90
/collections/buty-do-biegania
Shopify narzuca stałe prefiksy: /products/, /collections/, /pages/, /blogs/. Nie zmienisz ich bez przejścia na rozwiązanie headless. Możesz za to swobodnie edytować handle - czyli końcówkę adresu - i to właśnie tu możesz zrobić najwięcej dobrego.
Linki w motywie Shopify często są wpisane na sztywno. To błąd - przy wielojęzycznych sklepach i subfolderach językowych takie linki się po prostu sypią. Generuj je zawsze przez obiekt routes:
// Źle - ścieżka na sztywno, nie działa na rynkach językowych:
<a href="/collections/all">Wszystkie produkty</a>
// Dobrze - dynamicznie przez routes:
<a href="{{ routes.all_products_collection_url }}">Wszystkie produkty</a>
// Dobrze - link produktu w kontekście kolekcji:
<a href="{{ product.url | within: collection }}">{{ product.title }}</a>
Uwaga: Nie zmieniaj URL-i bez powodu. Każda zmiana to konieczność wdrożenia przekierowania. Jeśli adres działa i jest czytelny - zostaw go.
Przekierowanie 301 to nie tylko technikalia. To sposób na zachowanie całego dorobku SEO przy zmianach w sklepie. Bez niego - zmieniony URL produktu to dla Google zupełnie nowa strona, bez historii, bez linków, bez pozycji.
Zawsze kiedy zmieniasz adres strony lub usuwasz ją bez zastępnika. W szczególności:
Jeśli masz więcej niż kilkanaście przekierowań, import CSV jest znacznie szybszy niż ręczne klikanie:
Redirect from,Redirect to
/stary-produkt,/products/nowy-produkt
/blog/stary-wpis,/blogs/porady/nowy-wpis
/wyprzedaz-2023,/collections/wyprzedaz
/o-nas-old,/pages/o-nas
To ważne ograniczenie, które zaskakuje wielu przy migracjach. Shopify nie przyjmie przekierowań dla:
Praktyczna wskazówka: Najczęstszy błąd przy migracji: brak mapy starych i nowych URL-i. Zanim włączysz nowy sklep, przygotuj arkusz z dokładnym mapowaniem - stary URL w jednej kolumnie, nowy w drugiej. To podstawa całej operacji.
Łańcuch przekierowań to sytuacja, gdy A > B > C zamiast A > C. Każdy pośredni krok to strata czasu dla Googlebota i drobna utrata sygnału SEO. Zawsze prowadź bezpośrednio do finalnego adresu. Screaming Frog pomaga szybko znaleźć takie łańcuchy w całym sklepie.
Strona 404 to miejsce, na które użytkownik trafia, gdy adres nie istnieje. Większość sklepów zostawia tu pusty ekran z komunikatem błędu. To zmarnowana szansa.
Dobra strona 404 nie kończy sesji - ona ją ratuje. Kieruje użytkownika dalej, proponuje alternatywy i daje mu narzędzia do znalezienia tego, czego szuka.
Strona 404 musi zwracać kod HTTP 404. Jeśli zwraca kod 200 z komunikatem błędu - to tzw. soft 404. Google traktuje ją jak normalną stronę i może ją zaindeksować. Efekt: chaos w indeksie, zduplikowane treści, błędy w Search Console.
Jeśli nie chcesz ręcznie pilnować każdego błędu, możesz to zautomatyzować:
Nie musisz dążyć do perfekcyjnego wyniku w walidatorze W3C - Google i tak renderuje niedoskonały HTML. Ale są błędy, które realnie wpływają na indeksację, renderowanie i utrzymanie sklepu. Na te warto patrzeć.
Shopify często generuje dwa H1: jeden z sekcji hero motywu, drugi automatycznie z tytułu produktu. Google dostaje sprzeczny sygnał. Na każdej stronie może być tylko jeden H1.
<!-- Źle - dwa H1: -->
<h1>Odkryj nasze bestsellery</h1> <!-- hero motywu -->
<h1>Nike Air Max 90</h1> <!-- tytuł produktu -->
<!-- Dobrze - jeden H1: -->
<p class="hero-tagline">Odkryj nasze bestsellery</p>
<h1>Nike Air Max 90</h1>
Często spotykany błąd w szablonach Shopify: elementy blokowe wewnątrz elementów inline. Na przykład <div> wewnątrz <a> - to niewalidna hierarchia HTML, która może powodować nieprzewidywalne renderowanie w różnych przeglądarkach:
<!-- Źle - div (blokowy) wewnątrz a (inline): -->
<a href='/products/buty'>
<div class='product-card'>
<div class='product-title'>Nike Air Max</div>
</div>
</a>
<!-- Dobrze - semantyczny kontener, link tylko na treści: -->
<article class='product-card'>
<a href='/products/buty'>
<span class='product-title'>Nike Air Max</span>
</a>
</article>
Aplikacje SEO często wstrzykują własne tagi og:title, description albo canonical, które kolidują z tagami z motywu. Efekt: dwa różne canonical lub dwa opisy meta na tej samej stronie. Sprawdzaj to po każdej nowej instalacji - wystarczy Chrome DevTools i Ctrl+F po frazie 'canonical' w zakładce Elements.
Każda aplikacja Shopify może dodać własny skrypt do sekcji head. Przy kilkunastu aplikacjach łatwo dobrać się do kilkudziesięciu dodatkowych requestów. Efekt: wolniejsze ładowanie, cięższy DOM, gorszy Core Web Vitals. Regularnie sprawdzaj zakładkę Network w Chrome DevTools - kolumna Initiator pokazuje, co ładuje co.
To jeden z najczęstszych problemów w sklepach Shopify, o którym właściciele nie wiedzą, dopóki nie zrobią audytu. Strona wygląda świetnie w przeglądarce - ale Google widzi coś zupełnie innego.
Dzieje się tak dlatego, że Google przetwarza JavaScript w dwóch etapach: najpierw crawluje HTML, później renderuje JS. Między tymi etapami może minąć od kilku godzin do kilku dni. Jeżeli kluczowe elementy strony istnieją tylko w JavaScript - Google może ich po prostu nie zaindeksować.
Jeśli menu nawigacyjne sklepu istnieje wyłącznie jako komponent JavaScript - bez prawdziwych linków HTML z atrybutem href - Google może nie odkryć stron, do których to menu prowadzi. A to oznacza, że kolekcje, kategorie i inne ważne podstrony mogą wypaść z indeksu.
// Źle - Google nie odkryje tego linku:
<span onclick="window.location='/collections/buty'">Buty</span>
// Też źle - onclick bez href:
<a onclick="goTo('/collections/buty')">Buty</a>
// Dobrze - prawdziwy link HTML:
<a href="/collections/buty">Buty</a>
// Dobrze - JS wzbogaca, ale href jest:
<a href="/collections/buty" class="mega-menu-item">Buty</a>
JavaScript może wzbogacać i ulepszać. Ale nie powinien być jedynym sposobem na dostarczenie treści i linków, które mają znaczenie dla SEO. Jeśli coś jest ważne dla Google - musi być dostępne w HTML, nie tylko po renderowaniu JS.
Zanim zaczniesz szukać obejść dla każdego ograniczenia Shopify - warto wiedzieć, z czym naprawdę masz do czynienia. Niektóre rzeczy można obejść, inne po prostu trzeba zaakceptować i planować architekturę sklepu z nimi w głowie.
Dobra perspektywa: Zwróć uwagę, że Shopify moze prezentować inne podejście do wyzwań SEO niż inne platformy. Nie próbuj go dostosować do wymogów platformy, na której pracowałeś wcześniej. Zamiast tego naucz się jego logiki i planuj SEO w jej ramach. Większość problemów technicznych w Shopify wynika nie z ograniczeń platformy, ale z tego, że ktoś próbował je obejść.
Przejdź przez te punkty po każdym większym wdrożeniu lub migracji:
Bez dobrych narzędzi techniczne SEO to strzelanie w ciemno. Oto co warto mieć pod ręką:
Audyt techniczny, planowanie migracji, optymalizacja kodu motywu - pomagamy łączyć SEO z developmentem tak, żeby sklep był nie tylko ładny, ale też poprawnie zbudowany pod wzrost widoczności. Skontaktuj się z nami.