Przejdź do treści
GESEL.IO
StronyPozycjonowanieAplikacjePoradnik
Kreator↗EN←Strona główna
Strona główna/Poradnik/Integracje i automatyzacja

Integracje i automatyzacja

Synchronizacja stanów magazynowych: cztery stany i jedno źródło prawdy

Aktualizacja: 2026-08-13·7 min czytania·Redakcja GESEL.IO

Część poradnika: Integracja systemów w firmie: co zrobić, gdy przestaje działać

W skrócie

Nadsprzedaż bierze się stąd, że dwa systemy uznają się za właściciela informacji o dostępności, a każdy liczy co innego pod słowem „stan". Rozdziel cztery liczby — fizyczną, zarezerwowaną, dostępną po rezerwacjach i towar w drodze — wskaż jeden system, który jako jedyny ma prawo je zapisywać, i rozpisz dla każdej encji kierunek, częstotliwość oraz zachowanie przy konflikcie.

Na tej stronie

  1. Cztery różne stany magazynowe, które wszyscy nazywają jednym słowem
  2. Który system ma być źródłem prawdy o stanie magazynowym
  3. Webhook czy odpytywanie cykliczne — kiedy który sposób wystarczy
  4. Co się dzieje, gdy dwa systemy zmienią ten sam rekord naraz
  5. Rezerwacje z marketplace’ów i bufor bezpieczeństwa — dlaczego to plaster, nie architektura
  6. Mapa synchronizacji: jedna tabela do rozmowy z wykonawcą
  7. Czego wymagać od integracji stanów, zanim ją odbierzesz
4 stany

Stan fizyczny, zarezerwowany, dostępny po rezerwacjach i towar w drodze to cztery różne liczby. Nadsprzedaż zaczyna się wtedy, gdy sklep pobiera którąś z pozostałych trzech zamiast stanu dostępnego.

Synchronizacja stanów magazynowych rozjeżdża się prawie zawsze z jednego powodu: dwa systemy jednocześnie uznają się za właściciela informacji o tym, ile sztuk jest dostępnych. Sklep zdejmuje sztukę w chwili złożenia zamówienia, ERP dopiero przy wydaniu towaru z magazynu, a serwis sprzedażowy pokazuje liczbę sprzed ostatniego cyklu wymiany danych. Do tego dochodzi drugi problem, który rzadko ktoś nazywa wprost: te systemy liczą co innego, choć w każdym z nich pole nazywa się tak samo — „stan”. Zanim wybierzesz narzędzie, musisz ustalić, o którym stanie w ogóle mówisz.

Cztery różne stany magazynowe, które wszyscy nazywają jednym słowem

W magazynie istnieją cztery różne liczby — stan fizyczny, stan zarezerwowany, stan dostępny i towar w drodze — i to ich pomylenie, a nie awaria integracji, stoi za większością nadsprzedaży. Rozdzielenie ich to najtańsza zmiana, jaką możesz wprowadzić, bo nie wymaga ani nowego systemu, ani nowego dostawcy.

  • Stan fizyczny to liczba sztuk, które w tej chwili leżą na regale. Zgadza się z inwentaryzacją i z tym, co widzi magazynier. Konsekwencja: jeśli to jego wysyłasz do sklepu, sprzedajesz towar przypisany już do cudzego zamówienia.
  • Stan zarezerwowany to sztuki fizycznie obecne w magazynie, ale przypisane do konkretnych zamówień, dokumentów wydania albo zleceń kompletacji. Konsekwencja: rezerwacja nie zmniejsza stanu fizycznego, więc system, który jej nie widzi, będzie zawyżał dostępność aż do momentu wydania towaru.
  • Stan dostępny to stan fizyczny pomniejszony o rezerwacje — jedyna liczba, którą wolno pokazywać kupującemu. Konsekwencja: jeśli sklep, Allegro i Amazon pobierają stan fizyczny zamiast dostępnego, każdy z nich sprzedaje tę samą sztukę niezależnie od pozostałych.
  • Towar w drodze to sztuki zamówione u dostawcy lub przesuwane między magazynami, jeszcze nieprzyjęte dokumentem. Konsekwencja: doliczenie ich do stanu dostępnego zamienia sklep w przedsprzedaż, o której klient nie został poinformowany — zamówienie zostanie przyjęte, a wysyłka będzie czekać na dostawę.

Pytanie, które rozstrzyga większość sporów przy wdrożeniu, brzmi więc: którą z tych czterech liczb widzi klient w karcie produktu? Ta sama dyscyplina — jedna encja, jedna definicja, jeden właściciel — wraca przy każdej integracji systemów w firmie, tylko przy stanach magazynowych jej brak widać najszybciej, bo kosztuje anulowane zamówienie.

Który system ma być źródłem prawdy o stanie magazynowym

Źródłem prawdy powinien być ten system, w którym powstaje dokument zmieniający ilość — w praktyce ERP albo system magazynowy WMS, nigdy sklep. Źródło prawdy to jeden system, który jako jedyny ma prawo zapisywać daną wartość, podczas gdy pozostałe wyłącznie ją odczytują. WMS, czyli oprogramowanie sterujące pracą magazynu, komunikuje się z ERP zwykle przez szynę integracyjną albo API; typowy przepływ to zlecenie kompletacji wysyłane z ERP do WMS i zwrotne potwierdzenie realizacji.

Operacyjnie oznacza to trzy konkretne rzeczy. Nikt nie poprawia stanu ręcznie w panelu sklepu, bo najbliższa aktualizacja i tak nadpisze tę zmianę. Każda korekta idzie dokumentem w systemie źródłowym. A jeśli sklep pokazuje liczbę inną niż ERP, domyślnie zakładamy, że to sklep jest nieaktualny — nie odwrotnie.

✗„Zsynchronizujemy wszystko w obie strony, żeby wszędzie było tak samo."
✓„Stan dostępny: z ERP do sklepu i kanałów sprzedaży. Zamówienia: z kanałów do ERP. Ceny: z ERP do sklepu. Każda encja ma jeden kierunek i jednego właściciela."

Webhook czy odpytywanie cykliczne — kiedy który sposób wystarczy

Webhook jest potrzebny wszędzie tam, gdzie liczy się reakcja w sekundach, a odpytywanie cykliczne wystarcza, gdy sprzedajesz w jednym kanale i towar nie schodzi w pojedynczych sztukach. Webhook to model, w którym system sam zgłasza zmianę, wysyłając powiadomienie w chwili jej wystąpienia. Odpytywanie cykliczne to model odwrotny: drugi system co jakiś czas sam pyta, co zmieniło się od ostatniego razu.

Różnica jest czysto operacyjna. Przy odpytywaniu zawsze istnieje okno między dwoma cyklami, w którym sklep sprzedaje na podstawie nieaktualnej liczby. Przy sprzedaży w kilku kanałach naraz — własny sklep plus Allegro, Amazon, eBay, Kaufland czy Empik — to okno mnoży się przez liczbę kanałów, bo każdy z nich niezależnie uważa ostatnią sztukę za dostępną. Webhook to okno zamyka, ale ma własną słabość: powiadomienie może nie dotrzeć, gdy odbiorca akurat nie odpowiada. Dlatego w praktyce łączy się oba modele — zdarzeniowe powiadomienia na bieżąco plus pełne uzgodnienie wszystkich stanów raz na dobę, poza godzinami szczytu.

Sam sposób przesyłania danych bywa różny: REST, SOAP, GraphQL, kolejki komunikatów, a w starszych wdrożeniach transfer plików przez SFTP w formacie CSV lub XML. Uwierzytelnianie to zwykle OAuth 2.0, tokeny albo klucze API. Dla właściciela sklepu istotne jest jedno pytanie: czy dostawca w ogóle wspiera powiadomienia o zmianie, czy jedynym sposobem jest cykliczne pytanie. Jeśli okaże się, że nie ma żadnego wspieranego interfejsu, zostają drogi opisane w tekście o tym, jak połączyć dwa systemy bez API. Wybór między gotową platformą automatyzacji a rozwiązaniem pisanym pod siebie to osobna decyzja, którą rozkłada tekst o tym, czy wybrać Make, n8n czy własną integrację.

Co się dzieje, gdy dwa systemy zmienią ten sam rekord naraz

Wygrywa zapis, który dotarł później — i właśnie to jest problem, bo „później” nie znaczy „poprawniej”. Klasyczny scenariusz: magazynier koryguje stan po inwentaryzacji o 14:02, a integracja wysyła do sklepu wartość pobraną o 14:00 i cofa świeżą korektę. Nikt nie widzi błędu, bo żaden system nie zgłosił awarii — po prostu obowiązuje stara liczba.

Trzy reguły, które to porządkują, warto zapisać w wymaganiach, zanim ktokolwiek zacznie kodować:

  • każde pole ma jeden kierunek zapisu, a próba zapisu z drugiej strony jest odrzucana, nie „scalana”;
  • każdy komunikat niesie znacznik czasu i własny identyfikator, dzięki czemu starszy komunikat nie nadpisuje nowszego, a ten sam komunikat dostarczony dwa razy nie zmienia stanu dwukrotnie;
  • tam, gdzie system po drugiej stronie na to pozwala, przesyłaj operację („zdejmij jedną sztukę”) zamiast wartości bezwzględnej („ustaw siedem”), bo operacja jest odporna na wyścig dwóch równoczesnych zmian.

Rezerwacje z marketplace’ów i bufor bezpieczeństwa — dlaczego to plaster, nie architektura

Bufor bezpieczeństwa to celowe zaniżanie stanu pokazywanego w kanałach sprzedaży, żeby zdążyć zareagować, zanim ostatnia sztuka zostanie sprzedana dwa razy. Działa, ale rozwiązuje objaw, a nie przyczynę — i ma cenę, którą płacisz codziennie.

Problem zaczyna się od tego, że serwisy typu Allegro czy Amazon mają własny moment blokowania towaru i własne opóźnienie w przekazaniu zamówienia do Twojego ERP. Przez te kilka minut sztuka jest już sprzedana w jednym kanale, ale w pozostałych wciąż widnieje jako dostępna. Bufor po prostu przykrywa to okno rezerwą, zamiast je skracać.

Cena bufora jest prosta do policzenia we własnym asortymencie: przy wolno rotujących indeksach z jedną lub dwiema sztukami na stanie rezerwa oznacza, że część katalogu nigdy nie pokaże się jako dostępna. Bufor jest uzasadniony jako rozwiązanie czasowe — na okres wdrożenia, dla najszybciej rotujących indeksów, z ustaloną datą wyłączenia. Jeśli po roku nadal go potrzebujesz, to znak, że nierozwiązany został problem definicji stanu albo częstotliwości wymiany danych.

Mapa synchronizacji: jedna tabela do rozmowy z wykonawcą

Zanim ktokolwiek zacznie wdrażać, rozpisz każdą encję w jednym wierszu: co, w którą stronę, jak często, kto jest właścicielem i co ma się stać przy konflikcie. Poniżej typowy układ dla sklepu sprzedającego w kilku kanałach.

Encja Kierunek Częstotliwość Źródło prawdy Przy konflikcie
Stan dostępny ERP → sklep i kanały sprzedaży zdarzeniowo, plus pełne uzgodnienie raz na dobę ERP lub WMS wygrywa ERP, wartość w sklepie jest nadpisywana
Rezerwacje sklep i kanały → ERP natychmiast po złożeniu zamówienia kanał, w którym powstało zamówienie rezerwacja nie znika automatycznie, wymaga decyzji człowieka
Zamówienia sklep i kanały → ERP natychmiast kanał sprzedaży duplikat rozpoznawany po numerze zamówienia z kanału
Kartoteka produktu ERP → sklep raz na dobę ERP ręczne zmiany w sklepie są nadpisywane przy imporcie
Ceny ERP → sklep raz na dobę lub zdarzeniowo ERP promocje kanałowe wyłączone spod nadpisania
Towar w drodze ERP → panel wewnętrzny raz na dobę ERP nie wpływa na stan dostępny w żadnym kanale

Taką tabelę wypełnisz sam, bez wykonawcy, a ona przesądza o połowie kosztu wdrożenia — im więcej encji i kanałów, tym więcej przypadków brzegowych do obsłużenia; logikę takiej wyceny rozkłada tekst o tym, z czego składa się cena aplikacji mobilnej. Jeśli wolisz od razu uporządkować ją w formie dokumentu do rozmowy, sześciokrokowy kreator briefu prowadzi przez systemy, kanały i procesy, które trzeba w takim projekcie wymienić. Gdy na liście encji pojawiają się także dokumenty sprzedaży, osobnym tematem jest integracja z KSeF własnego systemu.

Czego wymagać od integracji stanów, zanim ją odbierzesz

Integracja bez logów, kolejki nieudanych komunikatów i alertu do konkretnej osoby jest niedokończona, niezależnie od tego, jak dobrze działa w dniu uruchomienia. To są elementy, które decydują o zachowaniu w złym dniu, a nie w dobrym.

  • Logi z możliwością odtworzenia zdarzenia — co zostało wysłane, kiedy, w którą stronę i z jakim skutkiem, przechowywane przez ustalony z góry okres.
  • Kolejka nieudanych komunikatów to lista wiadomości, których nie udało się dostarczyć; bez niej nieudana aktualizacja stanu po prostu znika i nikt się o tym nie dowie.
  • Ponowienia z rosnącym odstępem i limitem prób, żeby chwilowa niedostępność systemu nie wymagała ręcznej interwencji, a trwała awaria nie zapętliła się w nieskończoność.
  • Alert do człowieka wysyłany na konkretny adres lub kanał, wyzwalany progiem zdefiniowanym po Twojej stronie — na przykład brakiem odświeżenia stanów przez ustalony czas.
  • Właściciel procesu wskazany imiennie, a nie „dział IT”: jedna osoba, która czyta alerty i ma prawo wstrzymać sprzedaż wrażliwych indeksów.

Jedno pytanie zadaj przed podpisaniem umowy, nie po. Część starszych systemów magazynowych obecnych na polskim rynku nie ma publicznego, wspieranego interfejsu, a integracja wpięta bezpośrednio w bazę danych bywa łamana przy kolejnej aktualizacji dostawcy — i wtedy stany przestają się aktualizować bez żadnego komunikatu o błędzie.

Wzór

„Czy system udostępnia publiczne, wspierane API do odczytu stanów magazynowych? Czy zwraca osobno stan fizyczny, zarezerwowany i dostępny? Czy potrafi wysłać powiadomienie o zmianie stanu, czy trzeba go odpytywać cyklicznie? Jakie są limity liczby zapytań i czy zachowanie tego interfejsu jest objęte gwarancją zgodności przy aktualizacjach systemu?"

Baza wiedzy

Stany w sklepie i w ERP nie zgadzają się ze sobą?

Opisz swoje systemy i kanały sprzedaży w kreatorze briefu — wrócimy z mapą synchronizacji i zakresem integracji.

Otwórz kreator briefu↗

Checklista

  • ✓

    Ustal, którą z czterech liczb — stan fizyczny, zarezerwowany, dostępny czy towar w drodze — widzi klient w karcie produktu.

  • ✓

    Wskaż jeden system, który jako jedyny ma prawo zapisywać stan; wszystkie pozostałe wyłącznie go odczytują.

  • ✓

    Rozpisz mapę synchronizacji: encja, kierunek, częstotliwość, źródło prawdy, zachowanie przy konflikcie.

  • ✓

    Zapytaj dostawcę systemu magazynowego, czy udostępnia publiczne, wspierane API i czy zwraca stan dostępny osobno od fizycznego.

  • ✓

    Zdecyduj, czy stan ma być wysyłany zdarzeniowo, czy pobierany cyklicznie, i dopisz pełne uzgodnienie stanów raz na dobę.

  • ✓

    Wymagaj kolejki nieudanych komunikatów, ponowień z limitem prób i alertu, gdy stan nie odświeżył się przez ustalony czas.

  • ✓

    Wyznacz imiennie osobę odpowiedzialną za proces: kto czyta alerty i kto decyduje, gdy stany się rozjadą.

  • ✓

    Traktuj bufor bezpieczeństwa jako rozwiązanie na czas wdrożenia, z datą wyłączenia, a nie jako docelową architekturę.

Najczęstsze pytania

Dlaczego stany magazynowe w sklepie i w ERP się rozjeżdżają?
Najczęściej dlatego, że oba systemy jednocześnie uznają się za właściciela informacji o dostępności i każdy liczy ją inaczej. Sklep zdejmuje sztukę w chwili złożenia zamówienia, ERP dopiero przy wydaniu towaru z magazynu, a część systemów pokazuje stan fizyczny bez potrącenia rezerwacji. Dopóki nie zostanie wskazany jeden system zapisujący stan i jedna definicja tego, co znaczy „dostępny", różnice będą wracać po każdej korekcie.
Który system ma być źródłem prawdy o stanie magazynowym?
Ten, w którym powstaje dokument zmieniający ilość — czyli zwykle ERP albo system magazynowy WMS, a nie sklep internetowy. Sklep i serwisy sprzedażowe wiedzą o rezerwacjach i zamówieniach, ale nie widzą przyjęć, zwrotów, korekt po inwentaryzacji ani przesunięć międzymagazynowych. Dlatego stan płynie z ERP do kanałów sprzedaży, a zamówienia i rezerwacje w drugą stronę.
Jak często powinna działać synchronizacja stanów, żeby nie było nadsprzedaży?
Częstotliwość dobiera się do rotacji i liczby kanałów, a nie do możliwości narzędzia. Przy sprzedaży w jednym kanale i towarze schodzącym w większych partiach cykl kilkunastominutowy zwykle wystarcza. Przy kilku kanałach naraz i pojedynczych sztukach na stanie potrzebne jest powiadomienie o zmianie wysyłane od razu, bo w oknie między dwoma cyklami każdy kanał sprzedaje tę samą ostatnią sztukę niezależnie od pozostałych.
Co lepsze: gotowy integrator czy bezpośrednia integracja sklepu z ERP?
To zależy od liczby kanałów i od tego, czy Twoje procesy mieszczą się w gotowych szablonach. Warstwa pośrednia typu BaseLinker, Apilo czy Sellasist skraca drogę do wielu serwisów sprzedażowych naraz, ale narzuca własny model danych i staje się kolejnym miejscem, w którym stan może się rozjechać. Integracja pisana bezpośrednio daje kontrolę nad definicją stanu i obsługą konfliktów, kosztem utrzymania po Twojej stronie. Kryterium jest jedno: gdzie ma mieszkać reguła biznesowa, której nie da się wyklikać.
Jak zmapować produkty między systemami, jeśli mają różne symbole i kody?
Wybierz jedno pole nadrzędne, które łączy rekordy w obu systemach — najczęściej indeks z ERP albo kod EAN — i uznaj je za jedyne wiążące. Dla pozycji, które go nie mają, prowadź osobną tabelę mapowań zamiast poprawiać nazwy „na oko". Integracja powinna generować raport niedopasowanych indeksów po każdym pełnym uzgodnieniu, bo produkt bez mapowania nie jest błędem widocznym od razu — po prostu przestaje się aktualizować.
Co się dzieje z zamówieniami, gdy integracja przestanie działać na kilka godzin?
Zamówienia dalej wpadają, a sklep sprzedaje na podstawie ostatniego znanego stanu, więc im dłuższa przerwa, tym większe ryzyko nadsprzedaży. Dobrze zaprojektowana integracja odkłada nieudane komunikaty do kolejki i wysyła je po powrocie połączenia, zamiast je gubić. Dlatego alert o braku odświeżenia stanu jest ważniejszy od samego mechanizmu ponowień — ktoś musi zdecydować, czy wstrzymać sprzedaż wrażliwych indeksów.

Źródła i metodologia

Linki prowadzą do źródeł pierwotnych oraz zasad, według których przygotowujemy i aktualizujemy materiały.

  • Zasady redakcyjne GESEL.IO↗

Czytaj także

  • Integracja systemów w firmie: co zrobić, gdy przestaje działać

    Integracja systemów w firmie bez zgadywanki: macierz encji, jedno źródło prawdy, webhooki, kolejki i plan na dzień, w którym druga strona przestaje odpowiadać.

  • Integracja z KSeF własnego systemu sprzedażowego: co zaplanować w projekcie

    Integracja z KSeF własnego systemu sprzedażowego krok po kroku: od kiedy obowiązek wystawiania i odbioru, tryb offline24, wybór drogi wdrożenia i co zaplanować w projekcie.

  • Make czy n8n, a może własna integracja: pięć progów przełączenia

    Make czy n8n, czy jednak własna integracja? Pięć progów, po których przekroczeniu scenariusz no-code przestaje się opłacać, i realny koszt self-hostingu.

GESEL.IO
Strony internetowePozycjonowanieAplikacjeStrona dla nowej firmyPoradnik
Zasady redakcyjnePolityka prywatnościRegulamin serwisuWsparcie

GESEL.IO sp. z o.o., ul. Jagiellońska 5/22, 58-100 Świdnica, Polska

Sąd Rejonowy dla Wrocławia-Fabrycznej we Wrocławiu, IX Wydział Gospodarczy KRS, KRS 0001258062, NIP 8842841661, REGON 545371616, kapitał zakładowy: 5 000,00 zł.

© 2026 GESEL.IO sp. z o.o.