- Strategia i kryteria: co, gdzie i kiedy ukrywać
- Decyzja: ukryć, zdegradować czy oznaczyć jako niedostępne
- Poziomy widoczności: karta produktu, listingi, wyszukiwarka
- Warianty, zestawy, części zamienne
- Ryzyka i KPI, które warto monitorować
- Metody techniczne ukrywania bez szkody dla ruchu
- Filtrowanie na listingu kategorii
- Degradacja i sortowanie
- Wyszukiwarka wewnętrzna
- Progi bezpieczeństwa i bufor stanów
- Widoczność dla kampanii i landing pages
- Konfiguracja na popularnych platformach
- WooCommerce (WordPress)
- Shopify
- PrestaShop
- Magento (Adobe Commerce/Open Source)
- Shoper, Shopware, OpenCart (zarys)
- Praktyki SEO i zarządzanie ruchem organicznym
- Braki tymczasowe: zachowaj adres, usuń z list
- Wycofanie trwałe: 301, 410 i czyszczenie sygnałów
- Mapy strony i kanonikalizacja parametrów
- Wewnętrzne linkowanie i breadcrumbs
- Analityka i zdarzenia
- Automatyzacja, integracje i kontrola jakości
- Źródło prawdy: ERP/WMS i synchronizacja
- Bufory, rezerwacje i overselling
- Scenariusze brzegowe: warianty, zestawy, multipaki
- Powiadomienia o dostępności i kolejkowanie
- Testy regresyjne i monitoring
- Bezpieczeństwo i spójność danych
- Komunikacja do klienta i obsługa błędów
- Kanały zewnętrzne i marketplace’y
- Wydajność i cache
Brak towaru nie musi psuć doświadczenia zakupowego. Odpowiednie ukrywanie pozycji z zerowym stanem skraca ścieżkę użytkownika, zmniejsza frustrację i poprawia konwersję, a jednocześnie pozwala zachować dane dla analityki i optymalizacji SEO. W tej instrukcji przejdziesz od zaplanowania zasad, przez konfigurację na popularnych platformach, aż po automatyzacja i integracje z ERP. Zobacz, kiedy lepiej wyłączać całe produkty, a kiedy jedynie warianty, jak uniknąć utraty ruchu i jak zabezpieczyć proces na poziomie danych.
Strategia i kryteria: co, gdzie i kiedy ukrywać
Decyzja: ukryć, zdegradować czy oznaczyć jako niedostępne
Zacznij od reguł biznesowych. Nie każdy brak musi oznaczać wyłączenie karty z obiegu. Główne scenariusze:
- Tymczasowy brak (dni–tygodnie): pozostaw kartę produktu, ale nie pokazuj go w listingach kategorii i wyszukiwarce wewnętrznej. Dodaj widoczny komunikat o niedostępności i formularz powiadomienia o dostępności.
- Sezonowy powrót (miesiące): ukryj z list i wyszukiwarki; na karcie zastosuj nofollow do nieistotnych linków wewnętrznych i ogranicz indeksację parametrów. Zadbaj o zachowanie sygnałów jakości (opinie, FAQ, dane strukturalne).
- Trwałe wycofanie: rozważ 301 do następcy, alternatywy lub kategorii nadrzędnej. Gdy brak następcy – 410 (lub 404) po uprzednim zdjęciu z mapy strony. W obu przypadkach usuń z rekomendacji i cross‑sellu.
Warto wprowadzić także miękką degradację: elementy niedostępne mogą znajdować się na końcu listingu, widoczne wyłącznie po ręcznym przełączeniu filtra „pokaż niedostępne”.
Poziomy widoczności: karta produktu, listingi, wyszukiwarka
Definiuj zasady osobno dla trzech warstw:
- Listing kategorii: domyślnie filtr „tylko dostępne” włączony; możliwość odfiltrowania przez użytkownika.
- Wyszukiwarka wewnętrzna: domyślnie wyklucza brakujące. W panelu rankingowym ustaw degradację lub pełne wykluczenie.
- Karta produktu: pozostaje dostępna dla linków zewnętrznych, z jasną informacją, CTA do zapisu na powiadomienie i propozycją alternatyw.
Warianty, zestawy, części zamienne
Większość problemów rodzi się na poziomie wariantów i zestawów:
- Warianty (rozmiary/kolory): ukrywaj wyłącznie niedostępne warianty na karcie, nie chowaj całego produktu. Ustal, czy mają być „wyszarzone” (klikalne z komunikatem) czy całkowicie schowane. Dla SEO kluczowe jest utrzymanie jednego adresu URL dla całej rodziny.
- Zestawy (bundle): produkt zestawowy niedostępny, jeśli któregokolwiek komponentu brak. Możesz pokazać alternatywny zestaw lub automatycznie przełączyć na wariant z dostępnością.
- Części zamienne i akcesoria: karta niedostępnej części może generować wartościowy ruch informacyjny; zwykle zostaw ją w indeksie, ale usuń z list i wyszukiwarki.
Ryzyka i KPI, które warto monitorować
Ustal minimalne wskaźniki kontrolne:
- Udział niedostępnych w sesjach listingu i wyszukiwarki (target: 0%).
- CTR listingu po wdrożeniu ukrywania vs. przed.
- Konwersja z ruchu organicznego na karty niedostępnych (czy nie spada land rate?).
- Czas powrotu do indeksu po ponownym zasileniu (kiedy wracają do mapy strony?).
- Odsetek błędów rezerwacji i oversellingu po wdrożeniu buforów.
Ważne: odsiej scenariusze B2B (np. dostępne po zalogowaniu) od B2C – reguły widoczności i kanałów mogą być odmienne.
Metody techniczne ukrywania bez szkody dla ruchu
Filtrowanie na listingu kategorii
Najbezpieczniejsza metoda to filtrowanie wyników listingu po statusie dostępności:
- Parametr warstwy „Dostępność” ustaw jako włączony domyślnie dla „W magazynie”.
- Zapewnij, aby adresy URL z parametrem „pokaż niedostępne” miały poprawną kanonikalizację do wersji bazowej kategorii (bez parametru), aby uniknąć duplikacji.
- Jeśli cache’ujesz listingi, zbuduj osobną warstwę cache dla wersji „tylko dostępne”.
Degradacja i sortowanie
Jeśli z jakichś względów nie możesz pełnić ukrycia, wprowadź degradację rankingową:
- Reguła sortowania: dostępne otrzymują wyższy score; niedostępne spadają na koniec.
- Wizualnie oznacz niedostępne (np. etykieta „Brak”) i blokuj CTA dodania do koszyka.
- Dla przeglądarek z wolnym łączem unikaj ładowania zdjęć wysokiej rozdzielczości dla niedostępnych – zastąp je placeholderem.
Wyszukiwarka wewnętrzna
W większości silników wyszukiwania (Elasticsearch, OpenSearch, Algolia, Meilisearch) dodaj filtr must: in_stock = true. W panelu boostingu ustaw dodatkowo:
- Boost dla atrybutu in_stock.
- Regułe „tylko dostępne” dla auto‑suggest i instant search.
- Wyjątki: strony informacyjne i poradniki z tagiem „product_guide” mogą pozostawać widoczne niezależnie od dostępności.
Progi bezpieczeństwa i bufor stanów
Ukrywanie przy „0” bywa spóźnione. Wprowadź bufor: ukryj, gdy stan spadnie poniżej progu X. Typowe wartości:
- Ruch niski: bufor 1 szt.
- Ruch średni: 2–3 szt.
- Ruch wysoki/flash sale: 5–10 szt., dynamicznie dostosowywany do tempa sprzedaży (velocity).
Bufor licz dla każdego kanału osobno (sklep, marketplace) oraz na poziomie wariantu. Przy wielomagazynowości wykorzystaj „salable quantity”, a nie sumę fizycznych zapasów.
Widoczność dla kampanii i landing pages
Czasem potrzebujesz tymczasowo eksponować niedostępne karty (np. content evergreen). Rozwiązania:
- Landing noindex, ale dostępny dla użytkowników z kampanii e‑mail.
- Parametr URL „view=oos” umożliwiający podgląd karty dla obsługi klienta, wyłączony z indeksacji i cache.
- Blok w treści z wyraźnym CTA do alternatyw lub powiadomień.
Konfiguracja na popularnych platformach
WooCommerce (WordPress)
Podstawowa konfiguracja:
- Ustawienia > Produkty > Magazyn: zaznacz „Ukryj produkty niedostępne w katalogu”. Ustal „Próg braku w magazynie”.
- Na karcie produktu: „Zarządzanie stanem magazynowym” włączone, ustaw stany dla każdego wariantu.
- Wyłącz „Zezwalaj na zamówienia oczekujące”, jeśli nie chcesz sprzedaży przy braku.
Wyszukiwarka i listingi:
- Jeśli motyw nadal pokazuje brakujące, utwórz filtr (hook pre_get_posts), który wykluczy meta _stock_status = outofstock z archiwów i wyników wyszukiwania.
- W motywach z builderem włącz opcję „Exclude out of stock from query”.
Warianty:
- W ustawieniach wariantu odznacz widoczność opcji o stanie 0, aby nie były wybieralne. Wspieraj „notify me” przez wtyczkę (np. Back In Stock).
SEO:
- Nie usuwaj karty, gdy brak przejściowy. Zaktualizuj dane strukturalne OfferAvailability=OutOfStock.
- Usuń z mapy strony URL‑e trwałe wycofane przez wtyczkę SEO (np. Rank Math/Yoast filtry sitemap).
Shopify
Automatyczne kolekcje:
- Utwórz kolekcję automatyczną z warunkiem „Inventory stock is greater than 0” – dotyczy wszystkich produktów w tej kolekcji.
- Wyłącz „Continue selling when out of stock” w produktach, by nie sprzedawać przy stanie 0.
Motyw (Liquid):
- W szablonie kolekcji filtruj pętlę, renderując tylko produkty z product.available = true.
- Na karcie produktu ukryj warianty z variant.available = false (np. nie pokazuj swatchy wyprzedanych lub wyszarz je i zablokuj wybór).
Wyszukiwarka i merchandising:
- W aplikacji Search & Discovery zdefiniuj regułę wykluczenia lub degradacji produktów niedostępnych w wynikach.
SEO:
- Nie włączaj noindex przy braku czasowym. Dla wycofanych zastosuj przekierowanie URL Redirects do następców lub kategorii.
PrestaShop
Ustawienia produktów:
- Preferencje > Produkty: „Zezwalaj na zamówienia produktów niedostępnych” ustaw na Nie.
- Włącz „Ukrywaj niedostępne kombinacje”, aby warianty 0 nie były wybieralne.
Filtrowanie:
- Moduł warstwowej nawigacji: dodaj filtr „Dostępność” i ustaw wartość domyślną „W magazynie”.
- Dla kategorii z dużym ruchem rozważ modyfikację zapytania listingu, aby domyślnie wykluczać brakujące (override CategoryController).
SEO i mapy strony:
- Moduł sitemap: wyklucz trwałe „nieaktywne” produkty. Pamiętaj o odświeżaniu mapy przy zmianie statusu.
Magento (Adobe Commerce/Open Source)
Konfiguracja globalna:
- Stores > Configuration > Catalog > Inventory: „Display Out of Stock Products” = No; „Backorders” = No; ustaw „Out‑of‑Stock Threshold”.
- Przy MSI używaj „Salable Quantity” i rezerwacji; dostosuj progi per kanał.
Listingi i wyszukiwarka:
- Layered Navigation i wyszukiwarka domyślnie respektują „in stock”. Upewnij się, że indeksy (Stock, Product EAV, Category Products) pracują w trybie on‑schedule, a crony działają.
Warianty i widoczność:
- Dla configurable products ukryj childy out‑of‑stock, pozostawiając widoczność „Not visible individually”.
SEO i sitemapy:
- Marketing > SEO & Search > Site Map: wyklucz produkty, które mają status „out of stock” dłużej niż X dni (wymaga extension lub małej modyfikacji ETL).
Shoper, Shopware, OpenCart (zarys)
Shoper:
- Asortyment > Ustawienia: włącz „Ukrywaj produkty niedostępne” oraz ukrywanie niedostępnych opcji wariantów.
- Wyszukiwarka: włącz filtr „Tylko dostępne”.
Shopware 6:
- Na karcie produktu zaznacz „Closeout” i ustaw minimalny stan – po spadku do zera produkt znika z listingu.
- Flow Builder/Rules: reguła wykluczająca z kanału sprzedaży przy stanie 0.
OpenCart:
- System > Settings > Options: „Stock Checkout” = No, ukrywanie może wymagać modułu lub modyfikacji zapytań listingu (OCMOD/VQMOD).
Praktyki SEO i zarządzanie ruchem organicznym
Braki tymczasowe: zachowaj adres, usuń z list
Gdy produkt wróci w ciągu tygodni, trzymaj kartę dostępną i indeksowalną. Zadbaj o:
- Dane strukturalne Product + Offer z availability = OutOfStock (schema.org).
- Wyraźne linki do alternatyw (rel=follow), najlepiej w sekcji „Podobne”.
- Formularz powiadomień – to zmniejsza bounce i ratuje wartość strony.
Wycofanie trwałe: 301, 410 i czyszczenie sygnałów
Gdy dany model nie wróci:
- 301 do następcy: najsilniejszy wariant, jeśli istnieje realna kontynuacja (ten sam intent, podobna specyfikacja).
- 301 do kategorii: gdy brak bezpośredniego zamiennika, ale intencja użytkownika jest szersza.
- 410 (lub 404): gdy karta nie ma odpowiednika i nie chcesz przekazywać sygnałów. Usuń z mapy strony, pozostaw w logice 404‑monitoringu (Search Console).
Nie stosuj noindex na chwilowe braki – utrudnia powrót do indeksu po zasileniu.
Mapy strony i kanonikalizacja parametrów
Automatyzuj generowanie sitemap z regułą: dołączaj tylko URL‑e dostępnych lub „czasowo niedostępnych < X dni”. Parametry „pokaż niedostępne” kanonikalizuj do czystej kategorii. W GSC ustaw obsługę parametru, jeśli generuje osobne adresy.
Wewnętrzne linkowanie i breadcrumbs
Usuń linki do niedostępnych z modułów rekomendacji i bestsellerów. Zadbaj, by breadcrumbs prowadziły do kategorii nadrzędnej (zamiast dead‑end), a moduły „Ostatnio oglądane” nie kumulowały wyłącznie braków.
Analityka i zdarzenia
W dataLayer wysyłaj eventy: product_oos_view, notify_submit, restock. Mierz:
- CTR na rekomendacje alternatyw.
- Współczynnik zapisu na powiadomienia vs. sesje na kartach niedostępnych.
- Czas od restock do pierwszej sprzedaży (detekcja problemów z cache i indeksacją).
Automatyzacja, integracje i kontrola jakości
Źródło prawdy: ERP/WMS i synchronizacja
Stanem powinna zarządzać warstwa ERP/WMS. Sklep pobiera dane poprzez feed lub API, a logika biznesowa sklepu decyduje o widoczności. Dobre praktyki:
- Harmonogram aktualizacji: co 5–10 minut dla szybko rotujących, godzinowo dla reszty.
- Kolejka zmian: wydarzenia „stock change” trafiają do kolejki (np. Redis, RabbitMQ) i są przetwarzane sekwencyjnie, z retry.
- Walidacja: odrzucaj ujemne stany i skoki niezgodne z historią (anty‑glitch).
Bufory, rezerwacje i overselling
Wdroż bufor kanałowy: minimalny stan wymagany do „widoczności w katalogu”. Dodatkowo:
- Rezerwacja koszyka z czasem ważności (np. 15 min) i zwalnianiem przy porzuceniu.
- Synchronizacja rezerwacji między kanałami (sklep, marketplace), aby nie eksponować produktów niedostępnych gdzie indziej.
Scenariusze brzegowe: warianty, zestawy, multipaki
Warianty: ukrywaj wyłącznie te SKU, które faktycznie mają 0 (lub poniżej progu). Nie zmieniaj URL‑a rodzica. Dla zestawów: licz „salable” jako min(salable komponentów); jeśli choć jeden = 0, zestaw niewidoczny. Multipaki: gdy rozbijasz opakowania, skonfiguruj zasady konwersji (np. 1 opakowanie = 6 szt.), by bufor liczyć po sztukach.
Powiadomienia o dostępności i kolejkowanie
Formularz „Powiadom o dostępności” pełni funkcję miękkiej konwersji. Wdroż:
- Limit zapisu na adres e‑mail i SKU (anty‑spam).
- Wysyłkę partiami (throttling), aby uniknąć gwałtownego ruchu i wyprzedaży w sekundy.
- Personalizację: rekomendacje alternatyw jeśli produkt nie wróci w N dniach.
Testy regresyjne i monitoring
Wprowadź checklistę E2E:
- Gdy stan spada poniżej progu – produkt znika z listingu i wyszukiwarki, ale karta pozostaje dostępna (brak przejściowy).
- Po restock – produkt wraca do listingu w ciągu X minut, mapa strony aktualizuje się w Y godzin.
- Warianty 0 są ukryte lub wyszarzone – zgodnie z decyzją UX.
- Brak błędów 404/410 „przypadkowych” na kartach z ruchem.
Bezpieczeństwo i spójność danych
Chroń się przed rozjazdem danych:
- Audit log zmian stanów (kto/co/kiedy). Automatyczne alerty przy anomaliach.
- Transakcje atomowe: aktualizacja stanu i widoczności w jednej operacji, by uniknąć „sprzedaję niewidoczny” lub „widoczny, choć 0”.
- Wersjonowanie feedów: odrzuć paczki niekompletne; fallback do ostatniej poprawnej wersji.
Komunikacja do klienta i obsługa błędów
Gdy użytkownik trafi na kartę niedostępnego, pokaż:
- Czytelny status z przewidywaną datą dostawy (jeśli znana).
- Alternatywy i kompatybilne zamienniki.
- CTA do powiadomienia o dostępności lub kontaktu z obsługą.
Strony 404/410 przygotuj z kontekstem: komunikat, wyszukiwarka, linki do kategorii nadrzędnych. To ogranicza frustrację i utratę ruchu.
Kanały zewnętrzne i marketplace’y
Różnicuj zasady per kanał. Na marketplace’ach zwykle po prostu wstrzymujesz ofertę przy stanie 0. W własnym sklepie możesz utrzymać kartę w indeksie z treściami informacyjnymi, ale wyłączyć ją z listingu i wyszukiwarki. Zachowaj spójność: w feedach produktowych (Google Merchant Center) przekaż availability = out_of_stock; gdy brak trwały – wycofaj z feedu.
Wydajność i cache
Ukrywanie to także warstwa wydajności:
- Cache per segment: oddziel wersje listingu „tylko dostępne” i „wszystkie”.
- Inwalidacja po zdarzeniu „restock” lub „out_of_stock” – nie tylko wg TTL.
- Lazy render dla sekcji alternatyw na kartach niedostępnych, by skrócić TTFB.
Przy dużych katalogach stosuj indeksy oparte na bitsetach (np. atrybut in_stock jako bit), co przyspiesza filtrowanie w listingu i wyszukiwarce.
Na koniec upewnij się, że Twoje procesy publikacji są zgodne z celami biznesowymi: przejrzyste dla zespołu, automatyczne i odwracalne. Dobrze zaprojektowane ukrywanie przy stanie magazynowym 0 poprawia doświadczenie klienta, ogranicza nieefektywne kliknięcia i chroni reputację sklepu, a jednocześnie utrzymuje wartościowe sygnały dla wyszukiwarek i danych analitycznych.