# Структура и термины

Правила блока состоят из следующих элементов:

  • Алгоритм;
  • Условие;
  • Действие;
  • A/B-тест.

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

# Алгоритмы

Алгоритм

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

  • Фильтр по цели алгоритма;
  • Сортировка по персонализации;
  • Сортировка по sales rate;
  • Сортировка по маржинальности;
  • Сортировка по пользовательскому профилю;
  • Сортировка по сезонности;
  • И так далее (еще с десяток фильтров и сортировок).

Ниже описывается базовая суть каждого алгоритма без учета сортировок и фильтров по персонализации, сезонности и прочему. То есть, каждый алгоритм содержит в себе персонализацию и другие слои алгоритма, но в описании ниже это не фигурирует.

# Популярные

Возвращает товары, сортируя их по sales rate (это внутренний показатель ценности товара в REES46, учитывающий продаваемость, цену и маржу). Sales rate рассчитывается по продажам товаров за 1 месяц. Период может быть изменен в настройках магазина. Подробнее о расчётах можно прочитать здесь.

# Похожие

Товары, которые находятся в тех же категориях, что и текущий просматриваемый товар (сравнивается весь список переданных категорий), и находятся в диапазоне цен от 85% до 125% от текущего товара. Если товаров в таком ценовом сегменте недостаточно для того, чтобы заполнить блок, разброс цен увеличивается до 50–150%. Дополнительно могут быть применены фильтры по параметрам товара.

Учёт совпадений параметров товаров

При поиске похожих товаров, их параметры фильтруются на стороне бэкенда. Однако, учитываются не все параметры, а только простые. Параметры в виде сложных структур (например, массивы или JSON) не используются при сравнении товаров в рамках алгоритма.

# С этим товаром также покупают

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

Периоды расчёта:

  1. 1 неделя
  2. 2 недели
  3. 1 месяц
  4. 2 месяца
  5. 3 месяца
  6. 6 месяцев
  7. 1 год

# Вы недавно смотрели

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

Период расчета: 14 дней.

# С товарами в вашей корзине также покупают

Алгоритм, аналогичный «С этим также покупают», но применяемый ко всей текущей корзине покупателя. Чаще всего блок с таким алгоритмом показывают на странице корзины.

Периода расчета: при посещаемости выше 300К визитов/мес - 1 месяц, при посещаемости меньше 300К визитов/мес - 3 месяца.

# Искавшие это также купили

Алгоритм, который анализирует выполненный поисковый запрос и то, какие товары покупали другие покупатели, которые выполняли такой же поисковый запрос. Размещается на странице с результатами поиска. Внимание: товары из этого алгоритма не всегда соответствуют самому поисковому запросу (например, пользователь искал „samsung galaxy” и в процессе купил не только этот смартфон, но еще и холодильник, батарейки и пылесос). Поэтому рекомендуется выводить его только тогда, когда полный поиск вернул пустой результат.

Периода расчета: при посещаемости выше 500К визитов/мес - 1 неделя, при посещаемости меньше 500К визитов/мес - 2 недели.

# У вас скоро закончится

Для регулярно потребляемых товаров (FMCG). Рассчитывает периодичность, с которой покупатель заказывает один и тот же товар и прогнозирует, когда товар закончится у покупателя и пора пополнить запасы. Может выводиться в корзине или личном кабинете. Для расчёта среднего периода покупки берется выборка заказов за последние три месяца. Алгоритм будет возвращать товар в течение прогнозируемого временного окна, когда ожидается следующий заказ. Это окно рассчитывается на основе среднего времени между повторными покупками для данного товара или пользователя.

# Новинки

Товары, отмеченные в фиде как «Новинка».

# Определенные товары

Возможность указать определенные товары, которые нужно показать покупателю.

Выбрать нужные товары можно с помощью поля, в которое нужно ввести id, а затем выбрать товар из появившегося списка.

Определённые товары

# Собственные рекомендации

Показывает сопутствующие товары, если они заданы ритейлером. Если в фиде передается тег accessories с сопутствующими товарами, то выводятся эти товары.

# Частично похожие

В отличие от похожих товаров возвращает товары, которые совпадают как минимум по одной категории.

# Ранее вы добавляли эти товары в корзину

Показывает товары, которые пользователь добавлял в корзину.

Периода расчета: 30 дней

# С этим товаром также смотрят

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

Периода расчета: 1 день

# Следующая лучшая покупка

Показывает товары, которые лучше всего подходят для следующей покупки.

# Популярные товары в категориях

Формирует блок с товарами заданной категории. В этот блок попадают самые популярные из них.

Задать нужные категории можно в поле "Источники данных". Доступные опции:

  1. Категории, в которых пользователь просматривал товары
  2. Категории, в которых пользователь добавил товары в корзину
  3. Категории, в которых пользователь добавлял товары в избранное
  4. Категории, в которых пользователь оформлял заказ
  5. Ручной ввод - выбор из списка имеющихся категорий

Популярные товары в категориях

# Вам это будет интересно

Алгоритм позволяет отобразить товары, которые потенциально могут заинтересовать пользователя. К перечню товаров применяются бусты, они позволяют отдавать приоритет определённым категориям.

# Сейчас покупают

Показывает товары с наибольшим объёмом покупок за последний период (по умолчанию 24 часа). Список периодов доступен в отдельном меню, которое появляется при выборе алгоритма из списка.

Доступные опции: 1 час, 3 часа, 6 часов, 12 часов, 1 день, 3 дня, 1 неделя.

Отдельно нужно сказать об опции "Использовать глобальные настройки". Для этого алгоритма есть отдельное поле в настройках товарных рекомендаций.

Настройка товарных рекомендаций

# Наиболее активные

Алгоритм отбирает товары с которыми пользователь наиболее активно взаимодействовал за определённый период.

При выборе алгоритма из списка появляются два поля дополнительных настроек, которые позволяют задать тип взаимодействия и период (в днях).

Тип взаимодействия - это событие, которое фиксируется в Clickhouse. Доступные опции:

  1. Просмотр
  2. Добавление в корзину
  3. Удаление из корзины
  4. Покупка
  5. Добавление в избранное
  6. Удаление из избранного

Настройки алгоритма

# Сейчас в избранном

Рекомендации ограничены категориями из wish-листа пользователя. Если у пользователя нет товаров в wish-листа, блок рекомендаций не будет показан.

Если у блока есть другие входящие категории (для блока заданы дополнительные фильтры), то будут показаны те из них, что пересекаются с wish-листом.

# Условия

Условие

Условия позволяют проверить некоторые характеристики профиля покупателя, его поведение, характеристики товара или внешних параметров и в зависимости от этого использовать тот или иной алгоритм. Например, можно проверить, есть ли текущий просматриваемый товар в корзине у покупателя и, в зависимости от этого, применить алгоритм «Сопутствующие товары» (если в корзине) или «Похожие» (если еще не в корзине).

Условие Параметры Что делает
Товар и категория:
Цена на текущий товар Равно, больше чем, меньше чем, между Проверяет цену просматриваемого товара на соответствие диапазону, выбранному в параметрах
Текущий товар в корзине Да / Нет Проверяет, находится ли просматриваемый товар в корзине
Идентификатор текущего товара Содержит / Не содержит Проверяет, содержит или не содержит ID просматриваемого товара ID, заведенному в параметрах
Бренд, к которому относится товар Равно / Не равно [Список брендов] Проверяет, совпадает или не совпадает бренд просматриваемого товара с брендом, выбранным в параметрах
Текущая категория содержит Содержит / Не содержит [Список категорий] Проверяет, совпадает или нет просматриваемая категория с категорией, выбранной в параметрах. Рекурсивно проверяет все дочерние категории
Текущая категория равна Да / Нет [Список категорий] Проверяет точное совпадение совпадение категории продукта с категорией,указанной в настройках правила. Не работает с дочерними категориями продукта
Принадлежит ли текущий товар к категории Содержит / Не содержит [Список категорий] Проверяет, совпадает или не совпадает категория просматриваемого товара с категорией, выбранной в параметрах
Принадлежит ли товар в корзине к категории Содержит / Не содержит [Список категорий] Проверяет, принадлежат ли товары в корзине категории выбранной в параметрах
Есть ли в корзине товар из просматриваемой категории Да / Нет Проверяет, есть ли в корзине товар из просматриваемой категории
Наличие товаров в корзине Да / Нет Проверяет, есть ли в корзине товары
Текущий товар содержит параметр Поле для ввода параметра [ Равно, не равно, содержит, не содержит, меньше чем, больше чем] Проверяет наличие параметра в свойствах товара
Мерчант, к которому относится товар Да / Нет Проверяет относится ли товар к мерчанту, который пользователь выбирает из списка при настройке условия
Пользователь:
Пол пользователя Равно / Не равно Проверяет пол текущего клиента на соответствие параметрам
День рождения Равно, больше чем, меньше чем [Диапазон] Проверяет день рождения пользователя на соответствие параметрам
Уровень дохода Равно / Не равно Проверяет уровень дохода клиента на соответствие параметрам
Пользовательский сегмент Равно / Не равно Проверяет, соответствует ли текущий клиент заранее настроенному сегменту
Как долго существует профиль пользователя -- // -- Проверяет время существования профиля с момента захода на сайт
Зарегистрирован Да / Нет Проверяет, зарегистрирован ли клиент. Проверяется по наличию переданного ID пользователя
Есть карта лояльности Да / Нет Проверяет наличие карты лояльности
Устройство Содержит / Не содержит Проверяет, с какого устройства клиент зашел на сайт
География Содержит / Не содержит Проверяет, с какого города клиент по данным из CDP
Карта лояльности выдана в ... (город) Содержит / Не содержит Проверяет, в каком городе выдана карта лояльности
Свойства профиля Список свойств Проверяет передаваемое свойство профиля
Тег профиля Список тегов Проверяет передаваемый тег профиля
Действия:
Оформлял заказы в выбранный период (в днях) Временные периоды Проверяет, оформлял ли заказы за выбранный период
Сколько оформил заказов за выбранный период Равно, больше чем, меньше чем, между [Диапазон] Проверяет, сколько оформил заказов за выбранный период
Посмотрел товар определенной категории Содержит / Не содержит [Список категорий] Проверяет, товары из каких категорий смотрел клиент за выбранный период
Добавил в корзину товар определенной категории Содержит / Не содержит [Список категорий] Проверяет, добавлял ли клиент в корзину товары из категории, выбранной в параметрах, за выбранный период
Купил товар определенной категории Содержит / Не содержит [Список категорий] Проверяет, покупал ли клиент товары из категории, выбранной в параметрах, за выбранный период
Посмотрел товар бренда Содержит, не содержит [Список брендов] Проверяет, смотрел ли клиент товары бренда, выбранного в параметрах, за выбранный период
Добавил в корзину товар бренда Содержит, не содержит [Список брендов] Проверяет, добавлял ли клиент в корзину товары бренда, выбранного в параметрах, за выбранный период
Купил товар бренда Содержит, не содержит [Список брендов] Проверяет, покупал ли клиент товары бренда, выбранного в параметрах, за выбранный период
Одежда и обувь:
Размер обуви Равно, больше чем, меньше чем, между [Диапазон] Проверяет, размер обуви клиента на соответствие размеру, выбранному в параметрах
Размер рубашки / блузы Равно, больше чем, меньше чем, между [Диапазон] -- // --
Размер футболки Равно, больше чем, меньше чем, между [Диапазон] -- // --
Размер нижнего белья Равно, больше чем, меньше чем, между [Диапазон] -- // --
Размер брюк Равно, больше чем, меньше чем, между [Диапазон] -- // --
Размер пиджака / жакета Равно, больше чем, меньше чем, между [Диапазон] -- // --
Размер носков Равно, больше чем, меньше чем, между [Диапазон] -- // --
Размер ремня Равно, больше чем, меньше чем, между [Диапазон] -- // --
Размер головного убора Равно, больше чем, меньше чем, между [Диапазон] -- // --
Размер перчатки Равно, больше чем, меньше чем, между [Диапазон] -- // --
Дети:
Количество детей Равно, больше чем, меньше чем, между [Диапазон] Проверяет количество детей на соответствие количеству, выбранному в параметрах
Возраст ребенка Равно, больше чем, меньше чем, между [Диапазон] Проверяет возраст ребенка на соответствие выбранному в параметрах
Пол ребенка Равно / Не равно Проверяет пол ребенка на соответствие выбранному в параметрах
Программа лояльности:
Статус -- // -- Проверяет статус программы лояльности на соответствие выбранному в параметрах
Бонусы Равно, больше чем, меньше чем Проверяет число бонусов на соответствие выбранным в параметрах
Бонусов до следующего уровня Равно, больше чем, меньше чем Проверяет число бонусов на соответствие выбранным в параметрах

Это еще не все

Список условий постоянно пополняется и эта документация не может описать все возможности. Смотрите актуальный список условий в редакторе блоков рекомендаций.

# Фильтры алгоритмов

Фильтр алгоритма

Помимо базовых фильтров алгоритмов вы можете применить дополнительные фильтры, которые будут применены к набору товаров, выданных алгоритмов. Это нужно, например, чтобы вывести товары не дешевле какой-то цены или исключить товары каких-то брендов.

Фильтр Настройки Что делает
Показать товары только из выбранных категорий Список категорий Выбирает товары только из категорий, переданных в настройках фильтра
Не показывать товары из выбранных категорий Список категорий Не показывает товары из категорий, переданных в настройках фильтра
Показывать товары только из категории текущего товара Да / Нет Подбирает товары с одинаковым списком категорий
Показывать из категорий, в которых пользователь просматривал товары - Выбирает товары из категорий, в которых пользователь смотрел товары
Показывать товары из категорий, добавленных пользователем в корзину - Выбирает товары из категорий, в которых пользователь добавлял товары в корзину
Показывать товары из категорий, купленных пользователем ранее - Выбирает товары из категорий, в которых пользователь покупал товары
Показывать товары, совпадающие по параметру Список параметров текущего просматриваемого товара Выбирает товары, которые содержат аналогичные значения выбранных параметров у просматриваемого товара
Не показывать товары, совпадающие по параметрам Список параметров текущего просматриваемого товара Выбирает товары, которые не содержат аналогичные значения выбранных параметров у переданного в запросе товара
Показывать товары, соответствующие бренду просматриваемого товара Да / Нет Показывает или исключает товары того же бренда, что и просматриваемый товар
Показывать товары из той же корневой категории Да / Нет Выбирает товары только из той корневой категории, в которой находится просматриваемый товар
Не показывать выбранные товары Список товаров Исключает выбранные товары из показа
Показывать товары в ценовом диапазоне Минимальная и максимальная цена Показывает товары, которые соответствуют выбранному ценовому диапазону
Показывать доступные в указанном количестве Минимальное и максимальное количество Показывает товары, которые соответствуют выбранному в диапазоне количеству
Показывать только в соответствии со статистикой - Выбирает товары из статистики совместных покупок за месяц. Статистика выводится на странице просмотра информации о товаре
Показывать товары только выбранных брендов Список брендов Показывает товары, которые содержат бренд из списка
Не показывать товары выбранных брендов Список брендов Не показывает товары, которые содержат бренд из списка
Товары со скидкой Да / Нет Показывает или исключает товары, которые содержат «старую» цену
Не использовать прогрессивную персонализацию - Не учитывает алгоритмы прогрессивной персонализации в ранжировании товаров (по характеристикам профиля покупателя: пол, возраст, дети, домашние животные, и так далее)
Только определенного пола Список полов Показывает товары, соответствующие выбранному полу
Показывать товары, отмеченные как новинки Да / Нет Показывает или исключает товары, для которых был передан флаг «Новинка»
По прибыли Больше чем, Меньше чем, Равно и поле для суммы Отфильтровывает товары больше, меньше или равные определённой сумме
Размер скидки Значения от 0 до 100 Отфильтровывает товары по размеру скидки в указанном диапазоне
Показывать товары только выбранных мерчантов Список мерчантов Отфильтровывает товары по принадлежности к выбранному мерчанту
Не показывать товары выбранных мерчантов Список мерчантов Товары мерчанта, выбранного из списка при настройке фильтра, не будут показаны
Показывать товары, соответствующие мерчанту просматриваемого товара Да / Нет В рекомендации попадут товары того же мерчанта, что и у просматриваемого товара
Взаимодействовал с товаром Список с периодами взаимодействия от 1 часа до 1 года Будут показаны только те товары, с которыми пользователь взаимодействовал в течение установленного периода
Не показывать товары из избранного - Фильтр исключает товары, находящиеся в списке избранного (wishlist) у пользователя.
Минимальная стоимость товара для достижения суммы в корзине Поле для ввода данных Назначение фильтра - показывать товары, цена которых не превышает разницы между заданным пороговым значением и текущей суммой корзины пользователя
Показывать из категорий, в которых пользователь добавил товар в избранное - Фильтр ограничивает категории показа товарами из категорий, ранее добавленных пользователем в избранное (wishlist)
Показывать товары, соответствующие значениям выбранного параметра Поле для ввода параметров и поле для значений Фильтр добавляет фильтрацию по переданным значениям параметров, например: размеру, цвету и т.п.
Не показывать товары, соответствующие значениям выбранного параметра Поле для ввода параметров и поле для значений Фильтр исключает из результатов товары, соответствующие заданным значениям параметров
Показывать товары выбранной маржинальности Больше чем/Меньше чем/равно и поле для значений Фильтруются товары по диапазону маржинальности, переданному в параметрах
Исключить товары из той же группы, что и текущая - Исключаются из выдачи товары с тем же значением group_id, как и у текущего товара
Сортировать по рейтингу Опции По возрастанию и По убыванию Сортировка результатов по параметру rating в заданном порядке (возрастающем или убывающем)
Игнорировать входящие параметры - Фильтр очищает все ранее установленные фильтры, категории и сортировки и начинает подбор товаров для блока
Не показывать из категорий, в которых пользователь просматривал товары - Фильтр исключает товары из категорий, которые пользователь просматривал, но не купил
Не показывать товары из категорий, купленных пользователем ранее - Исключаются товары из категорий, в которых пользователь уже совершал покупки
Не исключать ранее купленные товары - Фильтр позволяет не исключать ранее купленные товары, чтобы они снова отображались в рекомендациях
Не исключать находящиеся в корзине товары - Фильтр разрешает отображать в рекомендациях товары, которые уже находятся в корзине у пользователя
Не показывать товары из категорий, добавленных пользователем в корзину - Исключаются товары из категорий из которых пользователь добавил товары в корзину

Это ещё не всё

Список фильтров постоянно пополняется и эта документация не может описать все возможности. Смотрите актуальный список фильтров в редакторе блоков рекомендаций.

Механика расчёта прибыльности

Расчёт прибыльности товаров для конкретного магазина производится только в случае, если у него есть товары с ненулевой маржой.

Общая выручка за период группируется по уникальному идентификатору товара (item_uniqid).

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

Для расчёта прибыли товар должен присутствовать как в данных о маржинальности, так и в данных о выручке. То есть, считаются только проданные товары с известной маржой.

Показатель прибыли представляет собой произведение выручки с товара на его маржу, которая предварительно делится на 100.

# Действия

Действие

Действия позволяют применить ко всему блоку определенные изменения: отсортировать полученные товары в определенном порядке или переименовать название блока рекомендаций (ту часть, которую будет видеть покупатель).

# Переименовать заголовок блока

Меняет название блока. Применяется, если после ветки условий основной алгоритм блока изменился. В примере, если показываем сопутствующие или похожие товары в зависимости от того, есть ли текущий товар в корзине или нет, мы можем переименовать блок в «Похожие товары» или «С этим товаром покупают».

В форме два блока: Заголовок блока и Сссылка.

Данные, помещённые в эти поля используются на этапе рендеринга HTML-шаблона. На этом этапе подставляются рекомендации, а также заголовок и ссылка.

# Пересортировать товары

Отсортировывает товары, которые вернули алгоритмы выше этого элемента, в соответствии с выбранным правилом:

  • По выручке, которую принес каждый товар за месяц (↑↓)
  • По количеству заказов товара за месяц (↑↓)
  • По стоимости товара (↑↓)
  • Отсортировать равномерно. Сортирует и фильтрует товары так, чтобы в выдаче не доминировала одна конкретная категория.

# A/B-тест

A/B-тест

Запускает A/B-тестирование веток в блоке. При добавлении элемента A/B-тест текущая ветка правил дублируется и в начале дерева правил появляется элемент A/B-тестирования. Вы можете изменить одну из веток и потом сравнивать эффективность каждой ветки.

Подробнее об A/B-тестировании блоков рекомендаций читайте в разделе «A/B-тестирование».