
Zdjęcie: Luke Heibert na Unsplash
Większość sklepów, z którymi rozmawiamy, nie planowała sprzedawać w trzech miejscach. Tak po prostu wyszło. Najpierw był Shopify, potem strona na WooCommerce dla drugiej marki, a potem marketplace albo portal B2B, który we wtorki przysyła mailem arkusz kalkulacyjny.
Każde z tych miejsc ma własną listę zamówień. Każde ma własne wyobrażenie o tym, czym jest zamówienie. A osoba, która pakuje, musi mieć wszystkie trzy w głowie.
Czym jest kanał sprzedaży
W Zippendo każde zamówienie trafia przez kanał sprzedaży, a kanał to połączenie z jednym systemem źródłowym. Są cztery rodzaje:
- Shopify. Instalujesz aplikację, a zamówienia trafiają do nas w chwili ich złożenia. Realizacje i numery przesyłek wędrują w drugą stronę.
- WooCommerce. To samo przez naszą wtyczkę, plus stawki na żywo i punkty odbioru w koszyku.
- Własny. Twój własny sklep internetowy, ERP albo pośrednik do marketplace wysyła nam zamówienia przez podpisany webhook.
- Ręczny. Bez żadnego systemu źródłowego. Zamówienia, które wpisujesz samodzielnie, albo te, które importer utworzył podczas przenosin z innego systemu.
Niezależnie od rodzaju, gdy zamówienie dociera do części wysyłkowej, wygląda tak samo. Na tym polega cały sens tej abstrakcji.
Własny kanał, bo wszyscy o niego pytają
Jeśli nie mamy integracji z Twoim systemem, dostajesz kanał z własnym sekretem do podpisywania i adresem URL do przyjmowania danych. Twój system wysyła zamówienie, podpisuje treść żądania za pomocą HMAC-SHA256 i ustawia nagłówek tematu: created, updated lub cancelled.
Weryfikacja działa w trybie fail-closed. Brak sekretu, brak podpisu albo niezgodny podpis - i dostajesz 401, zamiast tego, żebyśmy zgadywali, o co Ci chodziło.
Najważniejsze pole to externalId, czyli Twój własny identyfikator zamówienia. Na nim opieramy klucz. Wyślij to samo zamówienie dwa razy, a drugie zaktualizuje pierwsze, zamiast tworzyć bliźniaka. Więc kiedy Twoja pętla ponawiania odpali trzy razy o drugiej w nocy, bo nasza odpowiedź przyszła z opóźnieniem, i tak skończysz z jednym zamówieniem.
Jest też endpoint REST, jeśli wysyłanie webhooków jest po Twojej stronie niewygodne. Te same zasady, tyle że zduplikowany externalId dostaje 409 zamiast aktualizacji, bo tam prosisz o utworzenie czegoś, a nie o synchronizację.
Gdzie kanały przestają mieć znaczenie
Gdy zamówienia już są w systemie, kanał to głównie oznaczenie. Reguły wysyłki nie przejmują się tym, skąd przyszło zamówienie, chyba że im to każesz. Napisz regułę raz - ta waga do tego przewoźnika, ten kraj do punktu odbioru - i obejmie wszystkie kanały.
Kanał ma jeszcze znaczenie w dwóch miejscach. Realizacja wraca do systemu, z którego przyszło zamówienie, więc Shopify dostaje swoją realizację, a Woo swój numer przesyłki. A jeśli korzystasz z Marek, kanał należy dokładnie do jednej marki - dzięki temu drugi sklep ma własną nazwę na liście pakowania bez potrzeby zakładania drugiego konta.
Część, która naprawdę irytuje
Statusy zamówień nie znaczą tego samego na każdej platformie i żadne mapowanie nie naprawi tego całkowicie. My po prostu nie pozwalamy statusowi się cofnąć: jeśli przesyłka osiągnęła już późniejszy stan, spóźniona aktualizacja nie może jej cofnąć. To zapobiega najgorszemu. Nie sprawia jednak, że trzy platformy zgodzą się, co oznacza „w realizacji”, i przestaliśmy udawać, że to możliwe.
Jeśli prowadzisz więcej niż jeden sklep w więcej niż jednej karcie przeglądarki, ta część Zippendo powstała dla Ciebie. Połącz drugi kanał i sprawdź, czy przy stanowisku pakowania ktoś w ogóle zauważy różnicę.