Przegląd
POST do /api/public/strategy/evaluate i wyrenderuj odpowiedź.
Ta strona opisuje dwa wzorce implementacji:
- Kontekst PDP — umieść sekcję na stronach produktów, która wywołuje API z aktualnie przeglądanym produktem i renderuje karuzelę zwróconych rekomendacji.
- Kontekst koszyka — wyrenderuj blok upsell wewnątrz niestandardowego koszyka, który wywołuje API ze wszystkimi bieżącymi pozycjami koszyka i renderuje zwrócone produkty.
Czego potrzebujesz
- Twój klucz API Strategii. W Aftersell przejdź do Settings → Product Strategy i na karcie Security Token skopiuj swój token (to jest Twój klucz API Strategii).
- ID Strategii. Otwórz Strategię, którą chcesz uruchomić, w edytorze Strategii Aftersell i skopiuj jej ID.
- Dostęp do kodu szablonu. Będziesz dodawać sekcję Liquid (PDP) lub blok (niestandardowy koszyk) do swojego szablonu Shopify — Online Store → Themes → … → Edit code.
Kontekst PDP: snippet sekcji
Instalacja
- W panelu administracyjnym Shopify przejdź do Online Store → Themes, kliknij … przy swoim szablonie i wybierz Edit code.
- W folderze Sections utwórz nowy plik o nazwie
aftersell-upsell-carousel.liquid. - Wklej poniższy snippet do nowego pliku i zastąp
YOUR_STRATEGY_API_KEYkluczem API z Aftersell. - Zapisz.
- Otwórz szablon produktu (zazwyczaj
templates/product.jsonlubsections/main-product.liquid) i dodaj sekcję Aftersell Carousel w miejscu, w którym ma się pojawić karuzela. Z poziomu edytora szablonu możesz też przeciągnąć ją bezpośrednio na stronę produktu. - W ustawieniach sekcji wklej swoje ID Strategii.
Co wysyła sekcja
- products — jednoelementową tablicę zawierającą aktualnie przeglądany produkt (productId, variantId, quantity, price, handle, title, vendor, productType, tags, collections, sellingPlan).
- cart — sumę częściową, liczbę sztuk, liczbę pozycji bieżącego koszyka kupującego (pomijane, jeśli koszyk jest pusty).
- cartToken — dzięki temu API może powiązać tę ocenę z tą samą sesją.
- customer — tagi, kraj, prowincję, ustawienia regionalne, liczbę zamówień, łączne wydatki i flagę zgody na marketing, ale tylko jeśli kupujący jest zalogowany.
- session — kod waluty z
shop.currency.
session przed wywołaniem fetch.
Snippet

Dostosowywanie
{% schema %}, aby udostępnić więcej opcji w edytorze szablonu.
CSS jest ograniczony do klas .aftersell-* i zawiera napędzaną Splide karuzelę 4-elementową, która przechodzi na 2 elementy przy 768px i 1 element przy 480px. Możesz go dowolnie edytować, aby dopasować do swojego szablonu — nic z tego nie jest wymagane do działania wywołania API.
Kontekst koszyka: niestandardowy blok upsell w koszyku
cart.liquid. Kształt wywołania API i obsługa odpowiedzi są identyczne jak w przykładzie PDP — różni się tylko tablica products.
Struktura wygląda tak:
fetch do /api/public/strategy/evaluate pozostają niezmienione względem powyższego wzorca PDP — jedynie tablica products zamienia się z [productContext] na tablicę pochodzącą z koszyka.
Co się dzieje, gdy Strategia zwraca wynik
evaluationId to unikalny identyfikator tej oceny. Jeśli go przechwycisz i dołączysz do renderowanych produktów, możesz przypisać wynikowe zamówienie do dokładnie tej rekomendacji, która je wygenerowała — zobacz sekcję Atrybucja poniżej.
Sposób renderowania tablicy products zależy całkowicie od kodu Twojego szablonu. Powyższy snippet PDP renderuje je jako karuzelę kart z selektorami wariantów i przyciskami dodawania do koszyka; niestandardowy blok koszyka mógłby renderować je jako pionową listę wewnątrz drawera.
Pełny schemat żądania i odpowiedzi znajdziesz w referencji API Evaluate Strategy.
Gdy żaden produkt nie zostanie zwrócony
products: []), sposób obsługi zależy od Twojego kodu. Powyższy snippet PDP całkowicie ukrywa karuzelę. Niestandardowy blok koszyka mógłby wrócić do domyślnej listy upselli koszyka albo po prostu nie renderować nic.
Aby uniknąć pustej odpowiedzi, skonfiguruj w Strategii regułę Catch all, dzięki której zawsze będzie istniał zapasowy produkt do zwrócenia. Zobacz stronę Budowanie Strategii, aby dowiedzieć się, jak skonfigurować Catch all.
Wskazówki dotyczące integracji niestandardowych
- Buduj kontekst w Liquid. Liquid działa w momencie renderowania i ma dostęp do pełnego grafu obiektów Shopify — product, cart, customer, shop, request. Używaj go do wypełniania ładunku po stronie serwera, zamiast sięgać po wywołania po stronie klienta.
- Trzymaj klucz API z dala od publicznych repozytoriów. Trafi on do kodu Twojego szablonu, który jest dostarczany do przeglądarki — to w porządku. Nie wklejaj jednak tego samego szablonu do publicznego repozytorium ani nie udostępniaj paczki na zewnątrz.
- Używaj Catch all. Doświadczenia w witrynie sklepu wyglądają na zepsute, gdy slot znika. Catch all z niewielkim zestawem bezpiecznych produktów domyślnych utrzymuje spójność interfejsu.
- Cache’uj tam, gdzie ma to sens. Strategies API stosuje lekkie cache’owanie po stronie serwera (
meta.servedFromCache), ale na PDP o dużym ruchu warto też debounce’ować lub memoizować wywołania po stronie klienta (np. nie wywoływać ponownie, gdy ten sam produkt jest renderowany dwa razy w jednej sesji).
Atrybucja
/cart/add.js dołącza do pozycji koszyka właściwości pozycji (line item properties):
Atrybucja do konkretnej oceny
evaluationId z odpowiedzi i dołącz go do pozycji pod właściwością __as_offer_id. AfterSell odczytuje ten klucz, więc zamówienia nim oznaczone są przypisywane do konkretnej oceny w raportowaniu.
W handlerze evaluate() zachowaj identyfikator z odpowiedzi:
__as_offer_id — to klucz, którego szuka AfterSell, a prefiks podkreślnika ukrywa go przed kupującymi. Jeśli evaluationId nie istnieje (na przykład nie zwrócono żadnych produktów), pomiń tę właściwość, zamiast wysyłać pustą wartość.