Перейти к основному содержимому

WebApp / MiniApp

WebApp (Mini-App) — это веб-приложение, которое открывается прямо внутри Telegram или MAX. Клиент не уходит в браузер, не переключается между приложениями: магазин, корзина, календарь записи, форма — всё работает в окне мессенджера.

Квесча предоставляет готовые WebApp-шаблоны и действие «WebApp/MiniApp» в сценарии действий, которое получает данные из приложения и передаёт их в логику бота.

Когда нужен WebApp

ЗадачаЧто в боте без WebAppWebApp решает
Каталог из 50 товаров50 блоков с кнопкамиОдин экран с поиском и фильтром
Запись на услугу5-7 блоков-вопросовКалендарь с выбором даты и времени за 2 клика
Корзина с подсчётомСложная логика на переменныхДинамическая корзина в WebApp
Большая форма10 блоков «введите...»Одна форма со всеми полями сразу

WebApp значительно снижает количество кликов, сокращает воронку и улучшает конверсию.


Часть 1. Готовые WebApp в Квесче

ПриложениеНазначениеГде работаетПодробно
cat_shopМагазин-каталогTelegram, MAXМагазин (cat_shop)
cat_cafeМеню кафе / ресторанаTelegram, MAXКафе (cat_cafe)
calendarКалендарь записиTelegram, MAXКалендарь (calendar)

Все WebApp подключаются к боту через кнопку с типом «Ссылка» в блоке или через «Команды» на доске сценария.

Готовые WebApp в Квесче

Скриншот 1. Подключение WebApp к кнопке блока.


Часть 2. Связь WebApp с ботом

WebApp работает в браузере — внутри Telegram, но изолированно. Чтобы передать данные обратно в бот — в Квесче есть действие «WebApp/MiniApp» в сценарии действий.

Подписчик нажал кнопку WebApp

Открывается приложение (cat_shop / calendar / ...)

Клиент совершил действие (заказ, запись)

WebApp отправляет данные в бот → запускается следующий блок

В блоке — сценарий действий с действием «WebApp/MiniApp»

Действие сохраняет данные WebApp в переменные / список

Бот реагирует: подтверждение, оплата, уведомление менеджеру

Поток данных WebApp

Скриншот 2. Жизненный цикл взаимодействия с WebApp.


Часть 3. Действие «WebApp/MiniApp» — типы операций

Добавляется в сценарии действий того блока, который запускается после работы клиента в WebApp.

В действии 7 типов операций:

ТипНазначение
Каталог: обработка заказаДостать состав заказа из cat_shop / cat_cafe в переменные/список
Календарь: данные из приложенияПолучить выбранную дату/время из календаря
Календарь: сделать записьЗаписать клиента в указанный календарь
Календарь: получить все записи клиентаИзвлечь историю записей клиента
Календарь: получить запись клиентаПолучить конкретную запись по ID
Календарь: удалить запись клиентаОтменить одну запись
Календарь: удалить все записи клиентаОчистить все записи клиента (для переноса/тестов)

Операции действия WebApp

Скриншот 3. Выбор операции WebApp.


Часть 4. Типовые сценарии

Сценарий 1. Магазин (cat_shop)

  1. Кнопка «Каталог» с типом WebApp → открывается cat_shop.
  2. Клиент собирает корзину, оформляет заказ.
  3. WebApp возвращает в бот сводку заказа.
  4. Блок с действием «WebApp/MiniApp» → операция «Каталог: обработка заказа» → данные в переменные (массивы товаров, цен, количеств) и в список «Заказы».
  5. Блок платежа для итоговой суммы.
  6. После оплаты — уведомление менеджеру.

→ Подробно: WebApp Магазин (cat_shop).

Сценарий 2. Кафе (cat_cafe)

Аналогично cat_shop, но интерфейс заточен под меню:

  • категории блюд;
  • модификаторы (без лука, без острого);
  • комментарий к заказу.

→ Подробно: WebApp Кафе (cat_cafe).

Сценарий 3. Запись на услугу (calendar)

  1. Кнопка «Записаться» → открывается calendar.
  2. Клиент выбирает услугу, дату, время.
  3. Блок с действием «WebApp/MiniApp» → операция «Календарь: данные из приложения» → сохраняет в переменные #{дата}, #{время}, #{recordId}.
  4. Подтверждение → операция «Календарь: сделать запись» фиксирует запись.
  5. Напоминание за час через цепочку с задержкой.

→ Подробно: WebApp Календарь (calendar).

Сценарий 4. Просмотр своих записей

  1. Кнопка «Мои записи».
  2. Блок с действием «WebApp/MiniApp» → «Календарь: получить все записи клиента».
  3. В переменной — массив записей. Перебор и формирование строки.
  4. Сообщение клиенту со списком.
  5. Кнопка отмены → «Календарь: удалить запись клиента» по recordId.

Часть 5. Архитектура

Принцип 1. WebApp заменяет сложные ветвистые сценарии

Если в вашем боте больше 5 блоков-вопросов подряд (например, «выберите день», «выберите время», «выберите услугу») — пора заменять на WebApp.

Принцип 2. Передавайте параметры в WebApp через URL

WebApp может принимать параметры (товары, услуги, цены) через GET-параметры URL. Их обычно подкидывают через действие «Ссылки» или конструктор кнопки.

Принцип 3. Возврат данных обрабатывайте сразу

Сценарий действий с операцией WebApp должен стоять в первом блоке после кнопки WebApp. Если поставить дальше — данные могут потеряться.

Принцип 4. Сохраняйте состояние в списках

Корзины, записи, заказы — храните в списках, не в локальных переменных. Локальные исчезнут после диалога; список остаётся.

Принцип 5. Используйте теги для статусов

После записи в календаре ставьте тег записан-2026-08-21. Это упростит сегментацию и рассылки.

Принцип 6. Делайте моб-первый UX

Большинство клиентов открывают WebApp с телефона. В Telegram WebApp ограничен по высоте — длинные формы плохо влезают.


Часть 6. Когда не использовать WebApp

  • Простой диалог из 1-2 вопросов — кнопки в блоках быстрее открываются.
  • VK / WhatsApp / Viber — WebApp полноценно работает в Telegram и MAX. В других мессенджерах поведение ограничено.
  • Нужна сложная кастомная логика — если готовых cat_shop/calendar мало, выгоднее заказать кастомное WebApp у Квесчи.

Частые ошибки

  • Данные из WebApp не приходят — проверьте, что блок-приёмник идёт сразу после WebApp-кнопки (без блоков-вопросов между).
  • Корзина пустая, хотя клиент что-то добавлял — переменные WebApp не подключены в действии. Проверьте имена в операции «Каталог: обработка заказа».
  • WebApp не открывается — кнопка должна иметь именно тип WebApp / MiniApp, а не обычную ссылку.
  • В VK WebApp не работает — это ограничение мессенджера. Сделайте альтернативную ветку для VK через обычные блоки.
  • Бот не получает уведомление о записи — настройте операцию «Календарь: сделать запись», а не только «Данные из приложения».

Что дальше