Перейти к содержанию

Настройка акции

Экран «Администрирование» → «Настройка акции» — реестр условий, из которых маркетолог собирает вкладку «Условия» акции. Здесь администратор видит коробочные условия продукта, скрывает ненужные заказчику, задаёт порядок и добавляет свои условия — на переменную, которую касса передаёт в покупке, или на поле профиля клиента. Новое отраслевое условие (бренд, номер тиража, регион клиента) появляется в форме акции без доработки продукта.

Как маркетолог заполняет условия в акции и как они проверяются при покупке — в разделе «Условия акции».

Доступ

Просмотр экрана — право LOYALTY_DICTIONARY_READ, изменения — LOYALTY_DICTIONARY_WRITE. Без права записи экран открывается только для чтения: кнопки «Добавить» и «Сохранить», переключатели и перетаскивание недоступны, пункты меню строки неактивны, форма условия открывается для просмотра с кнопкой «Закрыть».

Состав экрана

Над списком — кнопка «Добавить», в шапке — «Сохранить». Пока на экране есть несохранённые правки, рядом видны надпись «Есть несохранённые изменения» и кнопка «Отменить изменения» (подтверждение «Отмена изменений» — «Вы уверены, что хотите отменить все несохранённые изменения? Действие необратимо»).

Колонка Содержимое
«Условие» Название и тег «Коробочное» или «Добавлено»; у ещё не сохранённого — тег «Новое, не сохранено». У добавленного условия второй строкой — источник: «Из входящего события — ‹переменная›» или «Из профиля — ‹поле›»
«Тип значения» Способы задать значение добавленного условия через « — », например «Из справочника «Бренды» — Ручной ввод, текст»; у коробочного пусто
«Где доступно» «Применяется и не применяется», «Только применяется» или «Только не применяется»
«Показывать в акции» Переключатель: предлагать ли условие в новых акциях

Порядок строк меняется перетаскиванием — в этом порядке условия стоят на вкладке «Условия» акции. Щелчок по строке добавленного условия открывает его форму, правый щелчок — меню «Изменить» и «Удалить условие». Строка коробочного условия форму не открывает.

Все правки — добавление, изменение, скрытие, порядок, удаление — копятся на экране и сохраняются одним запросом по кнопке «Сохранить». Если хотя бы одна правка не проходит проверку, не сохраняется ничего. При закрытии или перезагрузке вкладки браузера с несохранёнными правками браузер предупреждает об их потере.

Коробочные условия

Продукт поставляется с девятью коробочными условиями: «Категории товаров», «Артикулы (SKU)», «Регион», «Город», «Магазин», «Мерчант», «Канал продаж», «Сегменты клиентов», «Сумма чека». У коробочного условия можно только скрыть его переключателем «Показывать в акции» и переставить; название, подсказки, зоны и правило сравнения зашиты в продукт.

Условия «Участие в акциях», «Теги клиента», «Статус клиента», «Уровень клиента» и «Баланс баллов» в реестр не входят: на вкладке «Условия» акции они показываются всегда и на своих местах.

Добавленное условие

Кнопка «Добавить» открывает окно «Новое условие» (у существующего — «Изменить условие»):

Поле Назначение
«Название» Подпись условия в акции, обязательное, до 255 символов
«Добавить подсказку» Чекбокс открывает поля «Подсказка, когда акция применяется» и «Подсказка, когда акция не применяется» (до 1000 символов) — они показываются у названия условия в своей зоне акции
«Выбрать переменную» Источник значения: «Из входящего события» или «Из профиля клиента»
«Название переменной» / «Поле профиля» Имя переменной покупки или поле профиля клиента
«Способы задать значение» Один или несколько способов (см. ниже)
«Где доступно» «Обе зоны», «Только «Акция применяется, если»» или «Только «Не применяется, если»»

Кнопка «Готово» кладёт условие в список экрана — в базу оно попадает только по «Сохранить».

Код условия собирается сам: purchase.<переменная> для переменной покупки и customer.<код поля> для поля профиля. Одна переменная — одно условие, регистр не различается: повтор отклоняется ещё в форме — «Переменная «X» уже используется в условии «Y»».

Переменная из входящего события

Касса или внешняя система передаёт в покупке произвольные переменные «название — значение»: в чеке кассы — на весь чек и у каждой позиции (attributes), в событии покупки — на всю покупку. Формат переменных в покупке — в разделе «Интеграции». Название переменной — латиница, цифры, «» и «-», не длиннее 64 символов (иначе «Латиница, цифры, «» и «-», не больше 64 символов»).

Под полем «Название переменной» — статистика прихода переменной за последние 7 дней: сколько покупок пришли с ней, где она приходит («в позициях чека», «в чеке», «в позициях чека и в чеке») и последние значения, например «За 7 дней: 12 покупок, в позициях чека. Последние значения: 105, 106, 107». Если у условия выбран тип значения «Число» или «Дата» и за эти дни приходили значения, которые так не разбираются, статистика показывает ещё «Не разобрано как число или дата: N». Если переменная не приходила — «За 7 дней покупок с этой переменной не было. Проверьте переменную и интеграцию»: ошибка в названии иначе незаметна, а акция просто не сработает. Семь дней считаются по операционным дням программы, включая текущий.

Поле профиля клиента

В списке «Поле профиля» — неархивные поля активной версии настройки профиля клиента, на которых можно построить условие: хранимые в системе поля типа «строка», «число», «дата» или список из справочника. Системные поля и поля, значения которых приходят из внешнего источника, не подходят. Способы задать значение ограничены типом поля:

Тип поля Допустимые способы
Строка «Ручной ввод», текст
Число «Ручной ввод» и «Диапазон», число
Дата «Ручной ввод» и «Диапазон», дата
Список из справочника «Из справочника» — справочник самого поля, сравнение по коду

Поле профиля, на котором построено условие, удалить нельзя: сначала удалите условие здесь.

Способы задать значение

Можно отметить несколько способов — в акции маркетолог выберет, каким задать значение. Нужен хотя бы один («Отметьте хотя бы один способ»).

Способ Настройки Как сравнивается
«Из справочника» «Название справочника» — любой справочник продукта; «Переменная» — с чем сравнивается значение: «Код» или «Название» записи; «Можно выбрать несколько значений» значение переменной равно коду или названию одной из выбранных записей
«Ручной ввод» «Тип значения»: «Текст», «Число» или «Дата» значение равно одному из введённых
«Диапазон» «Тип значения»: «Число» или «Дата» значение попадает в границы, границы включительны

Значение сравнивается с переменной без учёта регистра и пробелов по краям; если значений несколько, условие выполнено, когда переменная совпала с любым из них. Число передаётся с десятичной точкой без разделителей разрядов, дата — в формате ГГГГ-ММ-ДД; значение другого вида считается отсутствующим.

Изменение условия, которое уже используется

Если условие заполнено хотя бы в одной акции (в любом статусе, в том числе в архиве), у него нельзя изменить источник, переменную или поле профиля, снять или изменить способ, выбранный в акциях (с его справочником и полем сравнения), и снять зону, в которой условие заполнено. Форма у такого условия строже: недоступны источник и переменная, настройки всех уже сохранённых способов и варианты «Где доступно», которые сняли бы сохранённую зону. Отказ сервера показывается текстом «Условие «X» уже используется в акциях — эти поля изменить нельзя». Название, подсказки, порядок и показ меняются всегда; добавить способ или зону можно.

Скрытие условия

Выключенный переключатель «Показывать в акции» убирает условие из новых акций. В акциях, где условие уже заполнено, оно продолжает действовать и показывается серой строкой с тегом «Скрыто в настройке» — см. «Условия, скрытые в настройке».

Удаление условия

«Удалить условие» — из меню строки или кнопкой в форме условия:

  • ещё не сохранённое условие удаляется сразу — «Условие «X» удалено — оно ещё не было сохранено»;
  • сохранённое — после подтверждения «Удаление условия»; если условие заполнено в акциях, в подтверждении предупреждение «Условие заполнено в акциях. Если среди них есть работающие, сохранение отклонит удаление».

Удаление проверяется при «Сохранить». Условие, заполненное в акциях со статусом «Активна», «Пауза» или «Запланирована», удалить нельзя: открывается окно «Удаление условия» — «Условие используется в акциях. Чтобы удалить его, уберите его из этих акций или дождитесь их завершения» — с таблицей «Акция» (ссылка на акцию), «Статус», «Период действия». Все такие условия возвращаются в список, остальные правки экрана остаются несохранёнными.

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

Одновременная правка

Если реестр успел изменить другой администратор, сохранение отклоняется, и над списком появляется сообщение «Настройку акции изменил другой пользователь. Обновите страницу и повторите.» Правки экрана при этом остаются, а «Отменить изменения» возвращает экран к свежей версии реестра.

Предупреждение при запуске акции

При запуске кнопкой «Запустить» в шапке формы акции с дополнительным условием на переменную покупки система проверяет, приходила ли переменная за последние 7 дней. Если нет, окно запуска предупреждает: «Переменная «X» за последние 7 дней не приходила в покупках — условие «Y» может не сработать». Запуск это не блокирует. Запуск из каталога акций и со страницы акции в режиме чтения такого предупреждения не показывает.

REST API

Метод и путь Право Назначение
GET /v1/admin/promotion-criteria LOYALTY_DICTIONARY_READ Реестр целиком: revision и условия с code, origin (BOX/CUSTOM), label, hintInclude, hintExclude, source (PURCHASE/CUSTOMER), attributeKey, methods, zones, visible, sortOrder, usedInPromotions
PUT /v1/admin/promotion-criteria LOYALTY_DICTIONARY_WRITE Сохранить реестр целиком и атомарно: {criteria: [...]} в порядке формы, новое условие — без code, отсутствующее в списке добавленное условие удаляется. Ревизия из GET — в заголовке If-Match
GET /v1/admin/promotion-criteria/attribute-stats?key= LOYALTY_DICTIONARY_READ Статистика переменной покупки за 7 операционных дней, включая текущий (periodDays): число покупок, из них с переменной у позиций и на весь чек, unparsed по типам NUMBER и DATE, до пяти последних значений
GET /v1/promotions/criteria LOYALTY_PROMOTION_READ Условия для вкладки «Условия» акции: только показываемые и исполняемые, в порядке реестра
GET /v1/promotions/{id}/criteria/attribute-activity LOYALTY_PROMOTION_READ По каждому дополнительному условию акции на переменную покупки — число покупок с ней за те же 7 операционных дней

Способ в methods — {kind, refDict, refField, multiple, valueType}: kind — REF_LIST, MANUAL или RANGE; refDict и refField (CODE/NAME) — у REF_LIST; valueType — TEXT, NUMBER или DATE (у RANGE — только NUMBER и DATE). Зоны — INCLUDE и EXCLUDE.

Статистика переменных хранится с запасом над окном в 7 дней — срок задаёт loyalty.purchase-attributes.stats-retention (по умолчанию P30D, 30 дней). Уборку по сроку включает расписание loyalty.purchase-attributes.cleanup-cron; по умолчанию оно выключено.

Ошибки

Код HTTP Когда
validation_failed 400 Пустое название или зоны, у нового условия нет источника или переменной, неизвестный код, повтор кода в запросе; недопустимое название переменной в запросе статистики attribute-stats
criterion_box_immutable 422 Изменение или удаление коробочного условия, кроме показа и порядка
criterion_key_invalid 422 Недопустимое название переменной; поля профиля нет или оно в архиве
criterion_key_duplicate 422 Переменная уже занята другим условием
criterion_method_invalid 422 У добавленного условия нет способов, способ повторён, справочник неизвестен, тип значения недопустим или способ не подходит полю профиля
criterion_locked_after_use 422 Изменение полей условия, заполненного в акциях: источник, переменная, справочник, поле сравнения, использованный способ, заполненная зона
criterion_in_use 409 Удаление условий, заполненных в работающих акциях; в теле — все такие условия criteria [{code, label}] и акции promotions, каждая один раз
version_conflict 409 Реестр уже изменил другой администратор
version_required 428 Сохранение без заголовка If-Match
profile_field_used_in_criterion 409 Удаление поля профиля, на котором построено условие; в теле — условия criteria [{code, label}], в пакетном удалении полей — то же в строке errors[]

В отказах criterion_box_immutable, criterion_locked_after_use и criterion_method_invalid условие, на котором остановилась проверка, приходит в теле полем criterion {code, label}; у criterion_key_duplicate в этом поле — условие, которое уже заняло переменную.