Przejdź do treści
Procesy B2B 6 min czytania

Quick order i CSV upload - ekspresowe zamawianie B2B

Klient B2B nie kupuje jak konsument. Buyer hurtowni przychodzi do sklepu z listą 100-500 SKU z systemu zaopatrzenia, planem zamówienia z działu produkcji albo tabelą zbieraną z pięciu dostawców. Klasyczny przepływ "wpisz w search, dodaj do koszyka" zajmuje mu pół dnia i nikt tego nie robi. Idzie do dostawcy, który zrozumiał, że jego klient pracuje w Excelu, nie w sklepie internetowym. Dobrze wdrożony quick order skraca te 100-500 pozycji z godzin do trzech minut i widziałem przypadki, w których sama ta funkcja była powodem podpisania umowy z hurtownią - klient powiedział wprost "u tamtych musiałem klikać każdą pozycję ręcznie".

Jakub Owsianka Autor
Zaktualizowano:
Okladka artykulu: Quick order i CSV upload - ekspresowe zamawianie B2B
Okladka artykulu: Quick order i CSV upload - ekspresowe zamawianie B2B
Spis treści (6)

Dlaczego quick order to must-have

Liczby, które zbieram po wdrożeniach, są na tyle spójne między klientami, że traktuję je jako ramę dyskusji z prezesem, kiedy ktoś jeszcze się waha, czy to inwestować.

Wskaźnik Bez quick order Z quick order
Czas złożenia zamówienia 100 SKU 18-25 min 2-4 min
Współczynnik porzucenia koszyka B2B 35-45% 12-20%
Średnia wartość zamówienia bazowa +15-30%
Zadowolenie buyerów (NPS) bazowe +20-40 pkt

Dlaczego różnica jest tak duża. Buyer B2B najczęściej zna swoje SKU na pamięć albo ma je w arkuszu wygenerowanym z ERP. Wyszukiwarka jest dla niego tarciem, nie pomocą - bo on nie szuka, on dostarcza. Powtarzalne zamówienia (miesięczna dostawa do magazynu, comiesięczne uzupełnienie biura) bez quick order to mozolne klikanie tych samych dziesięciu pozycji co miesiąc. A kiedy zamówienie wychodzi z systemu klienta (ERP, system zaopatrzenia, system MRP w produkcji), kopiowanie pozycja po pozycji jest po prostu niewykonalne - klient zrezygnuje po dwudziestej i pójdzie do konkurencji.

Konsekwencja biznesowa: sklep B2B bez quick ordera traci klientów na rzecz konkurencji, która go ma. Cena jest często wtórna - bo buyer odpowiada za czas swojego dnia, nie tylko za marżę firmy.

Wzory implementacji

Doszedłem do wniosku, że dobry sklep B2B powinien wspierać cztery różne sposoby quick orderu jednocześnie, bo każdy odpowiada innemu buyerowi w innej sytuacji. Próba narzucenia jednego "najlepszego" sposobu kończy się tym, że połowa klientów go nie używa.

Pierwszy sposób - paste z dwiema kolumnami, SKU i ilość. Klient wkleja prosto z Excela albo z notatnika:

ART-001    10
ART-005    25
SKU-12345  100

Aplikacja parsuje, dodaje do koszyka. Prosty UX, działa bez przygotowania klienta, ale wymaga znajomości SKU i nie pokazuje produktu przed dodaniem. To kandydat numer jeden dla buyera, który robi to po raz dwudziesty.

Drugi - upload CSV. Klient ładuje plik z dokumentowanym formatem:

sku,qty,uwagi
ART-001,10,
ART-005,25,Pilne
SKU-12345,100,

Skala wielokrotnie większa niż przy paste (5000+ pozycji obsłużone bez bólu), integracja z systemami klienta naturalna, bo CSV potrafi wyeksportować każdy ERP. Minus to przygotowanie pliku i krzywa uczenia dla starszych klientów - czasem trzeba w dokumentacji pokazać "kliknij Eksport w Comarchu, zapisz jako CSV, prześlij tutaj".

Trzeci wzór - quick form jako matryca dla wariantów. Tabela kolor razy rozmiar, klient wpisuje ilości w komórkach. Naturalny dla branży tekstylnej, butów, sklepów z towarem mocno wariantowym. Trudny do zastosowania dla wielu różnych produktów jednocześnie, ale tam, gdzie pasuje, jest najlepszym rozwiązaniem na rynku.

Czwarty - SKU z autocomplete. Klient wpisuje fragment kodu, dropdown pokazuje pasujące produkty z miniaturami i ceną. Kompromis między search a paste - szybciej niż katalog, bardziej interaktywnie niż wklejanie. Sprawdza się przy zamówieniach kilkunastoelementowych, gdzie klient zna kierunek, ale nie pełne SKU.

Dobrze zrobiony sklep B2B daje wszystkie cztery dostępne w jednej zakładce "Szybkie zamówienie" - buyer wybiera, co pasuje do jego dzisiejszej sytuacji.

Integracja z cennikami kontraktowymi

Quick order musi pokazywać klientowi jego cenę, nie cenę katalogową. To wydaje się oczywiste, ale widziałem wdrożenia, w których quick order pomijał logikę cenników kontraktowych i pokazywał cenę z katalogu - po czym klient widział "niespodziewaną" cenę dopiero w koszyku.

Przepływ, który stosuję, ma pięć kroków. Klient wprowadza SKU plus ilość (paste, CSV albo form). Sklep waliduje, czy SKU istnieje i czy jest dostępne. Pobiera cenę dla zalogowanego klienta z systemu cenników (cennik indywidualny, próg ilościowy, ewentualne rabaty wartościowe dla całego zamówienia). Wyświetla podsumowanie z cenami klienta przed dodaniem do koszyka. Klient akceptuje, pozycje trafiają do koszyka.

Wydajność staje się wyzwaniem przy 1000+ pozycjach. Dwie strategie, których używam zależnie od skali.

Batch lookup w bazie - jedna query SQL z WHERE sku IN (...) zwraca wszystkie produkty plus ceny w jednym przelocie. Wydajne dla 500-2000 pozycji, kalkulacja ceny dzieje się po stronie aplikacji z cache'owanego cennika. Async per linia - AJAX dla każdej pozycji osobno, walidacja stopniowa. Lepsze UX (klient widzi wynik dla każdej linii natychmiast), ale gorsze dla bardzo dużych quick orderów - 5000 requestów to rate limiting w Cloudflare i frustracja klienta.

Strategia hybrydowa, którą polecam: do 500 pozycji async per linia, powyżej batch lookup z progress barem. Klient widzi natychmiast wynik dla małych zamówień, dla dużych dostaje pasek postępu i kawę na pięć minut.

Cenniki kontraktowe per kontrahent - architektura cenników, na której quick order się opiera.

Walidacja stanów w czasie rzeczywistym

Quick order musi pokazać dostępność każdej linii zanim klient zaakceptuje. Klient, który dowie się o braku w stanie dopiero po akceptacji koszyka, drugi raz nie wróci do tej funkcji.

Trzy poziomy walidacji, które warto pokazać oddzielnie. Pierwszy - czy SKU w ogóle istnieje. Czerwona ikona, komunikat "SKU nie znaleziony", sugestia podobnych SKU (typo correction działa świetnie dla pomyłek typu O zamiast 0). Drugi - czy w stanie. Zielona ikona z dostępną ilością, pomarańczowa dla częściowej dostępności ("Dostępne 5 z 10 zamawianych"), czerwona dla braku. Trzeci - czy w cenniku klienta. Klient ma cennik kontraktowy z 10 tys. SKU i próbuje zamówić coś poza tym zakresem. Komunikat zależy od polityki: albo "Ten produkt nie jest w twoim cenniku, skontaktuj się z opiekunem" (twardy), albo "Cena katalogowa: X zł, czy zamówić?" (miękki).

Cztery praktyki UX, które robią różnicę. Walidacja inline - klient widzi wynik zaraz po wpisaniu, nie po Submit. Edycja ilości bez przeładowania strony - bo klient czasem zmienia 10 na 100 na ostatniej chwili. Częściowe zamówienie - jeśli 3 z 10 SKU jest dostępnych, klient może zamówić te trzy i odrzucić resztę, nie tracąc całego koszyka. Eksport "co nie wyszło" jako CSV - klient zabiera plik z odrzuconymi liniami z powrotem do swojego systemu, koryguje i wraca.

Powtarzanie poprzednich zamówień

Funkcja blisko spokrewniona z quick orderem, tania we wdrożeniu, wartość biznesowa nieproporcjonalnie wysoka. Po quick orderze polecam ją jako pierwszą rzecz do dorobienia.

W większości branż B2B 60-80% zamówień to powtórzenia z drobnymi zmianami. Klient zamawia "co miesiąc to samo", często nie patrząc na nowe produkty. Jeśli sklep daje mu jedno kliknięcie "Powtórz to zamówienie" z natychmiastową walidacją cen i dostępności - lojalność klienta rośnie skokowo. Bo do innego sklepu trzeba by przepisać 80 pozycji ręcznie.

Mechanika jest prosta. Lista zamówień historycznych z filtrami (data, typ, buyer w organizacji). Klik "Powtórz" wypełnia koszyk pozycjami z wybranego zamówienia, z aktualnymi cenami i dostępnościami. Klient widzi w widoku, co się zmieniło od poprzedniego razu - "cena wzrosła o 5%", "produkt już niedostępny, usunięty z listy". Możliwość edycji przed checkoutem.

Od strony SEO "powtórz zamówienie sklep B2B" i "ponowne zamówienie hurtownia" to query z niskim wolumenem, ale wysoką intencją, słabo pokryte przez konkurencję. Dobry artykuł o tej funkcji w blogu sklepu generuje ruch klientów porównujących platformy.

Antywzorce - zbyt skomplikowany UX

Najczęstsze błędy quick orderu z wdrożeń, w których zostałem zaproszony "do naprawienia, bo klienci nie używają".

Pierwszy - Submit czeka na walidację wszystkich pozycji synchronicznie. Klient wkleił 500 SKU, kliknął Submit, aplikacja waliduje 300 ms na pozycję, w sumie 2.5 minuty. Browser zaczyna gadać o nieodpowiadającej stronie, klient frustruje się i zamyka kartę. Rozwiązanie: walidacja w tle z progress barem, dostarczanie wyników stopniowo, możliwość częściowego sukcesu.

Drugi - walidacja "wszystko albo nic". Pięć linii złych z dwustu wywala cały koszyk. Klient ma teraz w ręku CSV z dwustu pozycjami i nie wie, która jest zła. Rozwiązanie: 195 dobrych pozycji do koszyka, 5 błędnych w sekcji "Do poprawienia" z opcją edycji w UI.

Trzeci - niejasny format CSV. Komunikat "Plik CSV nie został przyjęty". Klient nie wie, czy złe kolumny, czy zły separator, czy złe kodowanie pliku. Rozwiązanie: strona z dokumentacją formatu, plik przykładowy do pobrania, komunikaty błędów konkretne (linia 47, kolumna "qty", oczekiwano liczby, otrzymano "kilka").

Czwarty - brak feedback'u przy wprowadzaniu. Klient wpisuje 100 linii ręcznie, nie wie, czy SKU są poprawne, dopóki nie kliknie Submit. Rozwiązanie: walidacja inline z debounce - po 300 ms od ostatniego znaku, validate, pokaż status koło linii.

Piąty - brak zapisu jako draft. Klient przygotował zamówienie z 500 SKU, musiał wyjść na obiad, wraca po godzinie i wszystko zniknęło, bo sesja wygasła. Rozwiązanie: auto-save w localStorage co kilka sekund plus opcjonalny przycisk "Zapisz w koncie" dla dłuższych przerw.

Role i uprawnienia kupujących - quick order w organizacji z wieloma buyerami to osobne zagadnienie.

FAQ

Jak obsłużyć dziesiątki tysięcy linii w jednym koszyku? To granica techniczna i biznesowa. Większość platform ma realny pułap 1000-5000 linii w jednym koszyku ze względu na wydajność. Powyżej rozsądniej rozbić na kilka zamówień, ewentualnie z workflow akceptacji, jeśli przekraczają limity kredytowe. W kilku wdrożeniach dorobiłem osobny tryb "zamówienie hurtowe" obsługujący 10-50 tys. pozycji jako batch import - z odbiorem przez ERP i potwierdzeniem mailem, nie z klasycznym koszykiem na froncie.

Czy quick order działa z konfiguratorem produktu? Częściowo. Produkt konfigurowalny wymaga wyboru opcji (kolor, rozmiar, wariant). W quick orderze można dodać produkty z domyślnymi opcjami albo z opcjami zakodowanymi w wariantowym SKU (np. ART-001-RED-XL). Dla pełnej konfiguracji klient i tak musi przejść do karty produktu. W praktyce: quick order dla prostych produktów, klasyczne zakupy dla konfigurowalnych.

Jak rozróżnić SKU dostawcy i SKU klienta? Klient B2B często ma własne numery produktów - "u nas to się nazywa MAT-1234, a w katalogu sklepu to jest ART-005". Quick order powinien akceptować obie identyfikacje: SKU sklepu plus klient-specific SKU mapowany w bazie. Mapowanie jest pielęgnowane w panelu klienta albo importowane z systemu klienta. To funkcja, której konkurenci często nie mają, a klienci kontraktowi traktują jako warunek wejścia.

Czy quick order jest dostępny dla niezalogowanych? Nie. Quick order opiera się na cenie indywidualnej i sprawdzaniu uprawnień (czy klient może zamówić ten produkt, czy limit kredytowy mu na to pozwala). Niezalogowany użytkownik nie ma kontekstu, więc widzi tylko klasyczny katalog z cenami katalogowymi.

Co z błędami w stanie magazynowym podczas quick order? Sklep musi rezerwować stan tymczasowo - na czas trwania koszyka, typowo 15-30 minut. Bez tego dwóch klientów zamawiających ostatnie 10 sztuk dostanie potwierdzenie obaj, a magazyn będzie miał problem do rozwiązania o 7 rano. Rezerwacja koszykowa z timeoutem to standard B2B, którego nie wolno pominąć.

Co dalej

O autorze

Jakub Owsianka

Architekt rozwiązania w WiseB2B - silniku platform B2B. Zaczynał po stronie biznesu (własne sklepy), potem deweloper, dziś projektuje wdrożenia dla sklepów z katalogami w dziesiątkach tysięcy SKU. W ostatnich latach wdrożył AI-development w zespole i funkcjonalności oparte o AI bezpośrednio w silniku sklepu.

Masz pytanie do tego artykułu?

Dodatkowy kontekst, problem z własnym wdrożeniem, druga opinia - napisz wprost. Odpowiadam osobiście w 1-2 dni robocze.