> ## 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.

# Создание стратегий

> Создавайте, настраивайте и управляйте стратегиями из дашборда Aftersell — код не требуется.

<div id="overview">
  ## Обзор
</div>

Дашборд Aftersell предоставляет визуальный интерфейс для создания стратегий и управления ими. Вы можете создавать стратегии, определять правила таргетинга с триггерами, назначать товары для рекомендаций и настраивать поведение catch all — все без написания кода.

Это руководство описывает весь процесс создания стратегии в интерфейсе.

***

<div id="navigating-to-strategies">
  ## Переход к стратегиям
</div>

1. Войдите в Aftersell.
2. Нажмите **Strategies** в левой боковой навигации.
3. Вы увидите список существующих стратегий или пустое состояние с предложением создать первую.

***

<div id="creating-a-new-strategy">
  ## Создание новой стратегии
</div>

1. Нажмите **Add Strategy**.
2. Вы попадете в редактор стратегий, где можно добавлять правила.

<Tip>
  Нажмите **значок карандаша** в левом верхнем углу редактора стратегий, чтобы дать стратегии описательное имя. Понятное имя облегчит идентификацию стратегий в дашборде в будущем.
</Tip>

***

<div id="adding-rules">
  ## Добавление правил
</div>

Каждая стратегия содержит одно или несколько **правил**. Правило состоит из:

* **Триггеров** — «когда» — критериев, которые должны быть выполнены для срабатывания правила.
* **Действий** — «тогда» — сценария, возвращаемого при срабатывании правила.

<div id="defining-triggers">
  ### Определение триггеров
</div>

Триггеры определяют, когда срабатывает правило. Вы можете комбинировать до пяти триггеров в одном правиле. Один переключатель **AND** / **OR** применяется ко всему набору условий: при **AND** должен совпасть каждый триггер; при **OR** достаточно совпадения любого одного триггера. Доступные типы триггеров:

<div id="product-triggers">
  #### Товарные триггеры
</div>

Таргетинг на основе товаров в контексте (корзина покупателя, только что завершенный заказ или просматриваемый товар):

* **Specific product(s)** — совпадает с конкретными товарами Shopify по ID
* **Collection** — совпадает с товарами, принадлежащими определенным коллекциям
* **Tag(s)** — совпадает с товарами с определенными тегами (например, «sale», «summer»)
* **Title** — совпадает с названием товара
* **Vendor** — совпадает с названием поставщика/бренда
* **Type** — совпадает с полем типа товара (например, «Apparel», «Electronics»)
* **Handle** — совпадает со слагом URL товара
* **Metafield** — совпадает по парам namespace/key/value пользовательских метаполей
* **Selling plan** — совпадает с товарами «subscription» или «one-time». Оценивается только тогда, когда контекст запроса содержит план продаж товара — поверхности чекаута и post-purchase апселлов Aftersell его не отправляют, поэтому триггер там не сработает, если только кастомная интеграция не передаст его явно

<div id="customer-triggers">
  #### Клиентские триггеры
</div>

Таргетинг на основе того, кто покупатель:

* **Customer tag** — например, «VIP», «loyalty-gold»
* **Country code** — страна выставления счета
* **Province code** — регион/штат выставления счета
* **Locale** — локаль клиента (например, «en-US»)
* **Accepts marketing** — статус согласия на маркетинг
* **Order count** — количество предыдущих заказов
* **Total spent** — суммарные траты за все время

<div id="cart-triggers">
  #### Триггеры корзины
</div>

Таргетинг на основе общего состояния корзины:

* **Cart subtotal** — например, промежуточная сумма больше \$50
* **Item count** — общее количество товаров в корзине
* **Line count** — количество отдельных позиций
* **Cart attribute** — пользовательские атрибуты корзины, задаваемые через cart API Shopify
* **Cart note** — поле примечания к корзине

<div id="location-triggers">
  #### Триггеры местоположения
</div>

Таргетинг на основе того, куда покупатель отправляет заказ, и валюты магазина:

* **Shipping country** — страна назначения доставки
* **Shipping province** — регион/штат назначения доставки
* **Shipping method** — выбранный способ доставки
* **Store currency** — код активной валюты магазина

<div id="marketing-triggers">
  #### Маркетинговые триггеры
</div>

Таргетинг на основе URL страницы, на которую пришел покупатель:

* **URL** — совпадает с подстрокой URL входа, так что вы можете таргетировать конкретную кампанию или канал, сопоставляя параметр, встроенный в URL (например, `utm_source=newsletter`)

<div id="time-triggers">
  #### Временные триггеры
</div>

Таргетинг на основе момента оценки запроса, по времени магазина:

* **Day of week** — текущий день
* **Hour of day** — текущий час

<div id="dynamic-triggers">
  #### Динамические триггеры
</div>

* **Always match** — триггер без условия, который срабатывает всегда. Используйте его, чтобы правило выполнялось при каждом запросе (это отличается от [Catch all](#configuring-a-catch-all) на уровне стратегии, который срабатывает только тогда, когда не совпало ни одно другое правило).

<Note>
  Не каждый триггер заполняется на каждой поверхности. Например, чекаут отправляет только контекст товара и корзины — клиентские, географические и маркетинговые триггеры там не сработают. Что отправляет каждая поверхность, см. в руководствах [Внедрение стратегий](/ru/aftersell/implementing_strategies_post_purchase_upsells).
</Note>

<div id="operators">
  #### Операторы
</div>

Каждый триггер использует **оператор**, определяющий способ сопоставления значения. Доступные операторы зависят от типа триггера.

| Оператор                     | Описание                                                                                                                                        |
| ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| **Equals**                   | Совпадает, когда поле в точности равно указанному вами значению — например, vendor равен «Nike».                                                |
| **Does not equal**           | Совпадает, когда поле имеет любое значение, кроме указанного вами, — полезно для исключения конкретного типа товара или поставщика.             |
| **Contains any**             | Совпадает, когда многозначное поле содержит хотя бы одно значение из вашего списка — например, товар принадлежит любой из нескольких коллекций. |
| **Does not contain any**     | Совпадает, когда многозначное поле не содержит ни одного значения из вашего списка — например, исключить товары с тегом «final-sale».           |
| **Contains all**             | Совпадает, когда многозначное поле содержит каждое значение из вашего списка — например, товар должен иметь оба тега «sale» и «summer».         |
| **Does not contain all**     | Совпадает, когда в многозначном поле отсутствует хотя бы одно значение из вашего списка.                                                        |
| **Contains**                 | Совпадает, когда текстовое поле содержит ваше значение как подстроку — например, название содержит «Gift».                                      |
| **Does not contain**         | Совпадает, когда текстовое поле не содержит ваше значение.                                                                                      |
| **Greater than**             | Совпадает, когда числовое поле превышает ваше значение — например, промежуточная сумма корзины больше \$75.                                     |
| **Less than**                | Совпадает, когда числовое поле меньше вашего значения — например, количество заказов меньше 2 (покупатели-новички).                             |
| **Greater than or equal to** | Совпадает, когда числовое поле равно вашему значению или превышает его — например, суммарные траты не менее \$500.                              |
| **Less than or equal to**    | Совпадает, когда числовое поле равно вашему значению или меньше его — например, количество товаров в корзине не более 3.                        |

Не каждый оператор доступен для каждого триггера:

* **Операторы списков** (**Contains any / all** и их отрицания) применяются к многозначным полям, таким как теги, коллекции, теги клиентов и конкретные товары.
* **Текстовые операторы** (**Equals**, **Contains** и их отрицания) применяются к однозначным текстовым полям, таким как название, поставщик, handle, локаль, страна и URL.
* **Числовые операторы** применяются к полям вроде промежуточной суммы корзины, количества товаров, количества позиций, количества заказов, суммарных трат и часа дня. У числовых операторов нет вариантов «does not».
* Несколько полей поддерживают только **Equals** и **Does not equal** — selling plan, day of week и accepts marketing.

<div id="defining-actions">
  ### Определение действий
</div>

Действия создают сценарий, который вы хотите предоставить клиенту. Здесь вы решаете, какие товары показывать, как их показывать и какие дополнительные данные передавать вместе с ними. У правила может быть несколько действий, настроенных вместе для построения полного сценария.

В рамках одного правила все настроенные действия вносят вклад в один общий пул. Например, правило с действием конкретных товаров, действием коллекции и действием по тегам вернет товары из всех трех источников вместе. Если товар совпадает с несколькими источниками, он дедуплицируется.

<div id="product-actions">
  #### Товарные действия
</div>

Те же атрибуты товаров, что доступны на стороне триггеров, доступны и при определении действий. Вы можете возвращать товары на основе:

* **Конкретных товаров** — вручную выберите отдельные товары из вашего каталога Shopify.
* **Коллекции** — верните все товары, принадлежащие определенной коллекции.
* **Атрибутов товаров** — верните товары, соответствующие критериям вроде тегов, поставщика, типа товара или метаполей — те же типы атрибутов, что используются в триггерах.

<div id="dynamic-actions">
  #### Динамические действия
</div>

Динамические действия изменяют возвращаемый результат на основе сигналов в реальном времени, а не фиксированного списка товаров. Доступные типы динамических действий:

* **Most popular** — лучшие по объему продаж товары вашего магазина, по всему магазину или в рамках коллекции.
* **Recently purchased** — товары, недавно купленные по всему магазину.
* **Inherit from when** — повторно использовать собственные триггеры правила («when») в качестве селектора товаров, чтобы возвращаемые товары соответствовали тем же критериям, по которым сработало правило.
* **AI Recommendations** — персонализированные рекомендации, генерируемые моделью рекомендаций Aftersell.

<div id="filtering-actions">
  #### Действия фильтрации
</div>

После сборки пула товаров вы можете настроить, сколько товаров возвращается и в каком порядке:

* **Sort** — управляйте тем, какие товары выбираются:
  * **Random** — случайная выборка.
  * **Price: high → low** — сначала возвращаются самые дорогие товары.
  * **Price: low → high** — сначала возвращаются самые дешевые товары.
* **Amount/Limit** — задайте максимальное количество возвращаемых товаров.

<Info>
  Сначала применяется Sort, затем Amount/Limit. Например, если сортировка установлена на **Random**, весь пул товаров перемешивается до применения лимита — так вы всегда получаете случайный срез, а не одни и те же товары в случайном порядке.
</Info>

<div id="key-value-actions">
  #### Действия «ключ-значение»
</div>

При желании прикрепите к правилу пары «ключ-значение». Когда правило срабатывает, они возвращаются в `meta.data` в ответе API вместе с результатами по товарам. Типичные варианты использования:

* Текст промо-баннера
* Метки кампаний для аналитики

<Note>
  Если несколько правил совпадают и выдают один и тот же ключ, побеждает значение из первого совпавшего правила — последующие правила не могут его переопределить.
</Note>

***

<div id="rule-priority-and-evaluation-order">
  ## Приоритет правил и порядок оценки
</div>

Правила внутри стратегии оцениваются иерархическими последовательными шагами. Сначала оценивается шаг 1 и так далее. Вы можете изменять порядок правил перетаскиванием в редакторе стратегий. Движок оценки:

1. Оценивает триггеры каждого правила по предоставленному контексту.
2. Собирает товары из всех совпавших правил.
3. Дедуплицирует и ограничивает результат настроенным максимумом (по умолчанию: 20 товаров).

***

<div id="configuring-a-catch-all">
  ## Настройка Catch all
</div>

Catch all — это специальное правило, выступающее финальным шагом каждой оценки стратегии. У него нет триггера, оно срабатывает автоматически, если ни одно другое правило стратегии не совпало с текущим запросом.

Когда Catch all включен, он гарантирует, что ваш слот рекомендаций никогда не будет пустым. Его действие можно настроить с использованием любых типов действий, доступных обычным правилам, — конкретные товары, коллекции, динамические действия и т.д.

* **Включение/отключение** — включите или выключите правило Catch all для стратегии. Когда оно отключено, запросы, не совпавшие ни с одним правилом, вернут пустой результат.
* **Настройка действий** — определите, что возвращать, используя любую комбинацию доступных типов действий, как и в любом другом правиле.

Когда Catch all срабатывает, ответ API будет содержать `resolution.fallbackUsed: true`.

***

<div id="global-filters">
  ## Глобальные фильтры
</div>

Глобальные фильтры исключают товары из выборки для каждого правила стратегии. Доступ к ним осуществляется через **значок фильтра** рядом с именем стратегии в левом верхнем углу редактора стратегий.

Доступные глобальные фильтры:

* **Exclude out of stock** — автоматически исключать любой товар, который в данный момент недоступен для покупки.
* **Exclude input products** — исключать товар(ы), вызвавшие срабатывание правила (например, товар, который покупатель сейчас просматривает на странице товара), чтобы вы никогда не рекомендовали тот же товар, на который покупатель уже смотрит.
* **Exclude by product tag** — исключать товары с определенными тегами.
* **Exclude by metafield** — исключать товары, соответствующие конкретному namespace/key/value метаполя.
* **Exclude by product ID** — исключать конкретные товары по ID.
* **Require stock at location** — оставлять только товары с доступными запасами в выбранной локации (требуются разрешения на чтение запасов и локаций).

***

<div id="validation-and-error-states">
  ## Валидация и состояния ошибок
</div>

Стратегия не может быть сохранена, если какое-либо правило неполно. Каждому правилу нужны как минимум одно условие (или триггер **Always match**) и как минимум одно действие; если чего-то не хватает, ошибки появятся непосредственно на соответствующем правиле с указанием того, что нужно исправить.

Чтобы устранить ошибку и сохранить стратегию, либо:

* **Завершите правило** — добавьте недостающий триггер и/или действие.
* **Удалите правило** — уберите его полностью, если оно больше не нужно.

Редактор стратегий не позволит сохранить, пока все правила не станут корректными.
