Покупательница заказала через бота цветочного магазина в Алматы букет к семи вечера. Бот прислал «Заказ принят», потом «Собираем», потом «Курьер выехал», потом номер курьера. Четыре сообщения подряд, и чтобы понять, что с заказом сейчас, ей приходится листать переписку вверх. Менеджер в это время отвечает на вопрос «а где мой букет?», хотя ответ уже лежит в чате.
Виджеты в Telegram-боте решают именно эту проблему. 9 ноября 2026 года Telegram выпустил Bot API 10.4, и бот теперь может прислать не текст с кнопками, а маленькую живую карточку прямо внутри сообщения: состав заказа, сумма, полоса статуса. Статус меняется в той же карточке, без новых сообщений. Звучит как Mini App, но устроено иначе, и у этого «иначе» есть жёсткие пределы.
Главное за минуту
Что это
Один HTML-документ со встроенными стилями и JavaScript, который Telegram рисует внутри пузыря сообщения в цветах чата.
Где работает
В рабочей среде – только в личном чате с ботом. Группы, пересылка и inline-режим пока доступны лишь на тестовом сервере.
Чего в нём нет
Сети и полей ввода. Виджет не ходит в интернет и не принимает текст – только нажатия.
Как он меняется
Код виджета после отправки неизменен. Бот обновляет только его данные – до 1024 байт, тихо, без уведомления клиенту.
Как устроены виджеты в Telegram-боте
Бот вызывает новый метод sendWidget и передаёт HTML: от 1 до 32 768 байт, а после сжатия – не больше 4096. Это немного. Хватит на аккуратную карточку с таблицей, парой кнопок и небольшим скриптом, но не на каталог с картинками. Ширина пузыря – от 200 до 600 пикселей, высота – от 50 до 600. Всё, что не влезло по высоте, обрезается, прокрутки нет.
Дальше начинается главное отличие от веб-страницы. Код, однажды отправленный, больше не меняется: метода, который заменил бы HTML готового виджета, нет. Меняется только состояние – короткий текст до 1024 байт, который пишет бот. Таких состояний два: данные конкретного сообщения (chat_data, метод editMessageWidgetData) и общие данные виджета, который разослан многим (public_data, метод editSharedWidgetData). Виджет читает состояние и перерисовывает себя.
Обратная связь тоже узкая. Нажатие внутри виджета может отправить боту запрос – как callback-кнопка, только с данными от 1 до 64 байт. Бот обязан ответить методом answerWidgetQuery за 15 секунд, иначе виджет получит ошибку TIMEOUT. На запросы есть лимит: не больше пяти за пять секунд от одного пользователя ко всем виджетам бота. И запросы вообще работают, только если при отправке указан allow_queries.
Сам код исполняется на устройстве клиента в песочнице. Telegram прямо пишет, что сетевого доступа у виджета нет совсем: fetch, XMLHttpRequest и WebSocket выбрасывают ошибку, внешние скрипты, шрифты и картинки не загружаются. Выйти наружу можно только через openLink – по нажатию и после подтверждения пользователя, ссылка https до 256 символов.
Кнопки, виджет или Mini App: что когда выбирать
У продающего бота в Telegram теперь три способа показать клиенту что-то сложнее текста. Их легко перепутать, поэтому сведём различия в одну таблицу.
| Inline-кнопки | Виджет | Mini App | |
|---|---|---|---|
| Где живёт | Под сообщением | Внутри сообщения | Отдельное окно, страница на вашем сервере |
| Ввод текста | Нет | Нет, только нажатия | Да, любые формы |
| Свежие данные | Бот правит сообщение | Бот пишет состояние до 1024 байт | Страница сама запрашивает ваш сервер |
| Виден в чате без открытия | Да | Да | Нет |
| Объём разработки | Минимальный | Небольшой, но нужен фронтенд в 4 КБ | Полноценное веб-приложение |
Наше мнение: виджет не заменяет ни кнопки, ни Mini App, а закрывает дыру между ними. Кнопки хороши для выбора из трёх вариантов. Mini App – для магазина с корзиной и формой доставки, как мы описывали в материале «Telegram WebApp + бот: как запустить магазин внутри мессенджера». А виджет – для того, что клиент должен видеть в переписке постоянно и в актуальном виде, не открывая ничего.
Где виджет окупается в продажах и сервисе
Лучшие сценарии – те, где нужно показать небольшой объём данных, которые меняются со временем, а ответ клиента сводится к нажатию.
Карточка заказа со статусом
Самый очевидный случай, и сам Telegram в справке рисует именно его: номер заказа, позиции, итог и кнопка отслеживания. Бот отправляет карточку при оформлении, а потом CRM на каждой смене стадии вызывает editMessageWidgetData и пишет в состояние новый статус и время. Клиент видит одну карточку, которая сама обновилась с «Собираем» на «Курьер выехал, 18:40». Сумма – в тенге, ссылка на трекинг службы доставки – через openLink.
Выбор слота и подтверждение записи
Салон в Шымкенте предлагает окна на завтра. Восемь-десять слотов в формате «10:30 Айгерим» спокойно помещаются в 1024 байта состояния. Клиентка нажимает на слот, виджет шлёт запрос, бот за секунду проверяет расписание в CRM, бронирует и отвечает. Занятые слоты бот вычёркивает, обновив состояние. Если CRM думает дольше, лучше сразу ответить «принято, проверяем», а подтверждение дописать в состояние следом – 15 секунд на ответ проходят быстро.
Опрос после покупки
Оценка доставки от одного до пяти, шкала NPS, выбор «что улучшить» из готовых вариантов. Нажатие уходит боту, бот кладёт оценку в карточку клиента. Свободный комментарий виджет не примет – за ним бот попросит обычное сообщение.
Покажем карточку заказа на вашей воронке
Возьмём ваши стадии сделки и соберём прототип виджета, который обновляется из CRM, – чтобы оценить пользу до разработки.
Что поменять в CRM и боте под виджеты
Сам виджет – это фронтенд на пару килобайт. Основная работа – на стороне CRM и интеграции, и её легко недооценить.
- Хранить идентификатор сообщения. Чтобы обновить карточку, нужны чат и
message_id. Если бот их не сохраняет в сделке, обновлять будет нечего. - Привязать статусы к событиям сделки. Каждая смена стадии должна вызывать обновление состояния, а не только письмо менеджеру.
- Разделить тихое и громкое. Telegram подчёркивает: правка состояния проходит без пометки «изменено» и без уведомления. Для «Курьер у двери» этого мало – такой статус нужно продублировать обычным сообщением.
- Всегда отправлять подпись. Приложения без поддержки виджетов показывают сообщение как неподдерживаемое вложение с подписью. Подпись «Заказ № 1042 – 23 500 тенге» – единственное, что увидит клиент со старой версией Telegram.
- Не складывать в состояние лишнее. ИИН, телефон и адрес в карточке не нужны. Хватит номера заказа, позиций и статуса.
Последний пункт – не только про объём. Чем меньше персональных данных уходит через стороннюю платформу, тем проще потом отвечать на вопросы о том, где и как вы их обрабатываете.
Чего от виджетов ждать не стоит
Функция свежая, и часть её возможностей пока существует только в документации для тестового сервера. Лучше знать границы до того, как обещать клиенту «новый интерфейс».
Ограничения на 9 ноября
- Групп нет. В рабочей среде виджет работает только в личном чате с ботом, каналы его не принимают вовсе.
- Переслать нельзя. Отправленный виджет автоматически защищён: клиентка не перешлёт карточку мужу, а бот не скопирует её через
copyMessage. - Оплаты в тенге внутри нет. Единственный платёжный сценарий в документации – кошелёк TON. Для Kaspi и банковских ссылок остаётся
openLinkили привычный путь, который мы разбирали в статье «Оплата в мессенджере: как собрать flow «чат → ссылка → оплата → подтверждение → чек»». - Форм нет. Поля ввода, списки и
textareaиз виджета вырезаются. Адрес и комментарий собирает бот обычным диалогом. - Свежих цен нет. Без сети виджет знает только то, что лежит в его коде и состоянии. Прайс на сто позиций в 1024 байта не уложить.
- Не у всех сразу. Telegram пишет, что виджеты выкатываются поэтапно, и у части клиентов вместо карточки будет подпись.
Ещё одна практическая деталь: библиотеки для ботов догоняют новую версию API не в день выхода. Если ваш бот написан на популярном фреймворке, проверьте, есть ли в нём sendWidget. Если нет – метод можно вызвать обычным HTTP-запросом к Bot API, не дожидаясь обновления.
В той же версии 10.4 Telegram расширил и ephemeral-сообщения: приватный ответ на нажатие кнопки теперь работает в любом чате, кроме чатов личных сообщений каналов. Зачем такие ответы нужны в общих чатах с клиентами, мы писали в материале «Telegram-бот печатает на глазах: стриминг и rich-сообщения».
Чек-лист перед запуском виджета
Если решили пробовать, начните с одного сценария и одного типа виджета. Этот список поможет не забыть мелочи, на которых обычно спотыкаются.
- Выбрать сценарий, где клиенту нужно видеть меняющиеся данные: статус заказа, запись, опрос.
- Уложить вёрстку в 32 КБ и 4 КБ после сжатия, проверить на светлой и тёмной теме чата.
- Сохранять в сделке чат и
message_idкаждой отправленной карточки. - Описать, какие стадии обновляют карточку тихо, а какие дублируются сообщением.
- Отвечать на запросы виджета за секунды, тяжёлые операции доводить уже после ответа.
- Написать подпись, понятную без виджета.
- Прогнать сценарий на тестовом сервере Telegram, прежде чем включать его клиентам.
Связанные материалы
- Telegram-бот для бизнеса: интеграция с CRM и автоматизация коммуникаций
- AI-боты для входящих обращений
Добавим виджет в вашего Telegram-бота
Расскажите, какой статус клиенты спрашивают чаще всего. За неделю соберём карточку, свяжем её со стадиями сделки в CRM и проверим на тестовом сервере.