Уведомления о бонусах
Содержание раздела
Раздел «Уведомления» (меню «Коммуникации», сразу после «Шаблонов») — готовые сообщения клиенту о движении бонусов: «Начислено бонусов: 150. Баланс: 1 250» после покупки, сообщение о списании, о пересчёте бонусов при возврате заказа и о сгорании. Организация включает нужный вид, выбирает каналы и шаблоны — и платформа сама отправляет клиенту сообщение после каждой подходящей операции. Собирать для этого цепочку не нужно: «Цепочки» остаются для нестандартных сценариев с условиями, паузами и A/B-тестами.
Важно: по-настоящему доставляются push-уведомления, письма, SMS и сообщения в Telegram — push после того, как администратор организации подключит Firebase, письма — после подключения почтового сервера организации, SMS — после подключения аккаунта организации у SMS-провайдера (сейчас — Eskiz.uz), Telegram — после подключения бота организации, все в разделе «Каналы» (см. «Подключение push-уведомлений», «Подключение email (SMTP)», «Подключение SMS» и «Telegram»). Пока канал не подключён, сообщения завершаются ошибкой «Email не подключён», «SMS не подключены» или «Бот не подключён», и в режиме «первый доступный» уведомление уходит в следующий канал. Если SMS-провайдер модерирует тексты, текст SMS-шаблона уведомления нужно утвердить у него (у Eskiz — см. «Eskiz.uz: модерация текстов»). У Viber и WhatsApp пока нет адресов клиентов — ошибка «Нет адреса получателя».
Зачем это бизнесу#
- Клиент видит пользу программы сразу. Сообщение «Начислено бонусов: 150» после покупки напоминает о бонусах и мотивирует вернуться, чтобы их потратить.
- Включил — работает. Не нужно разбираться в конструкторе цепочек: вид включается переключателем, шаблон создаётся одной кнопкой с готовым текстом.
- Одно сообщение на покупку. Если в заказе бонусы и списаны, и начислены, клиент получает одно сообщение, а не два подряд.
- Экономия на платных каналах. В режиме «первый доступный» клиент с приложением получит бесплатный push, а SMS уйдёт только тем, кому push отправить нельзя.
- Прозрачность. Каждое уведомление видно в журнале сообщений клиента: в какой канал ушло, с каким результатом и было ли отправлено в резервный канал.
Страница «Уведомления»#
Заголовок страницы — «Уведомления», подзаголовок — «Сообщения клиенту о движении бонусов: включите вид, выберите каналы и шаблоны». На странице четыре карточки — по одной на вид уведомления. В каждой карточке:
- в шапке — название вида и переключатель «Включено» / «Выключено»;
- описание: когда клиент получает сообщение;
- «Каналы» — по какому каналу и с каким шаблоном уходит сообщение;
- «Как отправлять» — первый доступный канал или все каналы сразу;
- «Источники операций» и «Минимальная сумма» — только у начисления и списания;
- предупреждение, если то же сообщение уже отправляет опубликованная цепочка;
- «Пример» — как выглядит сообщение первого канала с примерами вместо переменных;
- ссылка «Какие переменные подставляются» и строка «Изменено …» с датой и автором последнего сохранения («Ещё не настраивалось» — вид ни разу не сохраняли);
- кнопка «Сохранить».
Каждая карточка сохраняется отдельно своей кнопкой «Сохранить», которая становится активной, как только в карточке что-то изменено. Переключатель «Включено» тоже сохраняется этой кнопкой.
Четыре вида уведомлений#
| Вид | Когда клиент получает сообщение | Текст по умолчанию (стартовый текст платформы) |
|---|---|---|
| Начисление бонусов | После начисления: за покупку, через API интеграции, ручной коррекцией из раздела «Бонусы» или действием цепочки — какие из них учитывать, задают «Источники операций» | «Начислено бонусов: {{bonus.accrued}}. Баланс: {{bonus.balance}}» |
| Списание бонусов | После списания: те же источники | «Списано бонусов: {{bonus.spent}}. Баланс: {{bonus.balance}}» |
| Возврат заказа | При возврате заказа: начисленные за него бонусы отменены, а списанные возвращены на счёт | «Бонусы по заказу {{order.number}} пересчитаны. Баланс: {{bonus.balance}}» |
| Сгорание бонусов | Когда у клиента сгорают бонусы по сроку; несколько сгораний за раз — одно сообщение | «Сгорело бонусов: {{bonus.expired}}. Баланс: {{bonus.balance}}» |
Одно сообщение на заказ. Покупка, в которой клиент и потратил, и заработал бонусы, даёт одно сообщение — о начислении, если вид «Начисление бонусов» включён и подходит по источникам и порогу. В нём заполнена и переменная «Списано бонусов» ({{bonus.spent}}) — её можно вывести в тексте: «Списано: 200, начислено: 50». Если начисление выключено или не проходит по порогу, уходит сообщение о списании. Операции без заказа — например, начисление через API интеграции — уведомляются каждая отдельно.
Без уведомлений всегда: операции на нулевую сумму, перенос бонусов при объединении дублей, откат действий цепочки при отмене её выполнения и операции заполнения демо-данными — демо-клиенты сообщений не получают, даже если вид включён до заполнения.
Каналы и их порядок#
Кнопка «Добавить канал» предлагает каналы, которых в карточке ещё нет: Push, SMS, Email, Viber, Telegram, WhatsApp. Канал добавляется строкой в конец списка. В строке канала:
- номер и название — «1. Push»: номер — порядок попыток;
- «Шаблон» — шаблон этого канала (подробнее — ниже);
- «Согласие клиента» — «Только с согласием» или «Сервисное: всем, кроме отказавшихся»;
- стрелки «Поднять канал» и «Опустить канал» и крестик «Убрать канал».
Сменить канал в строке нельзя — уберите строку и добавьте нужный канал. Подсказка над списком напоминает: «Порядок каналов — порядок попыток. Рекомендуем: Push → SMS → Email». У строки Push появляется предупреждение, если push организации не подключены или ключ Firebase отклонён, у строки Email — если email организации не подключён, почтовый сервер отклонил настройки или подключение не проверено, у строки SMS — если SMS не подключены («SMS не подключены — сообщения по этому каналу завершатся ошибкой»), SMS-провайдер отклонил настройки, на балансе у провайдера нет средств или аккаунт не в рабочем статусе (справкой — если подключение не проверено или средств мало; в текстах — название подключённого провайдера, например Eskiz.uz), у строки Telegram — если ботов нет («Telegram не подключён — сообщения по этому каналу завершатся ошибкой «Бот не подключён»») или Telegram отклонил токены всех ботов (справкой — если обновления основного бота получает другой сервер или Telegram не может их доставить: сообщения уходят, но новые подписчики привязываются с задержкой или не привязываются). Если в списке есть Viber или WhatsApp, под ним — подсказка, что эти каналы пока не подключаются: сообщение в них завершится ошибкой «Нет адреса получателя», а в режиме «Первый доступный канал» уйдёт в следующий канал. К Push, Email, SMS и Telegram подсказка не относится — об их подключении предупреждают строки этих каналов; пока канал не подключён, сообщения завершаются ошибкой «Email не подключён», «SMS не подключены» или «Бот не подключён», резерв срабатывает так же.
Как отправлять#
| Режим | Что происходит |
|---|---|
| «Первый доступный канал, остальные — резерв (рекомендуется)» | Одно сообщение на событие: в первый по порядку канал, доступный клиенту. Если сообщение не удалось отправить из-за канала — нет приложения, push, email, SMS или бот Telegram не подключены, ключ, настройки почтового сервера, подключение SMS или токен бота отклонены, нет адреса, номер не подходит SMS-провайдеру, ящика не существует, оператор не доставил SMS, SMS-провайдер не пропустил текст без модерации, клиент заблокировал бота Telegram, провайдер или почтовый сервер отклонил сообщение, — в течение 15 минут платформа отправит то же уведомление в следующий доступный канал |
| «Во все выбранные каналы» | Сообщение уходит в каждый доступный канал — например, push и письмо-квитанция. Резервной отправки нет |
Канал доступен клиенту, если есть основание по согласию (ниже) и адрес:
| Канал | Что нужно |
|---|---|
| Push | Телефон с приложением организации и подключёнными push — как в блоке «Приложение» карточки клиента |
| SMS, Viber, WhatsApp | Телефон в карточке клиента |
| Email в карточке клиента | |
| Telegram | Активный чат хотя бы с одним ботом организации — как в разделе «Telegram» на вкладке «Идентификаторы» карточки клиента |
Подключён ли провайдер канала, при выборе не проверяется: сообщение в канал без провайдера создаётся и завершается ошибкой, после чего в режиме «первый доступный» уведомление уходит дальше. Если клиенту не доступен ни один канал, уведомления нет — и записи в журнале сообщений тоже.
Telegram в каскаде. Бот уведомления выбирается по правилам — основной, иначе тот, с которым клиент связался последним (см. «Несколько ботов и основной бот»); выбрать бота для вида уведомления нельзя. Клиент без активного чата с ботами пропускает Telegram без записи в журнале, как клиент без приложения — push. Если клиент заблокировал бота, сообщение получает ошибку «Клиент заблокировал бота», и уведомление уходит в следующий канал. Удобный порядок для организаций с ботом — Push → Telegram → SMS: бесплатные каналы раньше платного.
Пример: каналы Push → SMS → Email. Клиент с приложением получает push. Клиент без приложения — сразу SMS: push для него недоступен и пропускается без записи в журнале. Если push у организации не подключены, push-сообщение завершится ошибкой «Push не подключены», и уведомление уйдёт в SMS с пометкой «резервный канал». Если и SMS не подключены, номер клиента не подходит SMS-провайдеру или провайдер не пропустил текст без модерации, SMS завершится ошибкой, и уведомление уйдёт письмом.
Если почтовый сервер или SMS-провайдер временно недоступны, письмо или SMS повторяется до 4 часов и резервный канал не запускается: временный сбой — не причина слать клиенту то же уведомление другим способом. После 4 часов — ошибка «Почтовый сервер был недоступен, повторы не помогли» или «SMS-провайдер был недоступен или не хватило баланса, повторы не помогли». Так же ждёт пополнения SMS, если на балансе у провайдера кончились средства. Отказы, которые приходят только после попытки отправки («ящика не существует», «сервер отклонил письмо», оператор не доставил SMS), обычно приходят в течение минуты и тоже запускают резерв, но только если уложились в 15 минут от первой отправки уведомления. SMS, которое оператор не смог доставить за срок жизни («Абонент не появился в сети, срок жизни SMS истёк»), резерв не запускает.
Ссылка отписки. В каждом письме уведомления есть ссылка «Отписаться». Клиент, отписавшийся по ней, — это явный отказ: письма организации, в том числе уведомления в режиме «Сервисное», ему больше не уходят, а в режиме «первый доступный» уведомление сразу идёт в следующий канал.
Согласие клиента#
- «Только с согласием» (по умолчанию) — как у «Кампаний» и цепочек: канал доступен, если на вкладке «Подписки» карточки клиента канал в положении «Подписан».
- «Сервисное: всем, кроме отказавшихся» — сообщение уйдёт и клиентам без согласия на канал, кроме тех, кто от канала отказался: сам выключил его в мобильном приложении, отписался от писем по ссылке в письме или кому оператор перевёл канал в «Отписан» на вкладке «Подписки». Выбор открывает подтверждение «Сервисная отправка в канал …»: «Сообщение уйдёт и клиентам без согласия на канал — всем, кроме явно отказавшихся. Текст шаблона не должен содержать рекламы». «Отмена» оставляет «Только с согласием».
Сообщение об изменении баланса — информационное, а не реклама, поэтому сервисный режим допустим. Но решение и ответственность — за организацией: не добавляйте в такие шаблоны акции и предложения.
Отписка по умолчанию — не отказ. Платформа заводит каждому новому клиенту строки подписок по всем активным каналам в положении «Отписан». Пока такую строку никто не менял, «Сервисное» считает, что решения клиента нет, и отправляет сообщение — так же, как клиенту, у которого строки канала нет вовсе (например, канал включили в справочнике «Каналы» уже после создания клиента). Отказом считается только «Отписан», выставленный оператором или самим клиентом — в приложении или по ссылке отписки в письме. «Только с согласием», рассылки и цепочки по отписке по умолчанию, как и прежде, не отправляют.
На вкладке «Подписки» карточки клиента такая строка помечена «По умолчанию». Если клиент попросил не писать ему, а канал у него «Отписан» по умолчанию, нажмите «Отписать» в карточке клиента — отказ будет записан, и «Сервисное» перестанет отправлять в этот канал.
Источники операций и минимальная сумма#
Только у начисления и списания.
- «Источники операций» — о каких операциях уведомлять: «Покупки», «Внешний API», «Ручные корректировки», «Цепочки». По умолчанию отмечены первые три. Подсказка под полем: «Цепочки с начислением часто сами отправляют сообщение — включайте их, только если сообщение не дублируется». Хотя бы один источник должен быть отмечен.
- «Минимальная сумма» — «Уведомлять только об операциях на эту сумму и больше; пусто — о любой ненулевой». Сумма больше нуля и с точностью сумм организации: при выключенных копейках (см. «Суммы и округление») — целая. Сравнивается с суммой начисления или списания по заказу целиком.
У «Возврата заказа» и «Сгорания бонусов» этих полей нет: такие сообщения уходят при любом источнике и любой ненулевой сумме.
Шаблоны и «Создать шаблон»#
В поле «Шаблон» — активные шаблоны этого канала из раздела «Шаблоны», с поиском по названию. Выбранный, но выключенный шаблон подписан «(выключен)», удалённый — «Шаблон не найден». Ссылка «Открыть шаблон» ведёт в редактор шаблона — у тех, кто может редактировать шаблоны.
Пока в строке нет годного шаблона (не выбран, выключен, удалён или другого канала), рядом с полем есть кнопка «Создать шаблон». Она создаёт обычный шаблон этого канала — копию текста по умолчанию, который для вида и канала задаёт платформа (таблица выше — стартовые тексты), — и сразу выбирает его: появится сообщение «Шаблон «…» создан и выбран. Сохраните уведомление». Нажмите «Сохранить» в карточке, иначе выбор не сохранится.
- Название шаблона — например, «Уведомление: начисление бонусов (PUSH)»; каждое нажатие создаёт новый шаблон.
- Язык копии — по настройке «Язык» организации (см. «Основные настройки»): узбекский — на узбекском, английский — на английском («Bonuses accrued: …»), любой другой — на русском. Если на языке организации у платформы текста нет, копируется русский.
- Тексты по умолчанию ведёт Администратор платформы и может их менять: «Создать шаблон» всегда копирует текущий текст платформы. Уже созданный шаблон — ваш: правка текста платформой его не перепишет. Исключение — администратор платформы может отдельно обновить текст у организаций, которые свою копию не меняли; изменённые вами шаблоны при этом не трогаются.
- Если у платформы нет текста для этого вида и канала — ни на языке организации, ни на русском, — шаблон не создаётся, а появляется сообщение «Текста по умолчанию для этого канала нет — обратитесь к администратору платформы». Пока текста нет, шаблон можно написать самим в разделе «Шаблоны».
- У push — заголовок («Бонусы начислены», «Бонусы списаны», «Возврат заказа», «Бонусы сгорели») и текст, у Email — тема и текст, у SMS и мессенджеров — только текст (в Telegram-шаблон можно добавить разметку — жирный, ссылки, см. «Telegram-шаблон»). В узбекском тексте SMS — обычный апостроф (
bo'yicha): так SMS остаётся латиницей и укладывается в одну часть. - Если SMS-провайдер модерирует тексты (у Eskiz — в кабинете my.eskiz.uz), текст SMS-шаблона перед первой отправкой нужно утвердить у него — готовый вариант для модерации есть на странице шаблона (см. «Шаблоны»).
- Тексты нейтральны к числу: «Начислено бонусов: 5», а не «5 баллов». Хотите «баллы», «очки» или «кэшбэк» — отредактируйте текст шаблона по ссылке «Открыть шаблон». Изменение шаблона сразу действует на новые уведомления.
Шаблон, выбранный во включённом уведомлении, нельзя удалить из раздела «Шаблоны» — сначала выберите в уведомлении другой шаблон или выключите вид.
Переменные#
Ссылка «Какие переменные подставляются» внизу карточки открывает справочник переменных именно этого вида.
| Переменная | Что подставится | Виды |
|---|---|---|
{{customer.first_name}}, {{customer.last_name}}, {{customer.email}}, {{customer.phone}} |
Имя, фамилия, email и телефон клиента | все |
{{customer.card_number}} |
Номер карты лояльности: карты заказа, иначе последней привязанной действующей | все |
{{tier.name}} |
Уровень лояльности клиента | все |
{{bonus.balance}} |
Баланс после операции | все |
{{bonus.amount}} |
Главная сумма вида: начислено, списано, отменено начисленных или сгорело | все |
{{bonus.accrued}}, {{bonus.spent}} |
Начислено и списано (0, если такой операции не было) |
все |
{{tenant.name}} |
Название организации (до 30 символов) | все |
{{order.number}}, {{order.total}} |
Номер заказа с чека (иначе номер заказа во внешней системе) и сумма заказа — только если операция связана с заказом | начисление, списание, возврат заказа |
{{bonus.cancelled}}, {{bonus.returned}} |
Отменено начисленных за заказ и возвращено на счёт списанных | возврат заказа |
{{bonus.expired}} |
Сгорело бонусов | сгорание |
Суммы приходят в формате организации: «1 250» с пробелом между разрядами, «12,50» — с копейками; целые суммы без «,00». Если организация работает без копеек, все суммы целые. В SMS разряды пробелом не разделяются — «1250», в том числе когда SMS уходит резервным каналом после отказа push: так текст совпадает с образцом, утверждённым у SMS-провайдера.
«Пример» показывает шаблон первого канала с примерами значений: «Пример: «Бонусы начислены — Начислено бонусов: 500. Баланс: 1 500»». Это примеры значений из справочника переменных (название организации в них — «Acme»); реальное сообщение подставит данные клиента, операции и настоящее название организации.
Предупреждение о цепочках#
Если в организации опубликована цепочка с событием «Бонусы начислены» (для начисления) или «Бонусы списаны» (для списания) и действием «Отправить сообщение», включённая карточка показывает предупреждение: «1 опубликованная цепочка тоже отправляет сообщение по этому событию. Клиент получит два сообщения. Выключите отправку в цепочке или не включайте уведомление:» — и названия цепочек ссылками (у тех, кто может открывать цепочки). Сохранение предупреждение не блокирует: решите, какой путь оставить.
Сохранение и ошибки#
- Включить вид без каналов нельзя — под заголовком «Каналы» появится «Добавьте хотя бы один канал, чтобы включить уведомление».
- У каждого канала нужен шаблон — «Выберите шаблон или создайте его».
- Шаблон проверяется при сохранении. Если шаблон успели удалить или выключить или он другого канала, строка канала подсветится красной рамкой, а под шаблоном — «Шаблон не найден — выберите другой», «Шаблон выключен — выберите другой» или «Шаблон другого канала — выберите шаблон этого канала».
- Сервис сообщений недоступен. Шаблоны включённого уведомления проверяются в сервисе сообщений, поэтому сохранить его в это время нельзя — в карточке появится предупреждение. Выключить вид можно и в это время. Если недоступен список шаблонов, над карточками — предупреждение с кнопкой повтора: настройки видны, но выбрать или создать шаблон нельзя.
- После успешного сохранения — «Уведомление сохранено». Изменения начинают действовать в течение 30 секунд.
Где видно, что ушло: вкладка «Сообщения»#
Каждое отправленное уведомление — строка на вкладке «Сообщения» карточки клиента:
- Источник — «Уведомление · Начисление бонусов» (вид уведомления), ссылка ведёт на страницу «Уведомления»;
- пометка «резервный канал» под источником — сообщение отправлено, потому что предыдущее сообщение этого уведомления не удалось отправить;
- Статус у SMS: «Отправлено» — SMS-провайдер принял SMS, затем «Доставлено» или «Ошибка» по отчёту оператора;
- Причина у ошибок каналов: причины push («Нет приложения…», «Push не подключены» и другие), причины писем («Email не подключён», «Нет адреса или сервер ответил, что ящика не существует», «Почтовый сервер отклонил письмо» и другие — см. «Каналы»), причины SMS («SMS не подключены», «Текст не прошёл модерацию у SMS-провайдера», «Нет номера, номер не подходит провайдеру или оператор не доставил SMS…» и другие — см. «Каналы»), причины Telegram («Клиент заблокировал бота», «Бот не подключён» и другие — см. «Что видно в журнале сообщений») и «Нет адреса получателя» у Viber и WhatsApp;
- Статус у Telegram — «Отправлено»: Telegram принял сообщение и о доставке не сообщает.
Если записи об ожидаемом уведомлении нет, сообщение не создавалось. Проверьте по порядку: включён ли вид и сохранён ли он; отмечен ли источник операции (например, «Цепочки» по умолчанию выключены); не меньше ли сумма «Минимальной суммы»; есть ли у клиента согласие на канал («Подписки») и адрес — приложение с подключёнными push, телефон, email, активный чат с ботом Telegram; не было ли в заказе ещё и начисления — тогда ушло одно сообщение о начислении.
Кто что может#
| Роль | Доступ к разделу |
|---|---|
| Администратор платформы, Администратор организации, Маркетолог (MANAGER) | Просмотр и изменение: включение, каналы, шаблоны, «Создать шаблон» |
| Наблюдатель | Только просмотр: плашка «У вас доступ только для просмотра», поля заблокированы, кнопок изменения нет |
| Оператор, Поддержка | Раздел не виден |
Ссылка «Открыть шаблон» видна тем, кто может редактировать шаблоны, ссылки на цепочки в предупреждении — тем, кто может открывать цепочки.