Overzicht
POST deze naar /api/public/strategy/evaluate en render het antwoord.
Deze pagina behandelt twee implementatiepatronen:
- PDP-context - plaats een sectie op productpagina’s die de API aanroept met het momenteel bekeken product en een carrousel van geretourneerde aanbevelingen weergeeft.
- Cart-context - render een upsellblok binnen een custom winkelwagen die de API aanroept met alle huidige regelitems in de winkelwagen en de geretourneerde producten weergeeft.
Wat je nodig hebt
- Je Strategy API-sleutel. Ga in Aftersell naar Settings → Product Strategy en kopieer in de kaart Security Token je token (dit is je Strategy API-sleutel).
- De Strategy-ID. Open de Strategy die je wilt uitvoeren in de Aftersell Strategy-editor en kopieer de ID.
- Toegang tot themacode. Je voegt een Liquid-sectie (PDP) of blok (custom winkelwagen) toe aan je Shopify-thema - Online Store → Themes → … → Edit code.
PDP-context: sectiesnippet
Installeren
- Ga in je Shopify-beheer naar Online Store → Themes, klik op … bij je thema en selecteer Edit code.
- Maak in de map Sections een nieuw bestand aan met de naam
aftersell-upsell-carousel.liquid. - Plak de onderstaande snippet in het nieuwe bestand en vervang
YOUR_STRATEGY_API_KEYdoor de API-sleutel uit Aftersell. - Sla op.
- Open je producttemplate (meestal
templates/product.jsonofsections/main-product.liquid) en voeg de sectie Aftersell Carousel toe waar je de carrousel wilt laten verschijnen. Vanuit de thema-editor kun je deze ook rechtstreeks op de productpagina slepen. - Plak in de instellingen van de sectie je Strategy-ID.
Wat de sectie verstuurt
- products - een array met één element dat het momenteel bekeken product bevat (productId, variantId, quantity, price, handle, title, vendor, productType, tags, collections, sellingPlan).
- cart - subtotaal, aantal items, aantal regels van de huidige winkelwagen van de shopper (weggelaten als de winkelwagen leeg is).
- cartToken - zodat de API deze evaluatie aan dezelfde sessie kan koppelen.
- customer - tags, land, provincie, taalinstelling, aantal bestellingen, totaal besteed en de accepts-marketing-vlag, maar alleen als de shopper is ingelogd.
- session - valutacode uit
shop.currency.
session-object vóór de fetch.
De snippet

Aanpassen
{% schema %}-blok om meer knoppen aan de thema-editor beschikbaar te stellen.
De CSS is gescoped onder .aftersell-*-klassenamen en bevat een door Splide aangedreven carrousel met 4 items, die terugvalt naar 2 items bij 768px en 1 item bij 480px. Pas deze vrij aan om bij je thema te passen - niets ervan is vereist om de API-aanroep te laten werken.
Cart-context: custom cart-upsellblok
cart.liquid. De vorm van de API-aanroep en de responseverwerking zijn identiek aan het PDP-voorbeeld - alleen de products-array verschilt.
De structuur ziet er als volgt uit:
fetch-aanroep naar /api/public/strategy/evaluate zijn ongewijzigd ten opzichte van het PDP-patroon hierboven - alleen de products-array wisselt van [productContext] naar de uit de winkelwagen afgeleide array.
Wat er gebeurt wanneer de Strategy een resultaat geeft
evaluationId is een unieke id voor deze evaluatie. Als je deze vastlegt en koppelt aan de producten die je rendert, kun je de resulterende bestelling terugkoppelen aan de exacte aanbeveling die deze heeft opgeleverd - zie Attributie hieronder.
Hoe je de products-array rendert, is volledig aan je themacode. De PDP-snippet hierboven rendert ze als een carrousel van kaarten met variantkiezers en toevoegen-aan-winkelwagen-knoppen; een custom cart-blok zou ze als een verticale lijst binnen de drawer kunnen renderen.
Zie voor het volledige request- en responseschema de Evaluate Strategy API-referentie.
Wanneer er geen product wordt geretourneerd
products: []), is het aan je code hoe je hiermee omgaat. De PDP-snippet hierboven verbergt de carrousel volledig. Een custom cart-blok zou kunnen terugvallen op de standaard upselllijst van de winkelwagen, of simpelweg niets renderen.
Om een lege response te voorkomen, configureer je een Catch all in de Strategy, zodat er altijd een terugvalproduct is om te retourneren. Zie de pagina Strategies bouwen voor het instellen van een Catch all.
Tips voor custom integraties
- Bouw de context in Liquid. Liquid draait op het moment van renderen en heeft toegang tot de volledige Shopify-objectgraaf - product, winkelwagen, klant, winkel, request. Gebruik het om de payload server-side te vullen in plaats van naar client-side aanroepen te grijpen.
- Houd de API-sleutel uit publieke repositories. De sleutel komt in je themacode terecht, die naar de browser wordt verzonden - dat is prima. Maar plak hetzelfde thema niet in een publieke repository en deel de bundel niet extern.
- Gebruik een Catch all. Storefront-ervaringen ogen kapot wanneer een slot verdwijnt. Een Catch all met een kleine set veilige standaardproducten houdt de UI consistent.
- Cache waar het zinvol is. De Strategies API doet lichte caching server-side (
meta.servedFromCache), maar voor PDP’s met veel verkeer wil je aanroepen mogelijk ook debounce of memoizeren op de client (bijv. niet opnieuw aanroepen wanneer hetzelfde product twee keer in een sessie wordt gerenderd).
Attributie
/cart/add.js-aanroep line item properties toe aan het winkelwagenitem:
Terugkoppelen naar de evaluatie
evaluationId uit de response vast en koppel je deze aan het regelitem onder de property __as_offer_id. AfterSell leest deze sleutel, zodat bestellingen die ermee zijn getagd in de rapportage aan de specifieke evaluatie worden toegeschreven.
Houd in de evaluate()-handler de id uit de response vast:
__as_offer_id - het is de sleutel waar AfterSell naar zoekt, en de underscore-prefix houdt deze verborgen voor shoppers. Als evaluationId ontbreekt (bijvoorbeeld omdat er geen producten zijn geretourneerd), sla de property dan over in plaats van een lege waarde te versturen.