Jak zwiększyliśmy liczbę produktów dodanych do koszyka o 2,5× i wydłużyliśmy czas sesji o ponad 80%, dzięki dedykowanemu asystentowi zakupowemu?
Poprawiliśmy doświadczenie klienta w najtrudniejszym momencie zakupu – podczas wyboru odpowiedniego produktu, omijając równocześnie wszystkie ograniczenia platformy Shopify.
Setki parametrów, kilkadziesiąt zegarków sportowych i użytkownik z dylematem - który z nich wybrać? Z perspektywy właściciela e‑sklepu - platforma SaaS z ograniczeniami bez możliwości budowy niestandardowych funkcjonalności.
Zaawansowany asystent zakupowy, działający w ramach istniejącego sklepu na Shopify, z logiką dopasowywania produktów do preferencji użytkownika wyniesioną poza platformę.
Branża Klienta i punkt wyjścia
MoveMore to sklep internetowy z szeroką ofertą sprzętu sportowego, akcesoriów fitness i nowoczesnych urządzeń dla aktywnych.
Jedną z głównych specjalizacji sklepu są zegarki sportowe Garmin, wyróżniające się zaawansowanymi funkcjami, parametrami i właściwościami. W ofercie znajdziemy kilkanaście serii – Fenix, Forerunner, Instinct, Epix, Venu czy Vivoactive, każda z nich dedykowana jest innym aktywnościom i typom użytkowników – biegaczom, kolarzom, triathlonistom i miłośnikom trekkingu. Każda seria podzielona jest na kilka modeli, które różnią się między sobą rozmiarem koperty, typem wyświetlacza, technologią GPS, czujnikiem tętna, pojemnością baterii czy możliwością ładowania solarnego. Tylko w ramach serii Fenix 8 dostępne jest kilkanaście wariantów.
Dla osób, które znają ofertę Garmina, szeroki asortyment produktów jest dużą zaletą. Jednak dla osób, które planują zakup swojego pierwszego zegarka sportowego i nie wiedzą, jaka seria i model będzie najlepszy w ich przypadku, może to być skuteczna bariera zakupowa. I zwykłe filtrowanie produktów tutaj nie wystarczy.
Klient potrzebował narzędzia, które rozumie kontekst jego aktywności i na tej podstawie poukłada produkty od najlepiej do najgorzej dopasowanych – nie filtruje, ale rekomenduje. Właśnie dlatego powstała potrzeba zbudowania asystenta zakupowego.
Ograniczenia platformy
Shopify, platforma, na której działa MoveMore, ma własny ekosystem aplikacji, który doskonale sprawdza się w przypadku 90% sklepów. Ale jako platforma SaaS nie daje pełnej swobody programistycznej.
Brak własnej logiki serwerowej
Shopify nie pozwala uruchamiać własnego kodu po stronie serwera. Nie ma gdzie zbudować silnika scoringu.
Brak dostępu do bazy danych
Platforma nie umożliwia tworzenia własnych struktur danych ani wykonywania złożonych zapytań na specyfikacjach produktowych.
Brak synchronizacji z zewnętrznymi źródłami
Shopify nie pobiera automatycznie danych od producenta. Każda zmiana w katalogu wymagałaby ręcznej aktualizacji.
Brak możliwości zbiorczego odpytywania produktów
Metapola dostępne są wyłącznie dla pojedynczego produktu. Porównanie kilkudziesięciu modeli oznacza tyle samo osobnych zapytań – i proporcjonalny wzrost czasu ładowania.
Pierwsze podejście – wykorzystanie gotowych rozwiązań
Sprawdziliśmy kilkanaście aplikacji typu porównywarka i konfigurator z Shopify App Store. Przeanalizowaliśmy je pod kątem jednego konkretnego wymagania: czy potrafią ocenić stopień dopasowania produktu do profilu użytkownika? Żadna nie potrafiła, z trzech powodów:
Podwójna baza danych do utrzymania
Większość aplikacji przechowuje specyfikacje we własnej bazie danych, działającej niezależnie od bazy sklepu. Oznacza to podwójne wprowadzanie parametrów i danych: raz w sklepie, raz w aplikacji.
Brak oceny dopasowania
Aplikacje porównywarki weryfikują czy dana funkcja występuje na zasadzie zero‑jedynkowej. Nie potrafią ocenić, jak bardzo dany produkt pasuje do potrzeb konkretnego użytkownika.
Problem z kolejnością wyników
Gdy filtr już działa, produkty sortowane są według ceny albo popularności. Żadna z testowanych aplikacji nie potrafiła ustawiać wyników według trafności dopasowania do profilu użytkownika.
„Czy ten zegarek to potrafi?"
Sprawdza, czy dana cecha występuje w specyfikacji. Zero‑jedynkowo.
„Który zegarek pasuje do mnie najlepiej?"
Ocenia, jak dobrze cały profil produktu odpowiada na potrzeby użytkownika.
Gotowe narzędzia oferowane przez platformę potrafią zbudować porównywarkę z lepszym zestawem filtrowania. My potrzebowaliśmy czegoś zupełnie innego – narzędzia, które przedstawi klientowi produkty najlepiej dopasowane do jego potrzeb i ułatwi mu podjęcie decyzji zakupowej, dlatego zbudowaliśmy własną architekturę.
Rozwiązanie
Sklep zachowuje swoją podstawową funkcjonalność – pokazuje produkty, renderuje karty, obsługuje koszyk. Jednak logika dopasowania produktów ląduje poza nim, w środowisku bez ograniczeń, jakie narzuca platforma. Między nimi biegnie kanał, którym przepływają tylko pytania i odpowiedzi.
Obydwa te obiegi działają niezależnie. Ciężka praca – normalizacja danych, aktualizacja bazy, przeliczenie specyfikacji – dzieje się z wyprzedzeniem, zanim użytkownik w ogóle otworzy asystenta. W momencie interakcji baza ma już wszystko gotowe, zostaje tylko zapytanie i natychmiastowa odpowiedź.
Jak krok po kroku działa asystent?
Każdy rozwiązuje jeden konkretny problem z listy ograniczeń, w kolejności, w jakiej dane przez nie przepływają.
Pobranie i normalizacja specjalizacji
Garmin opisuje te same funkcje na kilka sposobów – raz „wodoodporny”, raz „10 ATM”, raz „nadaje się do nurkowania”. Dla człowieka to oczywiste. Dla algorytmu to trzy różne wartości. Normalizacja sprowadza je do jednego formatu. Pozwala uporządkować dane, na których można potem operować programistycznie.
Skondensowany JSON w metapolu
W metapolu produktu w Shopify zapisujemy skondensowaną specyfikację w formacie JSON. Nie po to, żeby na niej „liczyć” dopasowanie – od tego mamy zewnętrzną bazę. Ale po to, żeby każdy produkt miał jednoznaczny identyfikator i powiązanie z danymi leżącymi poza Shopify.
Dzięki temu zamiast dziesiątek oddzielnych pól, mamy jedno – ze strukturą, którą potrafimy odczytać programistycznie. To pozwoliło zmieścić się w limicie i jednocześnie zachować pełną elastyczność.
Aktualizacja danych – Webhooki i baza Cloudflare D1
Zarejestrowaliśmy webhooki Shopify na trzy zdarzenia: dodanie, edycję i usunięcie produktu. Gdy w sklepie coś się zmienia – pojawia się nowy model, zmienia się cena lub jakiś produkt zostaje wycofany, zdarzenie w sklepie automatycznie aktualizuje dane w silniku rekomendacji. Shopify sam wysyła sygnał, a system sam na niego reaguje.
Zweryfikowane dane lądują w Cloudflare D1, bezserwerowej bazie SQL kompatybilnej z SQLite. I to jest cała pointa: na D1 odpytujemy wszystkie produkty naraz, dowolnym zapytaniem SQL, czyli robimy dokładnie to, na co Shopify nie pozwalał. Otwarty endpoint przyjmie żądanie od każdego, kto zna adres. Dlatego każdy payload weryfikujemy podpisem HMAC‑SHA256 z nagłówka X‑Shopify‑Hmac‑Sha256. Zgadza się – zapisujemy. Nie zgadza się – odrzucamy.
Dopasowanie produktów – Cloudflare Workers i scoring
Zapytanie od użytkownika trafia do zewnętrznego mikroserwisu, który liczy dopasowanie dla każdego produktu w bazie. Aktywność główna waży więcej niż dodatkowe – biegacz dostaje inne wyniki niż triatlonista, nawet przy tych samych filtrach. W odpowiedzi wraca lista dopasowanych produktów od najlepiej do najgorzej dopasowanego.
Właściciel sklepu może dodatkowo promować wybrane modele – nowości, produkty sezonowe, pozycje z wyższą marżą, wpływając na ich widoczność w wynikach. Nie ustawia jednak kolejności ręcznie, scoring zawsze wynika z logiki dopasowania.
Endpoint na Cloudflare Workers uruchamia kod blisko użytkownika, w setkach lokalizacji. Frontend pyta o to co wybrał klient, które produkty pasują i jak bardzo? Worker odpytuje bazę D1, liczy scoring i odsyła wyłącznie identyfikatory produktów wraz z wynikami.
Renderowanie wyników na sklepie
Lista zegarków aktualizuje się po każdej zmianie ustawień, bez przeładowania strony. Użytkownik widzi konfigurator oraz gotowe wyniki.
Szkielet renderuje Liquid, ale cały proces dzieje się w przeglądarce: JavaScript pobiera wyniki z mikroserwisu i przestawia listę po każdej zmianie ustawień, bez przeładowania.
Zaznacz „nurkowanie”, odznacz „rozmowy przez Bluetooth”, dorzuć „muzyka bez telefonu” – lista zegarków układa się na nowo w ułamku sekundy. Zobacz na żywo: movemore.pl/pages/asystent‑zakupowy.
Efekty
Dane z Google Analytics — sesja z asystentem kontra przeciętna sesja w całym sklepie.
Co zyskał Klient?
Sklep z asystentem zakupowym to nie tylko lepsze doświadczenie dla klienta sklepu, ale konkretna przewaga biznesowa. Klient, który dostaje rekomendację skrojoną pod jego potrzeby, spędza więcej czasu na stronie, chętniej dodaje produkty do koszyka i, co równie ważne, zapamiętuje sklep jako miejsce, które mu pomogło. To przekłada się nie tylko na jednorazową transakcję, ale na wyższe prawdopodobieństwo powrotu przy kolejnym zakupie.
Asystent zakupowy to nie tylko narzędzie sprzedażowe, ale również wiarygodne źródło danych o klientach. Każda interakcja z asystentem pokazuje, czego klienci faktycznie szukają – jakie aktywności wybierają najczęściej, jakim budżetem operują, i które funkcje są dla nich priorytetem. Na tej podstawie można podejmować konkretne decyzje, które produkty mocniej promować i jak planować asortyment.
Prowadzisz sklep internetowy na Shopify i chcesz ułatwić swoim klientom wybór odpowiedniego produktu? Możesz wdrożyć własnego asystenta zakupowego u siebie.
Stack technologiczny
Shopify
Sklep, baza produktowa, panel admina i webhooki.
Liquid
Silnik szablonów renderujący szkielet strony i karty produktów.
JavaScript (frontend)
Pobieranie wyników i przebudowa listy bez przeładowania strony.
Cloudflare Workers
Bezserwerowy mikroserwis liczący scoring blisko użytkownika.
Cloudflare D1
Baza SQL kompatybilna z SQLite – odpytujemy wszystkie produkty naraz.
Webhooki + HMAC‑SHA256
Synchronizacja danych ze sklepu do bazy, z weryfikacją autentyczności żądań.
Szukasz rzetelnego partnera do rozwoju Twojego sklepu na Shopify?
Zespół projektowy