Descripción general
POST a /api/public/strategy/evaluate y muestra la respuesta.
Esta página cubre dos patrones de implementación:
- Contexto PDP: coloca una sección en las páginas de producto que llama a la API con el producto que se está viendo actualmente y muestra un carrusel con las recomendaciones devueltas.
- Contexto de carrito: muestra un bloque de upsell dentro de un carrito personalizado que llama a la API con todas las líneas de pedido actuales del carrito y muestra los productos devueltos.
Qué necesitarás
- Tu clave de API de Strategy. En Aftersell, ve a Settings → Product Strategy y, en la tarjeta Security Token, copia tu token (esta es tu clave de API de Strategy).
- El ID de la Strategy. Abre la Strategy que quieres ejecutar en el editor de Strategies de Aftersell y copia su ID.
- Acceso al código del tema. Añadirás una sección Liquid (PDP) o un bloque (carrito personalizado) a tu tema de Shopify: Online Store → Themes → … → Edit code.
Contexto PDP: fragmento de sección
Instalación
- En tu panel de administración de Shopify, ve a Online Store → Themes, haz clic en … en tu tema y selecciona Edit code.
- En la carpeta Sections, crea un nuevo archivo llamado
aftersell-upsell-carousel.liquid. - Pega el fragmento a continuación en el nuevo archivo y reemplaza
YOUR_STRATEGY_API_KEYcon la clave de API de Aftersell. - Guarda.
- Abre tu plantilla de producto (normalmente
templates/product.jsonosections/main-product.liquid) y añade la sección Aftersell Carousel donde quieras que aparezca el carrusel. Desde el editor de temas, también puedes arrastrarla directamente a la página de producto. - En la configuración de la sección, pega tu Strategy ID.
Qué envía la sección
- products: un array de un solo elemento que contiene el producto que se está viendo actualmente (productId, variantId, quantity, price, handle, title, vendor, productType, tags, collections, sellingPlan).
- cart: subtotal, número de artículos y número de líneas del carrito actual del comprador (se omite si el carrito está vacío).
- cartToken: para que la API pueda vincular esta evaluación a la misma sesión.
- customer: etiquetas, país, provincia, configuración regional, número de pedidos, gasto total y el indicador de aceptación de marketing, pero solo si el comprador ha iniciado sesión.
- session: código de moneda de
shop.currency.
session antes del fetch.
El fragmento

Personalización
{% schema %} para exponer más opciones en el editor de temas.
El CSS está delimitado bajo nombres de clase .aftersell-* e incluye un carrusel de 4 elementos impulsado por Splide que pasa a 2 elementos a 768px y a 1 elemento a 480px. Edítalo libremente para que coincida con tu tema: nada de esto es necesario para que la llamada a la API funcione.
Contexto de carrito: bloque de upsell de carrito personalizado
cart.liquid. La forma de la llamada a la API y el manejo de la respuesta son idénticos al ejemplo de la PDP; solo difiere el array products.
La estructura se ve así:
fetch a /api/public/strategy/evaluate no cambian respecto al patrón de la PDP anterior; solo el array products cambia de [productContext] al array derivado del carrito.
Qué pasa cuando la Strategy devuelve un resultado
evaluationId es un id único de esta evaluación. Si lo capturas y lo adjuntas a los productos que muestras, puedes atribuir el pedido resultante a la recomendación exacta que lo produjo: consulta Atribución más abajo.
La forma en que muestras el array products depende por completo del código de tu tema. El fragmento de la PDP anterior los muestra como un carrusel de tarjetas con selectores de variantes y botones de añadir al carrito; un bloque de carrito personalizado podría mostrarlos como una lista vertical dentro del cajón.
Para el esquema completo de solicitud y respuesta, consulta la referencia de la API Evaluate Strategy.
Cuando no se devuelve ningún producto
products: []), depende de tu código cómo manejarlo. El fragmento de la PDP anterior oculta el carrusel por completo. Un bloque de carrito personalizado podría recurrir a la lista de upsell predeterminada del carrito, o simplemente no mostrar nada.
Para evitar una respuesta vacía, configura un Catch all en la Strategy de modo que siempre haya un producto de respaldo para devolver. Consulta la página Crear Strategies para saber cómo configurar un Catch all.
Consejos para integraciones personalizadas
- Construye el contexto en Liquid. Liquid se ejecuta en el momento de renderizar y tiene acceso al grafo completo de objetos de Shopify: producto, carrito, cliente, tienda, solicitud. Úsalo para rellenar la carga útil del lado del servidor en lugar de recurrir a llamadas del lado del cliente.
- Mantén la clave de API fuera de repositorios públicos. Terminará en el código de tu tema, que se envía al navegador; eso está bien. Pero no pegues el mismo tema en un repositorio público ni compartas el paquete externamente.
- Usa un Catch all. Las experiencias de la tienda se ven rotas cuando un espacio desaparece. Un Catch all con un pequeño conjunto de valores predeterminados seguros mantiene la interfaz consistente.
- Usa caché donde tenga sentido. La API de Strategies hace un caché ligero del lado del servidor (
meta.servedFromCache), pero para PDP de alto tráfico quizás también quieras aplicar debounce o memoizar las llamadas en el cliente (p. ej., no volver a llamar cuando el mismo producto se renderiza dos veces en una sesión).
Atribución
/cart/add.js adjunta propiedades de línea de pedido al artículo del carrito:
Atribuir a la evaluación
evaluationId de la respuesta y adjúntalo a la línea de pedido bajo la propiedad __as_offer_id. AfterSell lee esta clave, de modo que los pedidos etiquetados con ella se atribuyen a la evaluación específica en los informes.
En el controlador evaluate(), conserva el id de la respuesta:
__as_offer_id: es la clave que AfterSell busca, y el prefijo de guion bajo la mantiene oculta para los compradores. Si evaluationId no está presente (por ejemplo, no se devolvieron productos), omite la propiedad en lugar de enviar un valor vacío.