Skip to main content

Przegląd

Gdy ani natywne powierzchnie Aftersell (post-purchase, checkout, Upcart), ani gotowa integracja nie pasują, możesz samodzielnie wywoływać Strategies API ze swojego szablonu Shopify i renderować zwrócone produkty w dowolny sposób. Wzorzec jest zawsze taki sam: zbuduj ładunek kontekstu z Liquid (dzięki temu atrybuty Shopify, takie jak bieżący produkt, zawartość koszyka i pola klienta, są uzupełniane w momencie renderowania), wyślij go metodą 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.
Tym, co różni oba wzorce, jest kształt kontekstu produktu: pojedynczy produkt na PDP, tablica wszystkich pozycji w koszyku.

Czego potrzebujesz

  1. 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).
  2. ID Strategii. Otwórz Strategię, którą chcesz uruchomić, w edytorze Strategii Aftersell i skopiuj jej ID.
  3. Dostęp do kodu szablonu. Będziesz dodawać sekcję Liquid (PDP) lub blok (niestandardowy koszyk) do swojego szablonu Shopify — Online Store → Themes → … → Edit code.
Twój klucz API Strategii znajduje się w kodzie szablonu po stronie klienta, co sprawia, że jest widoczny dla każdego, kto przegląda źródło strony. Traktuj go jak publiczne dane uwierzytelniające witryny sklepu i zrotuj go w Aftersell w Settings → Product Strategy, jeśli kiedykolwiek zostanie ujawniony w sposób, którego nie planowałeś.

Kontekst PDP: snippet sekcji

Ten wzorzec dodaje sekcję Shopify do Twojej strony produktu. Podczas renderowania strony Liquid osadza w ładunku atrybuty bieżącego produktu, koszyka i klienta, a następnie JavaScript wysyła żądanie do Strategies API i renderuje zwrócone produkty w karuzeli Splide.

Instalacja

  1. W panelu administracyjnym Shopify przejdź do Online Store → Themes, kliknij przy swoim szablonie i wybierz Edit code.
  2. W folderze Sections utwórz nowy plik o nazwie aftersell-upsell-carousel.liquid.
  3. Wklej poniższy snippet do nowego pliku i zastąp YOUR_STRATEGY_API_KEY kluczem API z Aftersell.
  4. Zapisz.
  5. Otwórz szablon produktu (zazwyczaj templates/product.json lub sections/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.
  6. W ustawieniach sekcji wklej swoje ID Strategii.

Co wysyła sekcja

Dla każdego wyświetlenia PDP ładunek zawiera:
  • 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.
Sekcja domyślnie nie wysyła parametrów UTM. Jeśli chcesz targetowania opartego na UTM na PDP, przechwyć je po stronie klienta i dodaj do obiektu session przed wywołaniem fetch.

Snippet

Karuzela produktów zasilana Strategią wyrenderowana na stronie produktu Shopify

Dostosowywanie

Schema sekcji udostępnia cztery ustawienia edytowalne przez sprzedawcę: Strategy ID, Heading, CTA Button Label i Max Products to Show. Dodawaj lub usuwaj ustawienia w bloku {% 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

Ten wzorzec jest strukturalnie taki sam jak wzorzec PDP, z jedną kluczową różnicą: tablica kontekstu produktów jest budowana z pozycji koszyka zamiast z aktualnie przeglądanego produktu. Strategia otrzymuje wtedy każdy produkt dodany przez kupującego i zwraca rekomendacje na podstawie koszyka jako całości. Implementacja znajduje się tam, gdzie znajduje się kod Twojego niestandardowego koszyka — sekcja Liquid renderująca cart drawer, niestandardowy blok w headlessowej witrynie sklepu lub szablon taki jak 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:
Reszta ładunku (cart, customer, session, cartToken) oraz wywołanie 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

Kształt odpowiedzi jest taki sam niezależnie od tego, który kontekst został wysłany:
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

Jeśli Strategia nie zwraca produktów (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

Gdy kupujący kliknie przycisk dodawania do koszyka w snippecie, wywołanie /cart/add.js dołącza do pozycji koszyka właściwości pozycji (line item properties):
Te właściwości podróżują z pozycją aż do zamówienia Shopify, gdzie pojawiają się w rekordzie pozycji. Możesz ich używać dalej do atrybucji przychodu, filtrowania zamówień lub zasilania narzędzi analitycznych, które odczytują właściwości pozycji. Klucze i wartości to konwencje, a nie wymagania — wywołanie API działa tak samo niezależnie od tego, co tu umieścisz. Zmień je, aby pasowały do Twojego własnego modelu atrybucji. Na przykład:
Klucze właściwości zaczynające się od podkreślnika (_) są ukryte w interfejsie koszyka i checkoutu, ale nadal są dołączane do zamówienia. Używaj prefiksu podkreślnika dla metadanych przeznaczonych wyłącznie do atrybucji, których kupujący nie mają widzieć.
Zastosuj ten sam wzorzec w implementacji z kontekstem koszyka — każde wywołanie dodania do koszyka z niestandardowego bloku upsell może przenosić dowolne właściwości, jakich potrzebujesz.

Atrybucja do konkretnej oceny

Aby powiązać zamówienie z dokładną oceną, która zarekomendowała produkt — a nie tylko z faktem, że „pochodzi ze Strategii” — przechwyć 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:
Następnie uwzględnij go we właściwościach dodawania do koszyka:
Zachowaj podwójny podkreślnik w __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ść.