Рассылки на сотни тысяч подписчиков
без боли инфраструктуры

Одна строка JSON — миллионы сообщений. Очередь, retry, персональные переменные, сегменты и прогресс в реальном времени. Пока вы спите, рассылка идёт.

· Throttling 5 сек, retry 3×, HMAC webhooks

job_id: b7f3...
Рассылка обновления 2.0
pending
0 / 2859 0.0%
sent
0
failed
0
POST /v1/broadcast retry 3× · webhook broadcast.completed
100 000
подписчиков за одну рассылку
Redis
очередь с дедупликацией
retry с exponential backoff
Live
sent / failed в реальном времени

Почему без нас тяжело

Broadcast своими руками — это целая инфраструктура

Очередь, воркеры, мониторинг

Чтобы не стрелять себе в ногу при 10 000 отправок, нужен Redis/RabbitMQ, отдельный воркер, мониторинг падений, дедупликация.

Rate limit платформы

Telegram и Max банят ботов за всплески. Нужен throttling 30 сообщений/сек, плавное наращивание, распределение по времени.

Персонализация и сегменты

«Дорогой Иван…» — это персональные переменные для каждого получателя. Без шаблонного движка и JOIN к подпискам — не взлетит.

Что внутри

Всё, что нужно для массовой отправки

Персональные переменные

{{first_name}}, {{username}}, {{subscriber_id}}, {{lang}} — подставляются индивидуально для каждого получателя через render_subscriber_vars.

Сегменты и permissions

Фильтры channel/segment/permission. Рассылайте только подписчикам с тегом vip или разрешением orders. count_subscribers_filtered возвращает реальное число.

Прогресс sent / failed

Polling GET /v1/broadcast/:job_id — pending → processing → completed с реальными счётчиками. Таблица broadcasts хранит историю.

Media + кнопки

Фото, видео, inline-кнопки с URL или callback_data. Формат как в /v1/send — единообразно с персональными уведомлениями.

Webhook broadcast.completed

По завершении придёт событие с total/sent/failed. Без polling — push-модель с HMAC-SHA256 подписью.

Дедупликация и recovery

При перезапуске воркера — recover_stale_jobs через rpop. Один job не отправится дважды. Проверка статуса до добавления в processing.

Как это работает

От запуска до webhook.completed

01

POST /v1/broadcast

Передайте текст или template, опциональные фильтры (channel, segment, permission). В ответ — job_id и статус pending.

02

Очередь и воркер

Задача попадает в Redis List. Воркер с BRPOP берёт её, загружает подписчиков с фильтрами, отправляет по одному с задержкой 5 секунд.

03

Прогресс и завершение

Получайте прогресс через 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 кредитов.

Бесплатный старт

Подключите за 5 минут

Без привязки карты. 100 кредитов в месяц бесплатно — этого хватит, чтобы попробовать все возможности.