Одна строка JSON — миллионы сообщений. Очередь, retry, персональные переменные, сегменты и прогресс в реальном времени. Пока вы спите, рассылка идёт.
· Throttling 5 сек, retry 3×, HMAC webhooks
Почему без нас тяжело
Чтобы не стрелять себе в ногу при 10 000 отправок, нужен Redis/RabbitMQ, отдельный воркер, мониторинг падений, дедупликация.
Telegram и Max банят ботов за всплески. Нужен throttling 30 сообщений/сек, плавное наращивание, распределение по времени.
«Дорогой Иван…» — это персональные переменные для каждого получателя. Без шаблонного движка и JOIN к подпискам — не взлетит.
Что внутри
{{first_name}}, {{username}}, {{subscriber_id}}, {{lang}} — подставляются индивидуально для каждого получателя через render_subscriber_vars.
Фильтры channel/segment/permission. Рассылайте только подписчикам с тегом vip или разрешением orders. count_subscribers_filtered возвращает реальное число.
Polling GET /v1/broadcast/:job_id — pending → processing → completed с реальными счётчиками. Таблица broadcasts хранит историю.
Фото, видео, inline-кнопки с URL или callback_data. Формат как в /v1/send — единообразно с персональными уведомлениями.
По завершении придёт событие с total/sent/failed. Без polling — push-модель с HMAC-SHA256 подписью.
При перезапуске воркера — recover_stale_jobs через rpop. Один job не отправится дважды. Проверка статуса до добавления в processing.
Как это работает
Передайте текст или template, опциональные фильтры (channel, segment, permission). В ответ — job_id и статус pending.
Задача попадает в Redis List. Воркер с BRPOP берёт её, загружает подписчиков с фильтрами, отправляет по одному с задержкой 5 секунд.
Получайте прогресс через GET /v1/broadcast/:job_id или ждите webhook broadcast.completed с финальными метриками.
FAQ
При текущем throttling (5 сек между сообщениями) — около 14 часов. Пропускная способность — ~17 сообщений в минуту. Для критичных кейсов корпоративный тариф даёт расширенные лимиты.
Такие записи деактивированы автоматически и не включаются в рассылку. Счётчик failed показывает остальные ошибки — bot muted, media too large, caption length и т.п.
Да. DELETE /v1/broadcast/:job_id останавливает воркер на следующей итерации. Уже отправленные сообщения — не отзываются.
До 100 000 в одной рассылке. Больше — разбивайте на несколько сегментов (например, по permission или по дате подписки).
Да. Таблица broadcasts хранит все запуски с метриками. Отображается в кабинете с фильтрами и поиском, доступна через API.
1 кредит за каждую успешную доставку подписчику. Failed доставки не списываются. При 10 000 успешных отправок — 10 000 кредитов.
Без привязки карты. 100 кредитов в месяц бесплатно — этого хватит, чтобы попробовать все возможности.
Решения и кейсы
Частые сценарии, в которых Zapnoty заменяет связку из 3-4 отдельных сервисов.
В 10 раз дешевле SMS, доходчивее email
OTP, статусы заказов, брошенные корзины, промо
Формы с уведомлением сразу в Telegram, без забытых ящиков
Drip-уроки, напоминания, Q&A и вход через бот
Поддержка в Telegram/Max без тяжёлого чат-виджета