Программа лояльности · Мобильное приложение

Программа лояльности с кэшбэком для сети готовой еды

Damdala — сеть готовой еды в Алматы. Мы собрали для неё бонусную программу целиком: мобильное приложение на iOS и Android, сервер с механикой начислений, кассовый коннектор и админку, где правила лояльности меняются без разработчика. Ниже — кликабельное демо: можно пройти путь гостя от регистрации до оплаты бонусами.

FlutterNode.js + PostgreSQLКэшбэк и бонусыApple WalletAI-админка
Damdala
КлиентDamdala · сеть готовой еды
УслугиПриложение · Backend · Админка · Интеграция с кассой
НаправлениеHoReCa · Программы лояльности
ПлатформыiOS · Android · Web
Живое демо

Пройдите путь гостя — прямо здесь

Это реальные экраны приложения. Нажимайте на них: каталог, карточка блюда с ценой в бонусах, оплата бонусами со слайдером, QR для кассы, история начислений. Рядом — кнопка, которая открывает рабочую версию приложения на живом сервере.

Что сделали

Из чего состоит программа лояльности

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

Кэшбэк по уровням

Три уровня — 3%, 5% и 7%. Уровень определяется суммой покупок за последние 12 месяцев и пересчитывается автоматически.

Оплата бонусами

Слайдер в корзине списывает бонусы: до 50% чека. Сумма к оплате пересчитывается мгновенно, гость видит обе цифры.

Цена в бонусах прямо в меню

У каждой позиции сразу две цены: деньгами и «деньги + бонусы». Считать в уме не нужно — решение принимается в каталоге.

Сгорание и списание по FIFO

Бонусы живут 90 дней. Первыми списываются самые старые начисления, а за неделю до сгорания приходит напоминание.

QR на кассе

Одноразовый код действует 30 секунд. Касса считывает его — начисление и списание проходят на месте, без карт и телефонных номеров вслух.

Карта в Apple Wallet

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

Скретч-приз и кофе-карта

Одна попытка стереть карточку за покупку — бонусы, двойной кэшбэк, кофе или десерт. Отдельно копится кофе-карта: каждый 7-й напиток в подарок.

Поводы вернуться

Push о статусе заказа и начислениях, предупреждение о сгорании, сторис с акциями внутри приложения — вместо баннеров, которые не открывают.

Админка с AI-помощником

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

Коннектор к кассе и 1С

Чеки приходят из кассовой системы, начисление и списание считаются на сервере. Номенклатура остаётся в учётной системе.

Как это выглядит

Экраны проекта

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

Дашборд
ДашбордВыручка, чеки, новые гости и активность по точкам
Правила лояльности
Правила лояльностиПроценты по уровням, срок жизни бонусов, лимит списания — меняются мгновенно
Клиентская база
Клиентская базаГости, уровни, балансы и частота визитов
Рассылки
РассылкиСегменты и push-кампании с текстом от AI-помощника
Отзывы и NPS
Отзывы и NPSОценки заказов, динамика и разбор по точкам
Точки сети
Точки сетиАдреса, режим работы и показатели по каждой
На чём собрано

Технологии проекта

Надёжный стек под задачи проекта.

FlutteriOS, Android и веб-демо
Node.jsсервер механики и API
PostgreSQLбонусные счета и чеки
Firebasepush-уведомления
Apple Walletкарта лояльности
REST API54 метода со Swagger
01Задача

Удержание вместо разовых визитов

У сети готовой еды поток гостей есть, а способа их вернуть — нет: пластиковые карты теряются, скидка на кассе не запоминается, а данные о покупках нигде не собираются. Нужна была механика, которая работает на кассе за секунды и при этом даёт сети понимание, кто её гости.

02Механика

Выгода видна до оплаты

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

  • Кэшбэк 3 / 5 / 7% по уровню за 12 месяцев
  • Списание до 50% чека, сгорание через 90 дней
  • Двойной кэшбэк в день рождения, 500 бонусов за друга
03Разработка

Приложение, сервер и касса

Собрали Flutter-приложение под iOS и Android, сервер на Node.js с PostgreSQL, админку и POS-коннектор для кассы и 1С. Бонусные операции считаются на сервере — приложение только показывает результат, поэтому механику можно менять без обновления в сторах.

Результат

Программа, которой управляет сеть

Владелец меняет проценты, сроки и лимиты сам, в админке, и правила применяются сразу. Приложение работает на живом сервере — его можно открыть и пощупать прямо со страницы этого кейса.

Программа лояльности с кэшбэком для кафе и сети общепита: как устроена механика

Снаружи бонусная программа выглядит просто: гость платит, ему возвращается процент, потом он тратит накопленное. Внутри это набор связанных правил — процент начисления, срок жизни бонусов, порядок списания, лимит на чек. Каждое правило меняет и поведение гостя, и нагрузку на экономику заведения. Ниже разбор механики на примере приложения Damdala, программы лояльности сети готовой еды с 11 точками в Алматы.

Кэшбэк по уровням вместо единого процента

В Damdala три уровня кэшбэка — 3%, 5% и 7%. Уровень определяется суммой покупок за последние 12 месяцев, то есть это скользящее окно, а не звание навсегда. Единый процент одинаково платит и случайному гостю, зашедшему один раз, и человеку, который берёт обед пять раз в неделю. Уровни перераспределяют бюджет программы в сторону вторых.

Скользящее окно важнее, чем кажется. При пожизненном уровне база постепенно уползает вверх: через пару лет значительная часть гостей сидит на максимальном проценте, и программа превращается в постоянную скидку 7% для всех. Окно в 12 месяцев снижает уровень само, если человек перестал ходить, — без ручных чисток и неприятных объяснений.

Обратная сторона уровней — их надо объяснять. Гость должен видеть текущий процент, сумму до следующего уровня и понимать, что порог считается за год. Если этого нет на главном экране, механика перестаёт работать как мотивация и остаётся просто статьёй расходов.

Срок жизни бонусов, FIFO и лимит списания

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

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

Лимит списания — до 50% чека. Он решает две задачи: касса всегда получает живые деньги, чек не обнуляется бонусами, и у гостя остаётся повод прийти ещё раз, потому что накопленное невозможно потратить за один визит. Реальную стоимость программы определяет именно связка «срок жизни + FIFO + лимит», а не сам процент кэшбэка.

Приложение вместо пластиковой карты

Идентификация гостя на кассе — узкое место любой бонусной программы. Пластиковая карта теряется, номер телефона диктуют с ошибками и вслух при очереди. В Damdala гость показывает QR-код из приложения: код одноразовый и живёт 30 секунд. Короткий срок жизни закрывает и пересылку скриншота другому человеку, и повторное использование того же кода.

Карта дублируется в Apple Wallet — для тех, кто не хочет искать приложение в папке на третьем экране. Но главное отличие от пластика не в носителе: вместе с идентификацией у гостя появляется экран с историей начислений, сроком сгорания каждой партии бонусов и статусом заказа. Иначе все вопросы «сколько у меня и когда сгорит» уходят на кассира.

Цена товара показывается сразу в двух видах: деньгами и в формате «деньги + бонусы» — сколько будет стоить позиция, если частично закрыть её накопленным. Это переводит бонусы из абстрактных баллов в понятную выгоду в момент выбора, а не на кассе.

Механики вовлечения и точки входа

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

  • 500 приветственных бонусов на 14 дней при регистрации: короткий срок здесь намеренный, он задаёт повод прийти в ближайшие две недели, а не когда-нибудь.
  • Двойной кэшбэк в день рождения — повод, который воспринимается как персональный, а не как общая акция.
  • 500 бонусов за приглашённого друга: реферальная механика, привязанная к покупке приглашённого, а не к установке приложения.
  • Скретч-карта — одна попытка за покупку, выигрыш это бонусы, двойной кэшбэк, кофе или десерт.
  • Кофе-карта: каждый седьмой напиток бесплатно, механика штампов без риска потерять картонку.
  • Бонусы за отзыв о заказе — обратная связь, оплаченная бонусами, а не скидкой.

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

Кто управляет программой после запуска

Главный вопрос решается до кода: кто ведёт лояльность дальше. Если процент кэшбэка, срок жизни бонусов или условия акции меняются только через разработчика, программа замирает в том виде, в каком её запустили. Поэтому все параметры вынесены в админку и применяются мгновенно: уровни, сроки, лимиты, приветственные бонусы, условия скретч-карты.

Там же рассылки по сегментам и сторис с акциями внутри приложения. Сторис — более спокойный канал, чем push: гость смотрит их сам, когда открыл приложение. Push разумно держать для служебного — статус заказа, начисление, предупреждение о скором сгорании бонусов.

Начисления берутся не из приложения, а из кассы: POS-коннектор связывает лояльность с кассой и 1С, чтобы чек и бонус были одной операцией, а не двумя разными правдами. Приложение собрано на Flutter, серверная часть — Node.js и PostgreSQL, push и аналитика на Firebase. В админке работает AI-помощник, отвечающий на вопросы по данным сети: он снимает рутину с отчётов, но не заменяет решение о том, какой должна быть механика.

Чего бонусная программа не делает

Лояльность не чинит продукт. Если еда невкусная, а очередь на кассе длинная, кэшбэк 7% лишь ненадолго удержит часть гостей и сделает их уход дороже для заведения. Программа усиливает то, что уже работает, и подсвечивает то, что не работает.

Push-уведомления выгорают быстрее, чем кажется. Две-три рассылки без повода в неделю — и уведомления отключают, после чего канал потерян и для действительно важных сообщений вроде сгорания бонусов. Частота рассылок это расходуемый ресурс.

И последнее: бонусная механика требует владельца внутри бизнеса. Кто-то должен смотреть, сколько бонусов начислено и списано, какая доля сгорает, как распределяются уровни, и корректировать настройки. Без этого человека даже гибкая админка остаётся набором значений по умолчанию.

Вопросы по проекту

Частые вопросы

Можно ли посмотреть приложение, не устанавливая его?+

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

Почему кэшбэк, а не скидка?+

Скидка уменьшает чек один раз и не даёт повода прийти снова. Кэшбэк возвращается на счёт и работает как обязательство заведения перед гостем: у бонусов есть срок, и это само по себе повод вернуться. При этом списание ограничено половиной чека, чтобы программа не съедала маржу.

Что происходит с бонусами через 90 дней?+

Они сгорают, причём первыми списываются самые ранние начисления — по принципу FIFO. За неделю и за день до сгорания гость получает уведомление. Срок жизни бонусов и правило списания настраиваются в админке.

Как это работает на кассе?+

Гость открывает QR в приложении, кассир его считывает. Код одноразовый и живёт 30 секунд, поэтому скриншотом им не воспользуешься. Если телефон разряжен, участника можно найти по номеру телефона.

Нужна ли интеграция с нашей учётной системой?+

Для начисления по чекам — да, коннектор подключается к кассе или 1С. Мы делали такой для этого проекта: чек уходит на сервер, тот считает начисление и списание и возвращает результат на кассу. Без интеграции программа тоже работает, но операции придётся проводить вручную через панель.

Программа лояльности заменит рекламу?+

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

Нужна такая же программа лояльности?

Расскажите задачу — предложим решение, сроки и стоимость.

Обсудить проект →