> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aftersell.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Referência de regras de Strategies

> O catálogo completo de gatilhos, operadores, ações, filtros e mecânicas de avaliação de Strategies por trás do editor de Strategies no app.

Esta página é o catálogo completo por trás do editor de Strategies: todos os gatilhos e os operadores que cada um aceita, todas as ações, os filtros globais e como uma Strategy é avaliada. Ela complementa o passo a passo [Criando estratégias](/pt/aftersell/strategies_building_in_app) - recorra a ela quando precisar dos detalhes completos de uma opção específica.

Uma **regra** combina **gatilhos** (o *quando*) com **ações** (o *então*), e você pode combinar até cinco gatilhos sob uma única opção **AND** / **OR**: com **AND**, todos os gatilhos precisam corresponder; com **OR**, basta um. As seções abaixo seguem essa estrutura - primeiro [Gatilhos](#triggers) e [Ações](#actions), depois os controles no nível da Strategy que se aplicam a todas as regras: [ordenação das regras](#rule-priority-and-evaluation-order), [Filtros globais](#global-filters) e o [Catch all](#catch-all).

<div id="triggers">
  ## Gatilhos
</div>

Os gatilhos determinam quando uma regra dispara. Tipos de gatilho disponíveis:

<div id="product-triggers">
  ### Gatilhos de produto
</div>

Segmentam com base nos produtos no contexto (o carrinho do comprador, o pedido recém-concluído ou o produto sendo visualizado):

* **Specific product(s)** - corresponde a produtos específicos da Shopify por ID
* **Collection** - corresponde a produtos que pertencem a coleções específicas
* **Tag(s)** - corresponde a produtos com tags específicas (por exemplo, "sale", "summer")
* **Title** - corresponde ao título do produto
* **Vendor** - corresponde ao nome do fornecedor/marca
* **Type** - corresponde ao campo de tipo de produto (por exemplo, "Apparel", "Electronics")
* **Handle** - corresponde ao slug da URL do produto
* **Metafield** - corresponde a pares de namespace/chave/valor de metafields personalizados
* **Selling plan** - corresponde a produtos de "subscription" ou "one-time". Só é avaliado quando o contexto da requisição fornece um selling plan para o produto - as superfícies de upsell de checkout e de pós-compra da Aftersell não enviam isso, então o gatilho não corresponderá nelas, a menos que uma integração personalizada o forneça explicitamente

<div id="customer-triggers">
  ### Gatilhos de cliente
</div>

Segmentam com base em quem é o comprador:

* **Customer tag** - por exemplo, "VIP", "loyalty-gold"
* **Country code** - país de cobrança
* **Province code** - província/estado de cobrança
* **Locale** - locale do cliente (por exemplo, "en-US")
* **Accepts marketing** - status de consentimento de marketing
* **Order count** - número de pedidos anteriores
* **Total spent** - gasto total ao longo do tempo

<div id="cart-triggers">
  ### Gatilhos de carrinho
</div>

Segmentam com base no estado geral do carrinho:

* **Cart subtotal** - por exemplo, subtotal maior que \$50
* **Item count** - quantidade total de itens no carrinho
* **Line count** - número de itens de linha distintos
* **Cart attribute** - atributos de carrinho personalizados definidos pela API de carrinho da Shopify
* **Cart note** - o campo de observação do carrinho

<div id="location-triggers">
  ### Gatilhos de localização
</div>

Segmentam com base no destino de envio do comprador e na moeda da loja:

* **Shipping country** - país de destino do envio
* **Shipping province** - província/estado de destino do envio
* **Shipping method** - método de envio selecionado
* **Store currency** - o código da moeda ativa da loja

<div id="marketing-triggers">
  ### Gatilhos de marketing
</div>

Segmentam com base na URL da página em que o comprador chegou:

* **URL** - corresponde a uma parte da URL de entrada, para que você possa segmentar uma campanha ou canal específico correspondendo a um parâmetro incorporado na URL (por exemplo, `utm_source=newsletter`)

<div id="time-triggers">
  ### Gatilhos de tempo
</div>

Segmentam com base em quando a requisição é avaliada, no horário da loja:

* **Day of week** - o dia atual
* **Hour of day** - a hora atual

<div id="dynamic-triggers">
  ### Gatilhos dinâmicos
</div>

* **Always match** - um gatilho sem condição que sempre dispara. Use-o para fazer uma regra ser executada em toda requisição (isso é diferente do [Catch all](#catch-all) no nível da Strategy, que só dispara quando nenhuma outra regra corresponde).

<Note>
  Nem todo gatilho é preenchido em todas as superfícies. O checkout, por exemplo, envia apenas o contexto de produto e de carrinho - gatilhos de cliente, localização e marketing não corresponderão ali. Veja os guias [Implementando Strategies](/pt/aftersell/implementing_strategies_post_purchase_upsells) para saber o que cada superfície envia.
</Note>

<div id="operators">
  ### Operadores
</div>

Cada gatilho usa um **operador** para definir como o valor é comparado. Os operadores disponíveis dependem do tipo de gatilho.

| Operador | Descrição |
| - | - |
| **Equals** | Corresponde quando o campo é exatamente o valor especificado - por exemplo, fornecedor igual a "Nike". |
| **Does not equal** | Corresponde quando o campo é qualquer coisa diferente do valor especificado - útil para excluir um tipo de produto ou fornecedor específico. |
| **Contains any** | Corresponde quando um campo de vários valores inclui pelo menos um valor da sua lista - por exemplo, um produto pertence a qualquer uma de várias coleções. |
| **Does not contain any** | Corresponde quando um campo de vários valores não inclui nenhum dos valores da sua lista - por exemplo, excluir produtos com a tag "final-sale". |
| **Contains all** | Corresponde quando um campo de vários valores inclui todos os valores da sua lista - por exemplo, um produto precisa ter as tags "sale" e "summer". |
| **Does not contain all** | Corresponde quando falta a um campo de vários valores pelo menos um dos valores da sua lista. |
| **Contains** | Corresponde quando um campo de texto inclui o seu valor como parte do texto - por exemplo, o título contém "Gift". |
| **Does not contain** | Corresponde quando um campo de texto não inclui o seu valor. |
| **Greater than** | Corresponde quando um campo numérico ultrapassa o seu valor - por exemplo, o subtotal do carrinho é maior que \$75. |
| **Less than** | Corresponde quando um campo numérico está abaixo do seu valor - por exemplo, a contagem de pedidos é menor que 2 (compradores de primeira vez). |
| **Greater than or equal to** | Corresponde quando um campo numérico atinge ou ultrapassa o seu valor - por exemplo, o gasto total é de pelo menos \$500. |
| **Less than or equal to** | Corresponde quando um campo numérico está no seu valor ou abaixo dele - por exemplo, a contagem de itens do carrinho não passa de 3. |

Nem todo operador está disponível para todos os gatilhos:

* **Operadores de lista** (**Contains any / all** e suas negações) se aplicam a campos de vários valores, como tags, coleções, tags de cliente e produtos específicos.
* **Operadores de texto** (**Equals**, **Contains** e suas negações) se aplicam a campos de texto de valor único, como título, fornecedor, handle, locale, país e URL.
* **Operadores numéricos** se aplicam a campos como subtotal do carrinho, contagem de itens, contagem de linhas, contagem de pedidos, gasto total e hora do dia. Os operadores numéricos não têm variantes "does not".
* Alguns campos suportam apenas **Equals** e **Does not equal** - selling plan, dia da semana e consentimento de marketing.

<div id="actions">
  ## Ações
</div>

As ações criam a experiência que você quer entregar ao cliente. É aqui que você decide quais produtos exibir, como exibi-los e quaisquer dados adicionais a enviar junto com eles. Uma regra pode ter várias ações configuradas em conjunto para montar a experiência completa.

Em cada regra, todas as ações configuradas contribuem para um único conjunto combinado. Por exemplo, uma regra com uma ação de produto específico, uma ação de coleção e uma ação baseada em tags retornará produtos das três fontes juntas. Se um produto corresponder a várias fontes, ele é deduplicado.

<div id="product-actions">
  ### Ações de produto
</div>

Os mesmos atributos de produto disponíveis no lado dos gatilhos também estão disponíveis ao definir ações. Você pode retornar produtos com base em:

* **Produtos específicos** - escolha manualmente produtos individuais do seu catálogo da Shopify.
* **Coleção** - retorna todos os produtos que pertencem a uma coleção específica.
* **Atributos de produto** - retorna produtos que correspondem a critérios como tags, fornecedor, tipo de produto ou metafields - os mesmos tipos de atributo usados nos gatilhos.

<div id="dynamic-actions">
  ### Ações dinâmicas
</div>

As ações dinâmicas mudam o que é retornado com base em sinais em tempo real, em vez de uma lista fixa de produtos. Os tipos de ação dinâmica disponíveis incluem:

* **Most popular** - os produtos com melhor desempenho da sua loja por volume de vendas, em toda a loja ou limitados a uma coleção.
* **Recently purchased** - produtos comprados recentemente em toda a loja.
* **Inherit from when** - reutiliza os próprios gatilhos da regra (o "quando") como seletor de produtos, para que os produtos retornados correspondam aos mesmos critérios com os quais a regra disparou.
* **AI Recommendations** - sugestões personalizadas geradas pelo modelo de recomendação da Aftersell.

<div id="filtering-actions">
  ### Ações de filtragem
</div>

Depois que o conjunto de produtos é montado, você pode configurar quantos produtos são retornados e em que ordem:

* **Sort** - controla quais produtos são selecionados:
  * **Random** - uma seleção aleatória.
  * **Price: high → low** - os produtos mais caros são retornados primeiro.
  * **Price: low → high** - os produtos mais baratos são retornados primeiro.
* **Amount/Limit** - define o número máximo de produtos a retornar.
* **Type** - restringe o conjunto de produtos montado a um único tipo de produto da Shopify. Escolha **Equals** para uma correspondência exata ou **Contains** para uma correspondência parcial (ambas não diferenciam maiúsculas de minúsculas). Apenas os produtos cujo tipo corresponde ao valor inserido são mantidos; os demais são removidos antes de o Amount/Limit ser aplicado.

<Info>
  O filtro **Type** reduz o conjunto de produtos montado pelas suas ações de produto - ele é diferente da ação de produto **Product type**, que *retorna* produtos de um determinado tipo. Use o filtro quando quiser restringir o que uma ação mais ampla (como uma ação de coleção ou dinâmica) pode retornar.
</Info>

<Info>
  O Sort é aplicado primeiro, depois o Amount/Limit. Por exemplo, se a sua ordenação estiver definida como **Random**, todo o conjunto de produtos é embaralhado antes de o limite ser aplicado - assim, você sempre obtém uma fatia aleatória, e não os mesmos produtos em ordem aleatória.
</Info>

<div id="key-value-actions">
  ### Ações de chave-valor
</div>

Opcionalmente, anexe pares de chave-valor a uma regra. Quando a regra corresponde, eles são retornados em `meta.data` na resposta da API junto com os resultados de produtos. Usos comuns incluem:

* Texto de banner promocional
* Rótulos de campanha para análises

<Note>
  Se várias regras corresponderem e emitirem a mesma chave, prevalece o valor da primeira regra correspondente - regras posteriores não podem substituí-lo.
</Note>

<div id="rule-priority-and-evaluation-order">
  ## Prioridade das regras e ordem de avaliação
</div>

As regras dentro de uma Strategy são avaliadas em ordem, uma etapa por vez. A etapa 1 é avaliada primeiro, e assim por diante. Você pode reordenar as regras arrastando e soltando no editor de Strategies. O motor de avaliação:

1. Avalia os gatilhos de cada regra em relação ao contexto fornecido.
2. Coleta os produtos de todas as regras correspondentes.
3. Deduplica e limita o resultado ao máximo configurado (padrão: 20 produtos).

<div id="global-filters">
  ## Filtros globais
</div>

Os filtros globais removem produtos da elegibilidade de seleção em todas as regras de uma Strategy. Você pode acessá-los pelo **ícone de filtro** ao lado do nome da Strategy, no canto superior esquerdo do editor de Strategies.

Filtros globais disponíveis:

* **Exclude out of stock** - exclui automaticamente qualquer produto que esteja indisponível para compra no momento.
* **Exclude input products** - exclui o(s) produto(s) que acionaram a regra (por exemplo, o produto que o comprador está visualizando em uma PDP), para que você nunca recomende o mesmo produto que o comprador já está vendo.
* **Exclude by product tag** - exclui produtos com tags específicas.
* **Exclude by metafield** - exclui produtos que correspondam a um namespace/chave/valor de metafield específico.
* **Exclude by product ID** - exclui produtos específicos por ID.
* **Require stock at location** - mantém apenas produtos com estoque disponível em uma localização escolhida (requer permissões de leitura de estoque e de localização).

<div id="catch-all">
  ## Catch all
</div>

O Catch all é uma regra especial que atua como a etapa final de toda avaliação de Strategy. Ele não tem gatilho; dispara automaticamente se nenhuma outra regra da Strategy corresponder à requisição atual.

Quando ativado, o Catch all garante que o seu espaço de recomendação nunca fique vazio. Sua ação pode ser configurada usando qualquer um dos mesmos tipos de ação disponíveis para regras comuns - produtos específicos, coleções, ações dinâmicas etc.

* **Ativar/desativar** - liga ou desliga a regra Catch all para a Strategy. Quando desativada, requisições que não correspondem a nenhuma regra retornam vazio.
* **Configurar ações** - define o que retornar usando qualquer combinação dos tipos de ação disponíveis, como em qualquer outra regra.

Quando o Catch all dispara, a resposta da API indicará `resolution.fallbackUsed: true`.
