Рассылки
Раздел Рассылки отправляет одно сообщение выбранной аудитории вашего бота. Аудитория собирается теми же фильтрами, что и отчёты, поэтому «напишите всем, кто нажал кнопку, но не дошёл до оплаты» — это не выгрузка в файл и не сторонний сервис, а несколько кликов там же, где вы смотрите аналитику.
Рассылка проходит через состояния: черновик → подготовка → запуск. Разделение сделано намеренно: между «я закончил писать» и «сообщение ушло людям» есть шаг, который замораживает текст и показывает точное число получателей до того, как что-то отправится.
Кто что может
| Действие | Минимальная роль |
|---|---|
| Смотреть рассылки, получателей и ход отправки | Reader |
| Создавать, редактировать, удалять черновик | Writer |
| Тестовая отправка | Writer |
| Подготовить и вернуть в черновик | Writer |
| Запустить и отозвать | Admin |
Запуск и отзыв требуют прав администратора не по формальным причинам: сообщение миллиону человек нельзя «поправить обратно», в отличие от виджета на дашборде.
Состояния рассылки
| Состояние | Что означает | Что ещё можно вернуть |
|---|---|---|
| Черновик | Текст и аудиторию можно менять. Ничего не отправлено | Всё. Черновик можно удалить целиком |
| Подготовка | Собирается список получателей. Для большой аудитории — минуты | Дождитесь окончания |
| Готова к отправке | Список получателей зафиксирован, сообщение заморожено | «Вернуть в черновик» — список отбрасывается, текст снова редактируется |
| Отправляется | Сообщения уходят получателям | Только «Отозвать»: отправка прекращается, доставленное удаляется |
| Завершена | Все получатели обработаны | Только «Отозвать» — и только пока действует окно удаления |
| Отменяется | Отправка остановлена, идёт удаление доставленного | Дождитесь окончания |
| Отменена | Отзыв завершён | Ничего. Это запись о том, что было |
Отправленную рассылку удалить нельзя: это запись о том, что реальные люди получили реальное сообщение. Удаляется только черновик.
После подготовки текст, кнопки и вложение изменить нельзя — редактирование вернёт ошибку. Так устроено специально: рассылку, у которой первая половина получила один текст, а вторая другой, невозможно ни объяснить получателям, ни корректно отозвать. Чтобы поправить текст, нажмите «Вернуть в черновик».
Аудитория
Аудитория задаётся ровно одним из четырёх способов — это выбор, а не набор независимых полей.
| Способ | Кому уйдёт |
|---|---|
| Всё время | Всем, кому бот может написать, как бы давно они ни были активны |
| За последние N дней | Всем, кто был активен за последние N дней. Отсчёт назад от момента подготовки, а не от момента, когда вы открыли черновик |
| Точные даты | Всем, кто был активен между двумя датами. Границы не сдвинутся, когда бы рассылка ни ушла |
| Список | Только тем, кого вы перечислили поимённо |
Первые три способа можно сузить фильтром — тем же конструктором, что и в
фильтрах аналитики: по событию, по свойству, по значению $tg.*.
Комбинация «всё время + условие» — это способ охватить всех, кто когда-либо совершал нужное действие.
Относительное окно — обычный выбор, и именно поэтому оно считается при подготовке: «активные за последние 30 дней» должно означать 30 дней до отправки, а не 30 дней до того дня, когда черновик был создан.
Кто попадает в аудиторию, а кто нет
Аудитория собирается из событий, а не из списка пользователей. Причина простая: карточка пользователя не доказывает, что боту есть куда написать, а событие в личном чате — доказывает.
Поэтому в аудиторию не попадают:
- те, кто общался с ботом только в группе — Telegram запрещает боту писать первым, и такая отправка гарантированно провалится;
- те, кто ни разу не открывал личный чат с ботом.
Если оценка показывает «никто не подходит», а пользователи у бота есть — почти всегда дело именно в этом.
Аудитория — это снимок на момент подготовки. Он подтверждает, что личный чат существовал в выбранном окне, но не подтверждает, что человек не заблокировал бота позже: такие получатели отсеиваются уже при отправке и видны в разбивке как «Пользователь заблокировал бота».
Оценка числа получателей
Под фильтром показывается живая оценка «Получат сообщение: N». Она считается до предела вашего тарифа, а не точно: точный подсчёт по всей истории проекта — самый дорогой запрос в продукте, а редактору нужны ответы только на два вопроса — «примерно сколько» и «не превышен ли лимит». Если подходящих больше лимита, вы увидите «Подходит больше N человек».
Список вручную
В режиме «Список» получатели перечисляются по одному в строке: числовой Telegram ID или
@username.
- До 10 000 записей в списке — суммарно ID и имён. Лимит тарифа на число получателей действует дополнительно.
- ID должен быть положительным: отрицательный — это группа или канал, а рассылка идёт только в личные чаты.
@usernameнаходится только среди тех, кого бот уже видел: Telegram не позволяет боту узнать ID по имени. Неразобранные имена перечисляются прямо в редакторе — до отправки, пока с этим ещё можно что-то сделать.- Форматы
@durov,t.me/durovиDurovпринимаются и приводятся к одному виду. - Фильтр в этом режиме не применяется: сузить поимённый список условием означало бы молча выбросить людей, которых вы назвали намеренно.
Сообщение
Текст и форматирование
| Что | Предел |
|---|---|
| Текст сообщения | 4096 символов |
| Подпись, если прикреплён файл | 1024 символа |
Оба числа — ограничения Telegram, а не наши. Разница между ними — главная ловушка: файл, прикреплённый к уже написанному тексту, снижает лимит вчетверо, и Telegram в этом случае отклоняет отправку целиком, а не обрезает текст. Редактор предупреждает об этом сразу.
Панель форматирования даёт жирный, курсив, подчёркнутый, зачёркнутый, спойлер, моноширинный, цитату и ссылку. Разметка хранится отдельно от текста, поэтому писать HTML или Markdown руками не нужно и не следует.
Два переключателя рядом с текстом:
- Без превью ссылок — ссылка не развернётся в карточку с картинкой и описанием.
- Без звука — уведомление придёт беззвучно. Для больших рассылок это заметно вежливее.
Кнопки
Под сообщением можно собрать inline-клавиатуру.
| Что | Предел |
|---|---|
| Рядов | 12 |
| Кнопок в ряду | 8 |
| Надпись на кнопке | 64 символа |
callback_data | 64 байта |
У кнопки есть либо ссылка, либо callback_data — ровно одно из двух. Ссылка должна быть полной,
со схемой: https://example.com, а не example.com; принимаются http, https и tg.
callback_data считается в байтах, а не в символахКириллица занимает два байта на символ, эмодзи — больше. Русский текст упирается в предел примерно на 32 символах. Редактор показывает счётчик в байтах.
Для callback_data есть подсказка со значениями, которые ваш бот уже получал. Если введённого
значения там нет, редактор это отметит: скорее всего кнопка ничего не сделает при нажатии — если
только вы не научили бота этому значению прямо сейчас.
Вложение
К сообщению можно прикрепить один файл.
| Тип | Предел размера |
|---|---|
| Фото | 10 МБ |
| Видео, GIF/анимация, аудио, голосовое, файл | 50 МБ |
Это ограничения Bot API. Широко цитируемые 2 ГБ — предел обычных клиентов Telegram, к ботам он не относится.
Тип вложения выбираете вы, и он важен: GIF, отправленный как «файл», не воспроизводится, а голосовое сообщение принимается только в OGG — MP3 придёт обычным файлом. Metriox проверяет содержимое файла и не даст отправить, например, картинку под видом видео.
Библиотека файлов
Загруженные файлы остаются в библиотеке проекта и переиспользуются: одно и то же изображение не нужно загружать дважды. В библиотеке видно, сколько места занято, какие файлы используются рассылками, и можно удалить ненужные.
- Удаление файла ничего не отменяет. Уже доставленные копии останутся в чатах получателей.
- Файл, который держит незавершённая рассылка, удалить нельзя: пока рассылка не отправила первое сообщение, эти байты — единственная копия.
- Файлы, на которые не ссылается ни одна рассылка, удаляются автоматически по сроку из вашего тарифа (по умолчанию — через 180 дней). Файл, прикреплённый к черновику, не трогается, каким бы старым он ни был.
Файл загружается в Telegram один раз — на первой отправке рассылки, дальше переиспользуется. Тестовая отправка делает это заранее.
Тестовая отправка
«Тестовая отправка» отправляет сообщение в один чат — обычно вам самому — тем же самым путём, которым пойдёт реальная рассылка: та же очередь, тот же отправитель, та же обработка ошибок. Тест, идущий другим путём, ничего не доказывал бы о том пути, который действительно работает.
Чем тест отличается от настоящей отправки:
| Тест | Рассылка | |
|---|---|---|
| Кому | Один чат, который вы указали | Вся подготовленная аудитория |
| Из какого состояния | В том числе из черновика | Только из «Готова к отправке» |
| Какой текст | Текущий черновик, если рассылка ещё не подготовлена | Замороженный при подготовке |
| Статус рассылки | Не меняется | Меняется |
| Счётчики рассылки | Не учитывается | Учитывается |
| Отзыв рассылки | Тест не удаляется | Удаляются доставленные сообщения |
Указывайте чат, который контролируете. Самая частая первая ошибка — «Не начал диалог с ботом»:
Telegram не позволяет боту написать первым. Откройте чат с ботом, нажмите /start и повторите.
Если тест отправлен из черновика и текст после этого изменён — реальная рассылка уйдёт уже другой. Редактор об этом предупреждает.
Подготовка, запуск и отмена
Подготовка
«Подготовить к отправке» делает две вещи: замораживает сообщение и собирает список получателей. Отправки при этом не происходит.
- Для большой аудитории это минуты. Повторное нажатие безопасно: подготовка продолжится с того места, где остановилась, а не начнётся заново.
- Рассылка с нулём получателей отклоняется. Иначе она мгновенно завершилась бы и выглядела в панели прогресса ровно как идеально доставленная.
- Аудитория больше лимита тарифа тоже отклоняется — до того, как будет записана хоть одна строка.
Подготовленная рассылка занимает один из слотов одновременных рассылок вашего тарифа. Если её не запустить в течение 7 дней, она возвращается в черновики и освобождает слот; то же происходит с подготовкой, зависшей дольше часа.
«Вернуть в черновик» — обратная операция: список получателей отбрасывается, текст снова редактируется. Это безопасное направление, поэтому прав администратора она не требует. Повторная подготовка собирает аудиторию заново: кто подписался за это время — попадёт, кто заблокировал бота — нет.
Запуск
«Отправить» доступна только из состояния «Готова к отправке» и только администратору. В окне подтверждения показывается:
- сколько человек получит сообщение;
- сколько примерно событий это спишет с квоты;
- примерная длительность отправки — сообщения идут со скоростью около 25 в секунду на одного бота (ниже предела Telegram: собственные ответы бота используют тот же лимит);
- напоминание об окне отзыва.
Если рассылка изменилась, пока окно подтверждения было открыто, запуск отклоняется: числа, на которые вы согласились, — это и есть всё основание согласия.
Отменить запуск нельзя. Можно только отозвать рассылку — и только для тех сообщений, которые ещё попадают в окно удаления Telegram.
Отмена
«Отозвать» делает две вещи сразу:
- Прекращает отправку. Те, до кого очередь не дошла, помечаются как «Отменено до отправки» — а не остаются висеть в очереди навсегда.
- Начинает удалять уже доставленные сообщения. Это описано в следующем разделе.
Отзыв доставленной рассылки
Metriox умеет удалять уже доставленные сообщения из чатов получателей. Это не отмена отправки — к моменту отзыва сообщения уже существуют у людей в переписке; Metriox проходит по списку получателей и удаляет их.
Окно удаления
Telegram разрешает боту удалить собственное сообщение только в течение 48 часов. Это ограничение самого Telegram, обойти его нельзя. Metriox прекращает попытки на 47-м часу — на час раньше, намеренно: время отправки фиксируется в момент, когда отправитель отчитался о результате, то есть чуть позже реальной отправки, и запас закрывает эту разницу вместе с временем в очереди на удаление.
Это важнее, чем кажется. Отправка идёт со скоростью около 25 сообщений в секунду, поэтому большая рассылка растянута на часы: у первого получателя окно закончится раньше, чем у последнего. Отзыв через двое суток может удалить «хвост» рассылки и не суметь удалить её начало.
Практический вывод: отзывайте сразу, как только поняли, что рассылка ушла не та. Считайте, что у вас меньше двух суток, а не ровно 48 часов.
Что именно происходит
- Удаляются только доставленные сообщения, для которых сохранён их идентификатор в Telegram.
- Сообщения старше окна помечаются «Удалить не вышло» без обращения к Telegram. Поэтому отзыв недельной рассылки на миллион человек происходит мгновенно: спрашивать нечего.
- Если сообщение уже удалено — например, самим получателем, — это считается успехом. Цель в том, чтобы сообщения не было, и его нет.
- Только удаление. Metriox не подменяет старое сообщение другим текстом: рассылку старше окна удаления вернуть нельзя никак, и продукт говорит об этом прямо, а не создаёт видимость отзыва.
- Тестовые отправки отзыв не трогает.
Что видно в интерфейсе
В панели прогресса появляется блок «Ход удаления» со счётчиками «Попыток удаления» и «Удалено», а у каждого получателя — состояние: «Ещё в чате», «Удалено» или «Удалить не вышло».
Отзыв работает и на завершённой рассылке, не только на идущей, — при условии, что сообщения ещё попадают в окно.
Что это стоит
Каждое отправленное сообщение рассылки — это одно событие в вашей квоте аналитики. Рассылка на 100 000 человек расходует 100 000 событий из месячного лимита проекта — того самого, при исчерпании которого останавливается приём событий и ломается ваша собственная аналитика. Об этом лучше узнать здесь, а не из счёта.
Доставленные сообщения попадают в аналитику как события message.outbound, поэтому рассылку видно в
отчётах наравне с остальным трафиком бота.
Рассылку ограничивают два потолка, и действует тот, который меньше:
| Потолок | Что это |
|---|---|
| Месячная квота событий | Общая квота проекта. При запуске резервируется столько событий, сколько сообщений уйдёт. Не хватает — запуск отклоняется с сообщением, сколько нужно и сколько осталось |
| Месячный лимит сообщений рассылок | Отдельный лимит именно на рассылки. Считается по периоду, в котором рассылка была запущена |
Проверка выполняется один раз, при запуске. Дальше рассылка идёт до конца: начатая рассылка не может остановиться на середине из-за того, что квоту израсходовал чей-то другой трафик. Наполовину отправленное объявление — это хуже, чем перерасход.
Оценка получателей в редакторе и есть оценка расхода: один получатель — одно сообщение — одно событие.
Лимиты
Ограничения Telegram — одинаковые для всех:
| Что | Значение |
|---|---|
| Текст сообщения | 4096 символов |
| Подпись при вложении | 1024 символа |
| Надпись на кнопке | 64 символа |
callback_data | 64 байта |
| Клавиатура | 12 рядов по 8 кнопок |
| Вложений в сообщении | 1 |
| Размер фото | 10 МБ |
| Размер остальных файлов | 50 МБ |
| Окно удаления сообщения | 48 часов (Metriox прекращает попытки на 47-м часу) |
Ограничения тарифа — значения по умолчанию, ваш тариф может быть щедрее:
| Что | Free | Платные тарифы |
|---|---|---|
| Получателей в одной рассылке | 100 000 | 1 000 000 |
| Одновременных рассылок | 5 | 50 |
| Сообщений рассылок в месяц | 25 000 | 5 000 000 |
| Место под файлы | 1 ГБ | 20 ГБ |
| Автоудаление неиспользуемых файлов | через 180 дней | через 180 дней |
| Хранение списка получателей | 365 дней | 365 дней |
Отдельно: записей в списке вручную — до 10 000, глубина окна аудитории — до 730 дней.
По истечении срока хранения построчный список удаляется, а итоговые числа остаются. После этого уже нельзя посмотреть, что произошло с конкретным человеком и получил ли он сообщение. На отзыв это не влияет: окно удаления в 48 часов закрывается намного раньше любого срока хранения.
Статусы получателей
| Статус | Что произошло |
|---|---|
| В очереди | Ещё не отправляли |
| Отправляется | Сообщение в работе |
| Доставлено | Telegram принял сообщение |
| Доставлено частично | Часть сообщений дошла, часть нет |
| Отменено до отправки | Рассылку отозвали раньше, чем дошла очередь |
| Пользователь заблокировал бота | Обычное дело в любой рассылке |
| Не начал диалог с ботом | Личного чата нет, писать первым Telegram не разрешает |
| Аккаунт удалён | Пользователя больше нет |
| Недоступен | Telegram не нашёл такой чат |
| Доставка неизвестна | Сообщение отправлено, но подтверждения не было |
Такое сообщение, скорее всего, дошло. Telegram не даёт способа проверить это задним числом, поэтому Metriox не отправляет повторно: лучше редкая неопределённость, чем человек, получивший одно и то же объявление дважды.
Чего в рассылках нет
- Отправка по расписанию. Рассылка уходит тогда, когда её запустили.
- Альбомы и несколько файлов в одном сообщении. Одно вложение на сообщение.
- Редактирование доставленного сообщения. Отзыв — это удаление, и только в пределах окна.
- Повторная отправка тем, у кого статус «Доставка неизвестна».
Что дальше?
- Фильтры — как собрать аудиторию точнее
- Пользователи — из чего складывается карточка пользователя
- События — что расходует квоту и как она считается
- MCP: инструменты — те же рассылки из ИИ-агента