Баллы
Программа лояльности позволяет начислять и списывать бонусные баллы вашим контактам — за заказы, возвраты, участие в акциях, регистрацию или вручную — и использовать эти данные для персонализации коммуникаций.
Баллы в enKod можно:
- начислять и списывать через JS-методы или через API;
- видеть в виде баланса в карточке контакта;
- отслеживать по каждому начислению/списанию в истории событий контакта;
- использовать в качестве условия при сегментации контактов для рассылок.
Обратите внимание: функционал программы лояльности недоступен по умолчанию и требует подключённого модуля «Трекинг». Чтобы включить программу лояльности для своего аккаунта, обратитесь к своему персональному менеджеру или на experts@enkod.io.
Пока функционал не включён, карточка контакта, история событий и дерево условий сегментации выглядят как обычно, без блоков и условий, описанных в этой статье.
Ограничения баланса баллов
Независимо от способа начисления/списания (JS-метод, API):
- к начислению/списанию можно передать только целое положительное число;
- баланс баллов не может быть отрицательным — списать больше, чем есть на балансе, нельзя;
- максимально допустимое значение баланса — 100 000 баллов. Начисление, после которого баланс превысил бы этот порог, выполнено не будет.
Начисление и списание баллов
Передать событие начисления или списания баллов можно двумя способами — JS-методом (устанавливается на сайт) или через API. Выбор способа зависит от того, как у вас уже настроена интеграция с enKod.
JS-методы
Используется тот же скрипт, что и для остальных событий трекинга на сайте. Обратите внимание, что основной скрипт также необходимо разместить на сайте.
Начисление баллов:
<script type="text/javascript">
ekEvents.push('pointsAdd', {email:'my@email.com', amount: N, reason: 'reason', orderId: 'Id'})
</script>
Списание баллов:
<script type="text/javascript">
ekEvents.push('pointsSpend', {phone:'79000000000', amount: N, reason: 'reason', orderId: 'Id'})
</script>
Параметры методов
| Параметр | Обязательность | Описание |
|---|---|---|
| email / phone | Обязателен один из двух | Идентификатор контакта |
| amount | Обязательный | Количество баллов к начислению/списанию. Целое положительное число |
| reason | Необязательный | Причина операции — значения см. в таблице ниже. Если передать пустое или недопустимое значение, оно будет проигнорировано (сохранится пустая причина), метод при этом отработает без ошибки |
| orderId | Обязателен при reason = order или orderReturn | Номер заказа для связи операции с событием заказа. Если заказа с таким номером не существует — ошибки не будет, а orderId всё равно сохранится |
Допустимые значения reason
| Значение | Причина | Начисление | Списание |
|---|---|---|---|
| order | Заказ | ✓ | ✓ |
| orderReturn | Возврат заказа | ✓ | ✓ |
| promotion | Акция | ✓ | — |
| registration | Регистрация | ✓ | — |
| manual | Ручная корректировка | ✓ | ✓ |
API-метод Для начисления, списания и получения баланса баллов доступны отдельные API-методы. Подробное описание параметров, формата ответа и возможных ошибок — в документации по API.
Баллы в карточке контакта
Если функционал программы лояльности включён для аккаунта, в карточке контакта отображается блок с текущим балансом бонусных баллов. Значение в нём меняется автоматически при начислении/списании баллов JS-методом или через API. Баланс в карточке всегда представлен целым неотрицательным числом, с учётом ограничений выше.
История событий: начисление и списание баллов
Место: Контакты → Карточка контакта → таб «История событий» Каждая операция с баллами добавляется в историю событий контакта отдельной записью — «Начисление баллов» или «Списание баллов», независимо от того, каким способом она была передана (JS-методом или через API).
Начисление баллов
Бейдж события:
- количество баллов больше 0 — зелёный бейдж, формат «+N баллов»
- количество баллов равно 0 — серый бейдж, формат «0 баллов»
Причина операции отображается в событии на основе переданного параметра reason:
| Причина | Как отображается | Кнопка «Подробнее» | Что показывает |
|---|---|---|---|
| order | Заказ | есть | номер заказа, если он был передан |
| orderReturn | Возврат заказа | есть | номер заказа, если он был передан |
| promotion | Акция | нет | — |
| registration | Регистрация | нет | — |
| manual | Другое | нет | — |
| не передано | — | нет | — |
Списание баллов
Бейдж события:
- количество баллов больше 0 — красный бейдж, формат «-N баллов»
- количество баллов равно 0 — серый бейдж, формат «0 баллов»
| Причина | Как отображается | Кнопка «Подробнее» | Что показывает |
|---|---|---|---|
| order | Заказ | есть | номер заказа, если он был передан |
| orderReturn | Возврат заказа | есть | номер заказа, если он был передан |
| manual | Другое | нет | — |
| не передано | — | нет | — |
Фильтр и поиск
События начисления и списания баллов учитываются в общем фильтре «Все события» в истории событий контакта.
По этим событиям также работает поиск — по количеству баллов и по номеру заказа (orederId).
Сегментация по баллам
В дереве условий, в ветке По данным пользователя, доступна группа условий По баллам с тремя условиями: Баланс, Начислено, Списано.
Подусловия внутри одного условия работают между собой через И.
Баланс
Баллов на счету — оператор больше / меньше / равно / не равно — число.
Начислено
Начислено баллов — оператор больше / меньше / равно — число.
Опциональные подусловия:
- по периоду — работает по общей логике подусловий по времени, уже используемой в других условиях сегментации (между датами / ровно / меньше / больше);
- по причине — заказ, возврат заказа, акция, регистрация, ручная корректировка.
Списано Списано баллов — оператор больше / меньше / равно — число. Опциональные подусловия:
- по периоду — по той же общей логике подусловий по времени;
- по причине — заказ, возврат заказа, ручная корректировка.
Валидация полей
Поле для ввода числа в условиях «Баланс», «Начислено» и «Списано» принимает только целые положительные числа — так же, как поле amount при начислении и списании баллов:
- нельзя ввести отрицательное или дробное число;
- нельзя ввести значение больше 100 000 (максимально допустимого баланса);
- нельзя оставить обязательное поле пустым или ввести туда буквы/спецсимволы.
При нарушении этих правил или попытке пересчитать/сохранить сегмент с незаполненным обязательным полем — поле подсвечивается красной рамкой, появляется соответствующее уведомление.