Skip to main content

Descripción general

Cuando ni las superficies nativas de Aftersell (post-compra, checkout, Upcart) ni una integración empaquetada se ajustan a tus necesidades, puedes llamar tú mismo a la API de Strategies desde tu tema de Shopify y mostrar los productos devueltos como prefieras. El patrón es el mismo en todos los casos: construye una carga útil de contexto desde Liquid (para que los atributos de Shopify como el producto actual, el contenido del carrito y los campos del cliente se rellenen en el momento de renderizar), haz 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.
Lo que difiere entre ambos es la forma del contexto de producto: un solo producto en la PDP, un array con todas las líneas de pedido en el carrito.

Qué necesitarás

  1. 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).
  2. El ID de la Strategy. Abre la Strategy que quieres ejecutar en el editor de Strategies de Aftersell y copia su ID.
  3. 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.
Tu clave de API de Strategy reside en el código del tema del lado del cliente, lo que la hace visible para cualquiera que vea el código fuente de la página. Trátala como una credencial pública de la tienda y rótala desde Settings → Product Strategy en Aftersell si alguna vez queda expuesta de una forma que no pretendías.

Contexto PDP: fragmento de sección

Este patrón añade una sección de Shopify a tu página de producto. Cuando la página se renderiza, Liquid incorpora los atributos del producto actual, el carrito y el cliente en la carga útil; luego JavaScript hace un post a la API de Strategies y muestra los productos devueltos en un carrusel de Splide.

Instalación

  1. En tu panel de administración de Shopify, ve a Online Store → Themes, haz clic en en tu tema y selecciona Edit code.
  2. En la carpeta Sections, crea un nuevo archivo llamado aftersell-upsell-carousel.liquid.
  3. Pega el fragmento a continuación en el nuevo archivo y reemplaza YOUR_STRATEGY_API_KEY con la clave de API de Aftersell.
  4. Guarda.
  5. Abre tu plantilla de producto (normalmente templates/product.json o sections/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.
  6. En la configuración de la sección, pega tu Strategy ID.

Qué envía la sección

Para cada vista de la PDP, la carga útil incluye:
  • 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.
La sección no envía parámetros UTM de forma predeterminada. Si quieres segmentación basada en UTM en la PDP, captúralos del lado del cliente y añádelos al objeto session antes del fetch.

El fragmento

Personalización

El schema de la sección expone cuatro ajustes editables por el comerciante: Strategy ID, Heading, CTA Button Label y Max Products to Show. Añade o elimina ajustes en el bloque {% 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

Este patrón es estructuralmente igual al de la PDP, con una diferencia clave: el array de contexto de producto se construye a partir de las líneas de pedido del carrito en lugar del producto que se está viendo actualmente. La Strategy recibe entonces cada artículo que el comprador ha añadido y devuelve recomendaciones basadas en el carrito en su conjunto. La implementación vive donde viva el código de tu carrito personalizado: una sección Liquid que renderiza el cajón del carrito, un bloque personalizado en una tienda headless o una plantilla de tema como 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í:
El resto de la carga útil (cart, customer, session, cartToken) y la llamada 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

La forma de la respuesta es la misma independientemente del contexto que hayas enviado:
El 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

Si la Strategy no devuelve productos (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

Cuando un comprador hace clic en el botón de añadir al carrito del fragmento, la llamada a /cart/add.js adjunta propiedades de línea de pedido al artículo del carrito:
Estas propiedades viajan con la línea de pedido hasta el pedido de Shopify, donde aparecen en el registro de la línea de pedido. Puedes usarlas posteriormente para atribuir ingresos, filtrar pedidos o alimentar herramientas de analítica que leen propiedades de líneas de pedido. Las claves y valores son convenciones, no requisitos: la llamada a la API funciona igual sin importar lo que pongas aquí. Cámbialos para adaptarlos a tu propio modelo de atribución. Por ejemplo:
Las claves de propiedad que empiezan con un guion bajo (_) quedan ocultas en la interfaz del carrito y del checkout, pero aun así se adjuntan al pedido. Usa el prefijo de guion bajo para metadatos solo de atribución que no quieres que vean los compradores.
Aplica el mismo patrón en la implementación de contexto de carrito: cualquier llamada de añadir al carrito que hagas desde un bloque de upsell personalizado puede llevar las propiedades que necesites.

Atribuir a la evaluación

Para vincular un pedido con la evaluación exacta que recomendó el producto —en lugar de solo “vino de una Strategy”—, captura el 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:
Luego inclúyelo en las propiedades de añadir al carrito:
Mantén el doble guion bajo en __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.