SerianGroup: sklep B2B, który rozumie po polsku i zna stan magazynu
SerianGroup sprzedaje hodowcom i firmom DDD środki biobójcze Quimunsa oraz żeliwne poidła z częściami zamiennymi. Zbudowaliśmy im sklep B2B od zera: własny frontend w React, a pod spodem Shopify. Wyszukiwarka rozumie „muchami” i numer ze starego poidła, a kiedy towar się kończy, strona wie o tym bez niczyjej pomocy.
Punkt wyjścia: wyłączny dystrybutor bez sklepu
SerianGroup (otwiera się w nowej karcie) to wyłączny dystrybutor hiszpańskiej marki Quimunsa w Polsce: insektycydy, rodentycydy i preparaty dla hodowli. Obok tego firma rozwija własną linię żeliwnych poideł dla bydła i koni, z kompletem części zamiennych. Kupują hodowcy i firmy DDD, czyli ci, którzy zawodowo zwalczają owady i gryzonie.
Sprzedaż szła starym torem. Nie było porządnego katalogu ani możliwości zamówienia przez internet. Żeby coś kupić, trzeba było zadzwonić albo napisać, a potem czekać na odpowiedź.
Do tego asortyment, który nie wybacza skrótów. Środek na muchy ma numer pozwolenia na obrót i kartę charakterystyki, o którą zapyta każda firma DDD. Poidło ma zawór, pojemność miski i przyłącze wody. Część zamienna musi pasować do poidła, które hodowca już ma w oborze, a to często model innego producenta. Takiego katalogu nie da się wcisnąć w szablon sklepu i udawać, że działa.
Co zbudowaliśmy: React na wierzchu, Shopify pod spodem
Sklep jest headless, czyli rozdzielony na dwie warstwy. Wszystko, co widzi klient, napisaliśmy sami w React: stronę główną, katalog z filtrami, wyszukiwarkę, karty produktów, koszyk i obie wersje językowe. Każda strona wychodzi do przeglądarki jako gotowy HTML, prosto z szybkiego hostingu. Bez motywu, bez wtyczek, bez jednej linijki szablonu.
Wszystko, co dotyczy pieniędzy i towaru, robi Shopify. Koszyk od pierwszego kliknięcia „Dodaj do koszyka” jest koszykiem Shopify. Kasa, płatności, zamówienia, stany magazynowe i konta klientów też są w Shopify. Klient płaci pod adresem sklep.seriangroup.com, w kasie Shopify, tej samej, z której korzystają miliony sklepów. Obie warstwy rozmawiają przez Storefront API (otwiera się w nowej karcie), oficjalny interfejs Shopify do budowania własnych sklepów.
Jeden szczegół domyka sprawę. Shopify ma też własną witrynę sklepu, z adresami produktów i wyszukiwarką. U SerianGroup każdy taki adres przekierowuje na seriangroup.com: produkt na jego kartę, wyszukiwanie do katalogu. Koszyk, kasa i konto klienta zostają tam, gdzie mają być. Kto trafi na witrynę Shopify ze starego linku, i tak ląduje na stronie, którą zaprojektowaliśmy.
Stany magazynowe na żywo
To nasza ulubiona część tego projektu. Strona SerianGroup nie trzyma żadnej kopii cen ani stanów magazynowych. Każda karta produktu i każdy produkt na liście katalogu w chwili otwarcia pyta Shopify, ile towaru jest i po ile. Pyta znowu, gdy klient wraca do karty przeglądarki, i dostaje świeży stan przy każdej zmianie w koszyku. Cała strona katalogu pyta jednym zapytaniem, więc nie zwalnia.
Strona nie pamięta stanów magazynu. Za każdym razem pyta.
Efekt jest prosty. Ktoś w biurze SerianGroup ustawia w panelu Shopify stan produktu na zero. Następny klient, który otworzy jego kartę, zamiast „Dodaj do koszyka” widzi szary, zablokowany przycisk „Niedostępny”. Nikt nie przebudowuje strony, nikt nie dzwoni do agencji, nikt niczego nie przepisuje. Towar wraca na stan i przycisk wraca razem z nim. Cena zmieniona w panelu trafia na stronę tą samą drogą.
query Stock($ids: [ID!]!) @inContext(country: PL) {
nodes(ids: $ids) {
... on ProductVariant {
id availableForSale quantityAvailable currentlyNotInStock
price { amount currencyCode }
}
}
}
availableForSale decyduje o przycisku, quantityAvailable o tym, ile sztuk da się dodać.Trzy zamki zamiast jednego
Klient nie ma jak zamówić czegoś, czego nie ma. Pilnują tego trzy miejsca naraz:
- Karta produktu. Przy stanie zero przycisk zamienia się w „Niedostępny”, a licznik sztuk zatrzymuje się na tym, co leży w magazynie. Trzy sztuki na stanie to najwyżej trzy w koszyku.
- Koszyk. Jeśli ostatnia sztuka zniknie, kiedy produkt czeka już w koszyku, pozycja dostaje dopisek „Niedostępny”, a przejście do kasy czeka, aż klient ją usunie.
- Kasa. Na końcu pilnuje kasa Shopify, która liczy według tych samych stanów co strona.
Wyszukiwarka, która zna polską odmianę
Polski ma siedem przypadków, a klient nie wpisuje mianownika. Wpisuje „muchy”, „na muchy” albo „przeciw muchom”. Wyszukiwarka, która porównuje same litery, przy „muchami” nie znajdzie produktu opisanego słowem „muchy”.
Wyszukiwarka SerianGroup sprowadza każde słowo do rdzenia. „Mucha”, „muchy” i „muchami” to dla niej jedno słowo, tak samo „szczur” i „szczurów” albo „poidło” i „poideł”, gdzie po drodze znika ruchome „e”. Zna też słowa, którymi mówi hodowca, a nie katalog: „prusak” znajdzie środki na karaluchy, a „krowy” i „jałówka” prowadzą do produktów dla bydła. Działa w trakcie pisania: po trzech literach „kro” już wie, że chodzi o bydło. Wersja angielska ma własne reguły, więc „flies” znajdzie „fly”.
| Klient wpisuje | Wyszukiwarka szuka |
|---|---|
| „mucha”, „muchy”, „muchami” | Jednego słowa: mucha |
| „trutka na muchy” | Trutki i much, bez „na” |
| „prusak” | Także karaluchów |
| „krowy”, „jałówka” | Produktów dla bydła |
| „kro” | Już teraz: krowa, czyli bydło |
| „PM-5R” | Części, które pasują do poidła PM-5R |
Numer ze starego poidła
Hodowca nie zna numerów z katalogu SerianGroup. Zna numer swojego starego poidła.
„PM-5R”
PM-5R to model poidła innego producenta. Weźmy hodowcę, który ma takie w oborze i potrzebuje do niego zaworu. Dlatego wyszukiwarka czyta też wiersze „Pasuje do” i numery referencyjne z danych technicznych każdej części. Po wpisaniu „PM-5R” pokazuje części SerianGroup, które do tego poidła pasują, a przy każdym wyniku dopisek „Pasuje do: PM-5R”, żeby nikt nie musiał zgadywać, skąd się wziął. Dokładne dopasowania idą na górę listy.
A kiedy numer nie pasuje do niczego? Zapytanie z cyfrą wyszukiwarka traktuje jak numer modelu i zamiast pustej strony proponuje „Zapytaj o zamiennik”. Formularz otwiera się z tym numerem już wpisanym w wiadomość. Klient nie zostaje z niczym, a SerianGroup dostaje zapytanie, z którego od razu wiadomo, czego szukać.
44 produkty, sześć kategorii, dwa języki
Katalog ma 44 pozycje w sześciu kategoriach: poidła, części zamienne, insektycydy, rodentycydy, pielęgnacja zwierząt i repelenty. Filtry mówią językiem tego asortymentu: zwierzęta, rodzaj zaworu, wykonanie, zwalczany szkodnik, substancja czynna, postać preparatu. W obrębie jednej grupy filtry się sumują, między grupami zawężają wynik. Poidła mają na liście tabelę porównawczą, bo przy podobnych modelach różnica siedzi w szczegółach. Całość działa po polsku i po angielsku, każda wersja pod własnymi adresami.
Na karcie produktu jest wszystko, o co klient B2B i tak by zapytał:
- Dane techniczne. Przy poidłach to, co odróżnia jeden model od drugiego: zawór, pojemność miski, przyłącze wody, wykończenie. Przy częściach: do czego pasują i numery referencyjne.
- Pozwolenia. Przy środkach biobójczych numer pozwolenia na obrót i numer UFI, widoczne na karcie, a nie schowane w PDF-ie.
- Dokumenty. Karty charakterystyki (SDS) i karty techniczne do pobrania prosto z karty produktu.
- Warianty opakowań. Jeden preparat, kilka pojemności, każda ze swoją ceną i własnym stanem w Shopify.
- Zapytanie B2B. Kto chce wyceny hurtowej zamiast zakupu, pisze z tej samej strony. Formularz sam dopisuje produkt i wybrane opakowanie.
Dlaczego headless, a nie szablon
Bo SerianGroup potrzebował dwóch rzeczy naraz. Pierwsza to katalog ułożony pod ten konkretny asortyment: części dopasowane do cudzych poideł, pozwolenia i karty charakterystyki na wierzchu, wyszukiwarka po polsku, porównanie modeli. Szablon nie udźwignąłby tego bez stosu aplikacji, z których każda dokłada skrypt i spowalnia stronę. Druga to zaplecze, na którym bezpiecznie przyjmuje się pieniądze: kasa, płatności, zamówienia, magazyn. Tego nie opłaca się pisać od zera.
Headless daje jedno i drugie. Wygląd i szybkość są w naszych rękach, bo frontend to nasz kod. Pieniądze, zamówienia i stany obsługuje Shopify, który nie wymaga od nikogo utrzymywania serwera ani łatania sklepu.
Po stronie SerianGroup zostaje panel Shopify: zamówienia, klienci, stany magazynowe i statystyki sprzedaży, na komputerze i w aplikacji na telefon. Zespół nie uczy się systemu napisanego przez agencję, a do obsługi zamówienia nie potrzebuje nas. Stan wpisany w panelu rządzi stroną bez naszego udziału.
Klient widzi SerianGroup od pierwszego ekranu aż po koszyk. Shopify pokazuje się dopiero w kasie, czyli tam, gdzie znana i sprawdzona kasa działa na korzyść sklepu. Jak taka architektura wygląda krok po kroku, co daje i ile kosztuje, opisaliśmy w osobnym wpisie. Więcej ekranów SerianGroup pokazujemy na stronie głównej.
Czytaj dalej
-
Katalog B2B na Shopify, który nie wygląda jak Shopify
Własny katalog z filtrami i wersją PL/EN, a pod spodem płatności, zamówienia i magazyn Shopify. Jak to budujemy i co z tego masz.
B2B i e-commerce
7 min czytania
Twój katalog też może rozumieć klientów.
Zamów darmowy audyt. Przejrzymy Twój asortyment, obecną stronę i to, jak dziś przyjmujesz zamówienia. Potwierdzenie dostaniesz od razu, a Tobiasz z V1 odezwie się z analizą i konkretną wyceną w ciągu kilku godzin w dni robocze, najpóźniej do 10:00 następnego dnia roboczego.