Visão geral
POST para /api/public/strategy/evaluate e renderize a resposta.
Esta página cobre dois padrões de implementação:
- Contexto de PDP - adicione uma seção às páginas de produto que chama a API com o produto visualizado no momento e renderiza um carrossel com as recomendações retornadas.
- Contexto de carrinho - renderize um bloco de upsell dentro de um carrinho personalizado que chama a API com todos os itens de linha atuais do carrinho e renderiza os produtos retornados.
O que você vai precisar
- Sua chave de API da Strategy. No Aftersell, vá em Settings → Product Strategy e, no card Security Token, copie seu token (essa é a sua chave de API da Strategy).
- O ID da Strategy. Abra a Strategy que você quer executar no editor de Strategy do Aftersell e copie o ID dela.
- Acesso ao código do tema. Você adicionará uma seção Liquid (PDP) ou um bloco (carrinho personalizado) ao seu tema da Shopify - Online Store → Themes → … → Edit code.
Contexto de PDP: snippet de seção
Instalando
- No seu admin da Shopify, vá em Online Store → Themes, clique em … no seu tema e selecione Edit code.
- Na pasta Sections, crie um novo arquivo chamado
aftersell-upsell-carousel.liquid. - Cole o snippet abaixo no novo arquivo e substitua
YOUR_STRATEGY_API_KEYpela chave de API do Aftersell. - Salve.
- Abra o template do seu produto (normalmente
templates/product.jsonousections/main-product.liquid) e adicione a seção Aftersell Carousel onde você quer que o carrossel apareça. Pelo editor de tema, você também pode arrastá-la diretamente para a página de produto. - Nas configurações da seção, cole o seu Strategy ID.
O que a seção envia
- products - um array de um único elemento contendo o produto visualizado no momento (productId, variantId, quantity, price, handle, title, vendor, productType, tags, collections, sellingPlan).
- cart - subtotal, contagem de itens e contagem de linhas do carrinho atual do comprador (omitido se o carrinho estiver vazio).
- cartToken - para que a API possa vincular essa avaliação à mesma sessão.
- customer - tags, país, estado, localidade, contagem de pedidos, total gasto e o indicador aceita-marketing, mas apenas se o comprador estiver logado.
- session - código de moeda de
shop.currency.
session antes do fetch.
O snippet

Personalizando
{% schema %} para expor mais opções ao editor de tema.
O CSS está limitado a nomes de classe .aftersell-* e inclui um carrossel de 4 itens controlado pelo Splide que passa para 2 itens em 768px e 1 item em 480px. Edite-o livremente para combinar com o seu tema - nada dele é necessário para a chamada de API funcionar.
Contexto de carrinho: bloco de upsell de carrinho personalizado
cart.liquid. O formato da chamada de API e o tratamento da resposta são idênticos ao exemplo da PDP - apenas o array products é diferente.
A estrutura fica assim:
fetch para /api/public/strategy/evaluate permanecem inalterados em relação ao padrão da PDP acima - apenas o array products muda de [productContext] para o array derivado do carrinho.
O que acontece quando a Strategy retorna
evaluationId é um id único para essa avaliação. Se você capturá-lo e anexá-lo aos produtos que renderiza, poderá atribuir o pedido resultante à recomendação exata que o gerou - veja Atribuição abaixo.
Como você renderiza o array products fica totalmente a cargo do código do seu tema. O snippet da PDP acima os renderiza como um carrossel de cards com seletores de variante e botões de adicionar ao carrinho; um bloco de carrinho personalizado poderia renderizá-los como uma lista vertical dentro do drawer.
Para o schema completo de requisição e resposta, consulte a referência da API Evaluate Strategy.
Quando nenhum produto é retornado
products: []), cabe ao seu código decidir como lidar com isso. O snippet da PDP acima oculta o carrossel por completo. Um bloco de carrinho personalizado poderia recorrer à lista de upsell padrão do carrinho, ou simplesmente não renderizar nada.
Para evitar uma resposta vazia, configure um Catch all na Strategy para que sempre haja um produto de fallback para retornar. Consulte a página Criando Strategies para saber como configurar um Catch all.
Dicas para integrações personalizadas
- Monte o contexto no Liquid. O Liquid é executado no momento da renderização e tem acesso ao grafo completo de objetos da Shopify - product, cart, customer, shop, request. Use-o para preencher o payload no lado do servidor em vez de recorrer a chamadas do lado do cliente.
- Mantenha a chave de API fora de repositórios públicos. Ela vai acabar no código do seu tema, que é enviado ao navegador - isso não é um problema. Mas não cole o mesmo tema em um repositório público nem compartilhe o bundle externamente.
- Use um Catch all. Experiências na vitrine parecem quebradas quando um slot desaparece. Um Catch all com um pequeno conjunto de padrões seguros mantém a interface consistente.
- Faça cache onde fizer sentido. A API de Strategies faz um cache leve no lado do servidor (
meta.servedFromCache), mas, para PDPs de alto tráfego, você também pode querer aplicar debounce ou memoizar chamadas no cliente (por exemplo, não chamar novamente quando o mesmo produto é renderizado duas vezes em uma sessão).
Atribuição
/cart/add.js anexa propriedades de item de linha ao item do carrinho:
Atribuindo de volta à avaliação
evaluationId da resposta e anexe-o ao item de linha na propriedade __as_offer_id. O AfterSell lê essa chave, então pedidos marcados com ela são atribuídos à avaliação específica nos relatórios.
No handler evaluate(), guarde o id da resposta:
__as_offer_id - é a chave que o AfterSell procura, e o prefixo de sublinhado a mantém oculta dos compradores. Se o evaluationId estiver ausente (por exemplo, se nenhum produto foi retornado), omita a propriedade em vez de enviar um valor vazio.