Panoramica
POST a /api/public/strategy/evaluate e visualizzi la risposta.
Questa pagina copre due modelli di implementazione:
- Contesto PDP - inserisci una sezione nelle pagine prodotto che chiama l’API con il prodotto attualmente visualizzato e mostra un carosello di raccomandazioni restituite.
- Contesto carrello - visualizza un blocco di upsell all’interno di un carrello personalizzato che chiama l’API con tutte le voci attualmente nel carrello e mostra i prodotti restituiti.
Di cosa avrai bisogno
- La tua Strategy API key. In Aftersell, vai su Settings → Product Strategy e, nella scheda Security Token, copia il tuo token (questa è la tua Strategy API key).
- Lo Strategy ID. Apri la Strategy che vuoi eseguire nell’editor delle Strategy di Aftersell e copia il suo ID.
- Accesso al codice del tema. Dovrai aggiungere una sezione Liquid (PDP) o un blocco (carrello personalizzato) al tuo tema Shopify - Online Store → Themes → … → Edit code.
Contesto PDP: snippet della sezione
Installazione
- Nel tuo pannello di amministrazione Shopify, vai su Online Store → Themes, clicca su … sul tuo tema e seleziona Edit code.
- Nella cartella Sections, crea un nuovo file chiamato
aftersell-upsell-carousel.liquid. - Incolla lo snippet qui sotto nel nuovo file e sostituisci
YOUR_STRATEGY_API_KEYcon l’API key di Aftersell. - Salva.
- Apri il tuo template prodotto (di solito
templates/product.jsonosections/main-product.liquid) e aggiungi la sezione Aftersell Carousel nel punto in cui vuoi che appaia il carosello. Dall’editor del tema puoi anche trascinarla direttamente sulla pagina prodotto. - Nelle impostazioni della sezione, incolla il tuo Strategy ID.
Cosa invia la sezione
- products - un array con un solo elemento contenente il prodotto attualmente visualizzato (productId, variantId, quantity, price, handle, title, vendor, productType, tags, collections, sellingPlan).
- cart - subtotale, numero di articoli e numero di righe del carrello corrente dell’acquirente (omesso se il carrello è vuoto).
- cartToken - in modo che l’API possa collegare questa valutazione alla stessa sessione.
- customer - tag, paese, provincia, lingua, numero di ordini, spesa totale e flag accepts-marketing, ma solo se l’acquirente ha effettuato l’accesso.
- session - codice valuta da
shop.currency.
session prima della fetch.
Lo snippet

Personalizzazione
{% schema %} per esporre più controlli nell’editor del tema.
Il CSS è delimitato sotto nomi di classe .aftersell-* e include un carosello Splide a 4 elementi che passa a 2 elementi a 768px e a 1 elemento a 480px. Modificalo liberamente per adattarlo al tuo tema: nulla di tutto ciò è necessario per il funzionamento della chiamata API.
Contesto carrello: blocco di upsell in un carrello personalizzato
cart.liquid. La forma della chiamata API e la gestione della risposta sono identiche all’esempio della PDP: cambia solo l’array products.
La struttura è questa:
fetch a /api/public/strategy/evaluate rimangono invariati rispetto al modello PDP qui sopra: solo l’array products passa da [productContext] all’array derivato dal carrello.
Cosa succede quando la Strategy restituisce un risultato
evaluationId è un id univoco per questa valutazione. Se lo acquisisci e lo alleghi ai prodotti che visualizzi, puoi attribuire l’ordine risultante esattamente alla raccomandazione che lo ha generato - vedi Attribuzione qui sotto.
Il modo in cui visualizzi l’array products dipende interamente dal codice del tuo tema. Lo snippet PDP qui sopra li mostra come un carosello di schede con selettori di varianti e pulsanti di aggiunta al carrello; un blocco di carrello personalizzato potrebbe visualizzarli come un elenco verticale all’interno del drawer.
Per lo schema completo di richiesta e risposta, consulta il riferimento API Evaluate Strategy.
Quando nessun prodotto viene restituito
products: []), spetta al tuo codice decidere come gestirlo. Lo snippet PDP qui sopra nasconde completamente il carosello. Un blocco di carrello personalizzato potrebbe ripiegare sull’elenco di upsell predefinito del carrello, oppure semplicemente non mostrare nulla.
Per evitare una risposta vuota, configura un Catch all nella Strategy in modo che ci sia sempre un prodotto di riserva da restituire. Consulta la pagina Costruire le Strategy per scoprire come impostare un Catch all.
Suggerimenti per le integrazioni personalizzate
- Costruisci il contesto in Liquid. Liquid viene eseguito al momento del rendering e ha accesso all’intero grafo degli oggetti Shopify: prodotto, carrello, cliente, negozio, richiesta. Usalo per popolare il payload lato server invece di ricorrere a chiamate lato client.
- Tieni l’API key fuori dai repository pubblici. Finirà nel codice del tuo tema, che viene consegnato al browser - e questo va bene. Ma non incollare lo stesso tema in un repository pubblico né condividere il bundle esternamente.
- Usa un Catch all. Le esperienze in vetrina sembrano rotte quando uno slot scompare. Un Catch all con un piccolo set di prodotti sicuri di default mantiene l’interfaccia coerente.
- Metti in cache dove ha senso. La Strategies API fa un leggero caching lato server (
meta.servedFromCache), ma per le PDP ad alto traffico potresti anche voler applicare debounce o memoizzazione alle chiamate lato client (es. non richiamare quando lo stesso prodotto viene renderizzato due volte in una sessione).
Attribuzione
/cart/add.js allega delle line item properties all’articolo del carrello:
Attribuire alla valutazione
evaluationId dalla risposta e allegalo alla voce del carrello sotto la proprietà __as_offer_id. AfterSell legge questa chiave, quindi gli ordini contrassegnati con essa vengono attribuiti alla valutazione specifica nella reportistica.
Nell’handler evaluate(), conserva l’id dalla risposta:
__as_offer_id: è la chiave che AfterSell cerca, e il prefisso con trattino basso la tiene nascosta agli acquirenti. Se evaluationId è assente (per esempio, se non è stato restituito alcun prodotto), ometti la proprietà anziché inviare un valore vuoto.