Jak ukryć produkty z zerowym stanem magazynowym

dowiedz się

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.

< Powrót

Zapisz się do newslettera


Zadzwoń Napisz