Rezerwacja stanów magazynowych w e-commerce — dlaczego jest ważna?
Klient dodaje ostatnią sztukę do koszyka, przechodzi do płatności — a w tym samym momencie ktoś inny kupuje ją w innym kanale. Kto ma rację? Który z nich dostanie towar, a który usłyszy „przepraszamy, właśnie się skończyło“? Odpowiedź na to pytanie daje rezerwacja stanu magazynowego — mechanizm, który decyduje, czyja sztuka jest czyja, zanim jeszcze paczka opuści magazyn.
W tym poradniku rozkładamy rezerwację na czynniki pierwsze: czym dokładnie jest, w którym momencie ją zakładać, jak działa krok po kroku i jakie pułapki (timeouty, porzucone koszyki, zawieszone rezerwacje) potrafią ją zepsuć. To nie jest kolejny tekst o nadsprzedaży — tu skupiamy się na samym mechanizmie, który za kulisami ją zatrzymuje.
Czym jest rezerwacja stanu magazynowego
Rezerwacja to tymczasowe zablokowanie sztuki dla konkretnego zamówienia lub koszyka, zanim towar fizycznie opuści magazyn. Zarezerwowana sztuka wciąż leży na półce, ale system przestaje ją oferować innym — jest „obiecana“ komuś, kto właśnie jest w trakcie zakupu.
Najprościej opisuje to jedno równanie, które warto zapamiętać:
Stan dostępny = stan fizyczny − stan zarezerwowany
To rozróżnienie jest sednem całego mechanizmu. Masz 10 sztuk na półce, 3 są zarezerwowane pod otwarte zamówienia — więc do sprzedaży pokazujesz 7, a nie 10. Bez tego podziału system oferowałby wszystkie 10, mimo że 3 są już komuś obiecane. Właśnie ta różnica między „co leży w magazynie“ a „co mogę jeszcze sprzedać“ chroni przed nadsprzedażą.
W którym momencie zakładać rezerwację
Najważniejsza decyzja projektowa to kiedy sztuka schodzi z puli dostępnej. Masz trzy typowe momenty, każdy z innym kompromisem:
- Przy dodaniu do koszyka — najbezpieczniejsze dla klienta, który dokańcza zakup, ale ryzykowne: większość koszyków jest porzucana, więc zablokujesz towar dla ludzi, którzy nigdy nie zapłacą. Wymaga krótkiego timeoutu (patrz niżej).
- Przy złożeniu zamówienia — złoty środek. Sztuka schodzi w chwili potwierdzenia zamówienia, jeszcze przed wysyłką. Zamyka okno „sprzedana, ale niewysłana“, nie blokując towaru dla samych oglądających.
- Przy zaksięgowaniu płatności — najostrożniejsze dla sprzedawcy (rezerwujesz tylko opłacone), ale zostawia lukę: między złożeniem a płatnością ktoś inny może kupić tę samą sztukę.
Dla większości sklepów wielokanałowych sensowny domyślny wybór to rezerwacja przy złożeniu zamówienia, ewentualnie krótka rezerwacja koszyka dla towarów deficytowych (bilety, edycje limitowane, ostatnie sztuki w promocji). Wybór momentu to nie detal — to on decyduje, jak duże jest okno na podwójną sprzedaż.
Jak rezerwacja działa krok po kroku
Prześledźmy pełny cykl życia jednej sztuki od zamówienia do wysyłki:
- Wpływa zamówienie na wybrany produkt/wariant (z Allegro, sklepu, dowolnego kanału).
- System sprawdza stan dostępny (fizyczny minus już zarezerwowany). Jeśli jest sztuka — zakłada rezerwację; jeśli nie — zamówienie trafia do backorderu albo zostaje odrzucone.
- Powstaje wpis rezerwacji: który wariant, ile sztuk, dla którego zamówienia, znacznik czasu, status „aktywna“.
- Stan dostępny spada o zarezerwowaną ilość i ta nowa, niższa liczba jest tym, co widzą pozostałe kanały. Sztuka nadal leży fizycznie w magazynie.
- Kompletacja i pakowanie — magazynier wyjmuje towar. Rezerwacja wciąż go chroni, więc nikt go w międzyczasie nie „podkupi“.
- Wysyłka — w momencie wydania rezerwacja się domyka: stan fizyczny spada realnie, a wpis rezerwacji zostaje rozliczony (skonsumowany). Równanie znów się zgadza.
Cały sens tkwi w krokach 3–5: przez cały czas między „klient kupił“ a „paczka wyszła“ sztuka jest niewidoczna dla innych kupujących, choć fizycznie jeszcze jej nie wydano. To właśnie ten fragment eliminuje najczęstsze okno nadsprzedaży — opisaliśmy je szerzej w poradniku jak uniknąć sprzedaży produktów bez stanu.
Pułapka pierwsza: porzucone koszyki i timeouty
Jeśli rezerwujesz już na etapie koszyka, wpadasz w klasyczny problem: 7 na 10 koszyków nigdy nie kończy się zakupem. Gdyby każda rezerwacja trzymała towar w nieskończoność, Twój sklep szybko pokazywałby „brak“, mimo że magazyn pełny — bo cały stan wisiałby w martwych koszykach.
Ratunkiem jest timeout rezerwacji — okres ważności, po którym zablokowana sztuka automatycznie wraca do puli dostępnej:
- Krótki koszyk — typowo 10–30 minut. Wystarczy na dokończenie płatności, a porzucony koszyk zwalnia towar niemal od razu.
- Zamówienie nieopłacone — dłuższy timeout (np. 24–72 h, zależnie od formy płatności), po którym rezerwacja wygasa, jeśli płatność nie wpłynęła.
- Automatyczne zwolnienie — kluczowe jest, żeby wygasanie działało samo, w tle. Nie możesz liczyć na to, że ktoś ręcznie „posprząta“ porzucone rezerwacje.
Bez timeoutów rezerwacja z narzędzia chroniącego stan zmienia się w narzędzie, które sztucznie go zaniża — i tracisz sprzedaż na towarze, który realnie masz.
Pułapka druga: zawieszone rezerwacje i rozjazd stanu
Druga rodzina problemów to rezerwacje, które utknęły — nie zostały ani skonsumowane (wysyłką), ani zwolnione (timeoutem). Skąd się biorą:
- Anulowane zamówienie, po którym nikt nie zwolnił rezerwacji — sztuka wisi zablokowana „w próżni“.
- Zwrot lub reklamacja — towar wraca na magazyn, ale stan zarezerwowany nie został poprawnie rozliczony.
- Błąd integracji lub timeout połączenia w trakcie zakładania rezerwacji — zamówienie „w połowie“, stan niepewny.
- Podwójne zdarzenia — ta sama sprzedaż policzona dwa razy przez powtórzony webhook lub ponowione zapytanie.
Efekt zawsze ten sam: stan zarezerwowany rośnie ponad realny, a dostępny sztucznie spada. Dlatego rezerwacje potrzebują higieny: automatycznego zwalniania przy anulacji, poprawnego rozliczania zwrotów, odporności na powtórzone zdarzenia (idempotencja) oraz okresowej rekoncyliacji — porównania sumy rezerwacji z otwartymi zamówieniami, żeby wyłapać „osierocone“ wpisy. Jeśli dopiero układasz podstawy magazynu, zacznij od prostej, uporządkowanej ewidencji — opisaliśmy ją w tekście o prostym systemie magazynowym dla sklepu.
Rezerwacja a wielokanałowość i warianty
Rezerwacja nabiera pełnego sensu dopiero przy jednym wspólnym stanie dla wszystkich kanałów. Jeśli Allegro liczy swoje sztuki, a sklep swoje, rezerwacja w jednym miejscu nie powstrzyma sprzedaży w drugim. Fundament to więc centralny stan i spójne SKU jako wspólny klucz — ten sam kod produktu i wariantu po każdej stronie.
Dwie rzeczy, o których łatwo zapomnieć:
- Rezerwuj na poziomie wariantu, nie produktu. Zejście rozmiaru M do zera nie może zostawiać oferty „produkt dostępny“. Każdy wariant ma własny stan i własną pulę rezerwacji.
- Propaguj nowy stan dostępny do wszystkich kanałów możliwie szybko. Rezerwacja obniża liczbę u źródła, ale pozostałe kanały muszą się o tym dowiedzieć, zanim sprzedadzą sztukę ponownie — stąd wartość częstej, najlepiej zdarzeniowej synchronizacji.
W praktyce Sellaro produkty i warianty ze wszystkich podpiętych kanałów (PrestaShop, Sylius, WooCommerce; kolejne dokładamy na życzenie) trafiają do wspólnego widoku magazynu, a silnik automatyzacji działa na zdarzeniach domenowych w modelu WHEN→IF→THEN — więc zejście stanu może od razu wywołać akcję (powiadomienie e-mail/SMS, webhook, wpis do logu). Integracje działają READ-ONLY — Sellaro nie zapisuje niczego z powrotem do sklepu.
Najczęstsze pytania
Czym różni się rezerwacja od zdjęcia stanu?
Rezerwacja to tymczasowa blokada — sztuka wciąż leży w magazynie, tylko przestaje być oferowana innym. Zdjęcie stanu następuje później, przy wysyłce, gdy towar realnie opuszcza magazyn. Rezerwacja wypełnia właśnie lukę między „kupione“ a „wysłane“.
Czy rezerwacja przy dodaniu do koszyka to dobry pomysł?
Bywa przydatna dla towarów deficytowych, ale ma haczyk: większość koszyków jest porzucana, więc bez krótkiego timeoutu (10–30 min) zablokujesz stan dla ludzi, którzy nie zapłacą. Dla większości sklepów bezpieczniejsza jest rezerwacja przy złożeniu zamówienia.
Co się dzieje z rezerwacją, gdy klient nie zapłaci?
Powinna wygasnąć automatycznie po ustalonym timeoucie i zwolnić sztukę z powrotem do puli dostępnej. Kluczowe, by działo się to samo, w tle — inaczej nieopłacone zamówienia w nieskończoność zaniżają Twój stan dostępny.
Czy rezerwacja jest potrzebna przy jednym kanale sprzedaży?
Tak, choć mniej krytyczna. Nawet w jednym sklepie okno między złożeniem zamówienia a wysyłką pozwala sprzedać tę samą sztukę dwa razy przy większym ruchu. Przy sprzedaży wielokanałowej rezerwacja przestaje być opcją, a staje się koniecznością.
Podsumowanie
Rezerwacja stanu magazynowego to tymczasowe zablokowanie sztuki dla zamówienia, zanim opuści magazyn — mechanizm, który realizuje proste, ale kluczowe równanie: dostępne = fizyczne − zarezerwowane. Dobrze zaprojektowana rezerwacja rozstrzyga, czyja jest ostatnia sztuka, zamyka okno „sprzedane, ale niewysłane“ i chroni przed nadsprzedażą. Żeby działała, potrzebuje trzech rzeczy: właściwego momentu zakładania, timeoutów zwalniających porzucone koszyki oraz higieny wyłapującej zawieszone i osierocone rezerwacje. A na wierzchu — jednego wspólnego stanu i spójnych SKU, by rezerwacja obowiązywała we wszystkich kanałach naraz.
Chcesz prowadzić wspólny stan i widzieć dostępność uwzględniającą rezerwacje w jednym miejscu? Policz swój koszt w Sellaro — brakującą integrację dodamy gratis w ramach pakietu.