Документация › Инструменты бота › Рассылки

Рассылки по базе контактов

Обновлено 30 октября 2026 г.

Появилась акция или новость? Отправьте сообщение сразу своей базе в WhatsApp или Telegram, с сегментами, картинкой, отложенным запуском и кнопками.

⏱ 9 мин · 👤 для владельца и админа · 🟢 live

За 30 секунд:
  • Раздел «Рассылки» в левом меню: массовое сообщение по своим контактам, канал выбирается на экране.
  • WhatsApp и Telegram. WhatsApp открыт с 28.10.2026, но по строгим правилам: пишем только тем, кто вам хоть раз отвечал.
  • Сегментируйте по статусу лида, тегу, рекламной кампании и давности переписки; перед отправкой видно охват и сколько времени займёт.
  • Можно отложить на будущее, приложить картинку и кнопки (ответ/ссылка).
  • Кто написал «стоп», исключается автоматически. Отправка идёт медленно и с паузами: так номер остаётся живым.
Раздел «Рассылки»: массовая отправка по сегментам с отложенным запуском
Раздел «Рассылки»: массовая отправка по сегментам с отложенным запуском

Зачем это нужно

Дожимы напоминают о себе одному клиенту по таймеру. А рассылка это когда нужно сказать всем сразу: «в субботу скидка 20%», «открылся новый филиал», «записи на январь открыты». Раньше для этого пришлось бы писать каждому руками, теперь это одно сообщение и пара кликов.

📌 Пример. Студия запускает мастер-класс. Владелец делает рассылку по тем, кто писал за последние 90 дней: 172 человека получают афишу с текстом, отправка растягивается на два часа, ни один отписавшийся сообщение не получает.

Главное правило: пишем только тем, кто вам отвечал

В рассылку попадает человек, у которого есть хотя бы одно входящее сообщение вам. Неважно, он написал первым или ответил на ваше, важно, что разговор был.

Почему так строго: диалог, где писали только вы, для WhatsApp ничем не отличается от холодной рассылки по купленной базе. Именно за это блокируют номера. Поэтому контакты, которых завёл ваш же сотрудник или бот по номеру телефона, в рассылку не попадут, пока человек не ответит.

Кого ещё система пропустит и почему

Причина пропускаЧто это значит
ОтписалсяЧеловек написал «стоп» в любом канале
Нам ни разу не писалОдносторонний диалог, его открыли мы
Писал давноПоследнее его сообщение старше вашего окна давности (по умолчанию 90 дней)
Ждёт нашего ответаЧеловек написал за последние 3 дня, а ему никто не ответил: сначала ответ, потом реклама
Два наших сообщения без ответаЕго уже дожимали, он молчит
Недавно получил рассылкуЧаще раза в 7 дней одному человеку не пишем
Не доставляетсяПрошлое сообщение так и не дошло: номер мёртв или нас заблокировали
Группа или архивГрупповые чаты и архивные диалоги в рассылку не идут

Все причины видны в отчёте по рассылке: не «не получили 57», а поимённо и почему.

Что понадобится

  • ☐ Подключённый WhatsApp или Telegram-канал.
  • ☐ Роль владелец или админ проекта (раздел доступен только им).
  • ☐ Для WhatsApp: подтверждение, что люди согласны получать от вас сообщения.
  • ☐ Желательно, настроенные теги, чтобы точно выбрать, кому слать.

Шаги

1. Откройте раздел «Рассылки» и выберите канал

В левом меню нажмите «Рассылки». Слева форма новой рассылки, справа история.

Сверху две плитки канала, и каждая сразу говорит своё состояние: «WhatsApp, номер на связи» или «номер не подключён», «Telegram, бот подключён» или «бот не подключён». Если выбранный канал не готов, под плитками появится подсказка со ссылкой на «Каналы», а кнопка запуска останется серой: так вы не узнаёте о проблеме после нажатия.

Рассылку можно запустить и без экрана: ваш ИИ-администратор умеет это сам, и то же самое доступно по API.

2. Выберите, кому отправить

Сузьте аудиторию любым фильтром:

  • Статус лида: например только «горячие».
  • Тег: например «постоянный клиент».
  • Рекламная кампания: только пришедшим по конкретной ссылке.
  • Давность переписки: писал за последние 7 / 30 / 90 дней.

Панель «кому уйдёт» показывает число получателей полосой, а рядом столбиком причины пропуска с именами первых трёх («50 ждут вашего личного ответа: Айгерим, Артём, Мила и ещё 47»). Ссылка «Показать всех по именам» открывает полный список по причинам. Под панелью стоит строка главного правила: пишем только тем, кто писал вам сам, не позже окна давности, и в кабинете это не отключается.

💡 Совет. Перед отправкой показывается охват, число пропущенных с причинами и примерное время. Два часа на двести человек это норма, а не поломка: медленный темп бережёт номер. База больше дневного потолка считается ДНЯМИ: пять тысяч человек при потолке 500 это десять дней, и каждый день рассылка пойдёт сама.

3. Напишите сообщение

Введите текст. Полезное:

  • {{name}} подставит имя клиента. Нет имени, подстановка аккуратно уберётся.
  • Картинка с подписью: афиша, меню, прайс.
  • До 8 кнопок: ответ (клиент жмёт, бот продолжает диалог) или ссылка (http/https).
  • Несколько вариантов текста (до пяти): они чередуются между людьми.
  • Галочка «ИИ перепишет каждое сообщение»: каждый получает свою формулировку. Стоит токенов, примерно 11 центов на 220 сообщений.
⚠️ Почему варианты важны. Один и тот же текст, ушедший веером с одного номера, это главный признак, по которому WhatsApp отличает рассылку от переписки. Два-три варианта снижают риск сильнее, чем любой другой приём.

Под текстом строка темпа: «Раз в 30-45 секунд, до 500 в сутки, уложится в 1 день». Это кнопка: по ней открывается окно, где меняются дневной потолок, пауза между сообщениями, окно давности, частота на одного человека и «держаться расписания бота». Ночное окно в этом списке не меняется, см. ниже.

4. Отметьте согласие и отправьте

Для WhatsApp нужна галочка «У меня есть согласие этих людей на сообщения от нас». Без неё рассылка не запустится: отправка по чужим номерам без согласия это ваша ответственность, и мы хотим видеть её подтверждённой, а не предположенной.

  • Сейчас: рассылка уходит в очередь и идёт постепенно.
  • На потом: укажите дату и время, она стартует сама.

Перед кнопкой написано, сколько человек получат, примерно сколько это займёт и во сколько дней уложится. Рядом с текстом есть предпросмотр: сообщение показано пузырём, как его увидит клиент, с уже подставленным именем.

Сколько можно отправлять

ОграничениеЗначение
Пауза между сообщениями с одного номера30-45 секунд, случайная
Скорость80-120 сообщений в час
Дневной потолок на проект500 сообщений
Новый номер50 в первый день, 100 во второй, 200 в третий, дальше 500
Одному человекуне чаще раза в 7 дней
Время отправкис 9:00 до 21:00 по времени проекта, ночью пауза до утра

Начатая вечером рассылка не будет будить людей ночью: остаток уедет утром.

Рассылка в WhatsApp идёт, пока отвечает бот: нужна оплаченная подписка или бесплатные дни. Если подписка кончилась, рассылка встаёт на паузу с причиной «нет оплаченной подписки», а после оплаты её можно продолжить с того же места кнопкой «Продолжить». Telegram бесплатный, там это условие не действует. Проект на паузе (раздел «Настройки») рассылку тоже придерживает: она ждёт и уходит, когда проект снова работает. Ночное окно не отключается ни на экране, ни по API: разбуженный в три ночи человек жалуется, а жалоба бьёт по репутации номера сильнее, чем любая выгода от ночной отправки. Если у проекта включено ещё и расписание бота, рассылка держится и его тоже (то есть идёт по более узкому из двух окон).

Что остановит рассылку само

  • Много недоставленных. Если на первых двадцати сообщениях больше 20% не дошло, рассылка встаёт и вам приходит письмо. Так выглядят мёртвые номера и блокировки, а это прямой риск бана.
  • Много отписок. Больше 5% отписавшихся за эту рассылку, и остаток тоже останавливается. Жалобы это то, по чему WhatsApp считает репутацию номера.
  • Номер забанен. Рассылка останавливается целиком, список сохраняется: после замены номера её можно продолжить.
  • Номер отвалился. Отправка ждёт переподключения и сама продолжает.
  • Связь моргнула. Человека пробуем ещё два раза на следующих подходах и только потом помечаем «не доставлено»: одна неудачная секунда не должна вычёркивать людей из рассылки.

Остановленную рассылку можно продолжить с того же места: уже отправленным повторно ничего не уйдёт, а предохранитель после возобновления считает заново, а не по старым сообщениям.

Кнопка «Отменить» срабатывает сразу, а не «после текущей порции»: отправка проверяет статус перед каждой следующей группой получателей.

Отдельно от этого у нас есть общий стоп на всю платформу: если по номерам пойдут жалобы, мы можем придержать рассылки у всех разом, пока разбираемся. Ничего при этом не теряется, остаток уедет после снятия. Пока стоп включён, на экране про это написано ещё ДО нажатия, а кнопка запуска серая.

Проверьте, что работает

Статус меняется: черновик → запланирована → в очереди → отправляется → отправлено. В списке видно счётчики и причины пропусков. Идущую рассылку можно отменить в любой момент.

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

СимптомПричинаЧто сделать
Охват сильно меньше базыСработали правила аудиторииПосмотрите причины пропуска в отчёте
Охват = 0Узкий сегмент или всем писали только выОслабьте фильтр, расширьте окно давности
Отправка идёт медленноТак и задумано: 80-120 в часДождитесь, это защита номера
Рассылка встала на паузуСработал предохранительПрочитайте причину в письме, поправьте список и продолжите

Вопросы, которые обычно возникают

Разве за рассылки в WhatsApp не банят?
Банят за то, что люди жалуются и блокируют. WhatsApp смотрит на долю жалоб, а не на сам факт рассылки. Поэтому мы пишем только тем, кто вам отвечал, растягиваем отправку и останавливаемся, если пошли отписки.

Какое окно давности безопасно?
До 30 дней человек помнит ваш разговор. До 90 дней помнит бизнес, но не разговор: такому лучше напомнить, кто вы, прямо в первой строке. Дальше 90 дней мы не пускаем вовсе.

А если человек просил больше не писать?
Написавшие «стоп» исключаются из любой рассылки автоматически, даже если бот у вас выключен.

Это то же самое, что дожимы?
Нет. Дожимы это авто-напоминания одному клиенту по таймеру. Рассылка это разовое сообщение сразу многим. Темп у них одинаковый, и очередь на номер общая.


Под капотом (для разработчиков и любопытных)

  • Таблицы project_broadcasts (+ channel, audience, body_variants, paraphrase, consent_confirmed, skip_breakdown, paused_reason), project_broadcast_recipients (+ skip_reason, body_used, message_id), project_broadcast_settings (темп и потолки на проект). Статусы: draft → scheduled → queued → sending → paused → sent / failed / canceled.
  • Аудиторию считает ОДНА функция базы select_broadcast_candidates (crm/sql/0241): её зовёт и предпросмотр ?count=1, и запуск, поэтому разойтись им нечем. Она же возвращает причину пропуска по каждому диалогу.
  • API проекта: GET (список, ?count=1 предпросмотр с разбивкой причин, именами первых трёх на причину и оценкой времени; &names=1 добавляет полные списки имён для окна «кто не получит»), POST (создать и запустить), PATCH {action:"cancel"|"resume"}, GET/PATCH /broadcasts/settings. Гейт: owner/admin, для WhatsApp обязателен consent_confirmed.
  • Темп: общий с дожимами замок на номер в Redis (lib/wa-pace.ts, 30-45 секунд), сверху дневной потолок с лестницей прогрева по возрасту номера.
  • Часы: дневное окно берётся из общего правила платформы «мы пишем первыми» (core/constants/send-window.ts, 9:00-21:00 по часам проекта), поэтому у рассылки нет своей копии ночи. Расписание бота проверяется отдельно и только если включено. Сторож: ночной случай в broadcast-runner.test.ts.
  • Оценка «сколько дней» считает обе границы: дневной потолок и 12 часов отправки в сутки, иначе на большой базе предпросмотр обещал один день вместо двух.
  • Отправка идёт своей задачей раз в минуту (broadcast-tick, с 30.10.2026; до этого рассылка сидела на тике дожимов раз в 5 минут и отправляла с номера одно сообщение за тик, 12 в час вместо обещанных 80-120). Номера обходятся по кругу, сообщение с номера уходит, как только освободился замок темпа. Разрешение «писать первыми» (ночь, пауза проекта, оплата) общее с дожимами и «Исходящими»: writeFirstVerdict в @dos/crm, сторож night-window-canon.test.ts.
  • Предохранители читают broadcast_health (доля недоставленных и доля отписок на первых отправках, с отсрочкой 10 минут на квитанции).
  • Каждое отправленное сообщение ложится в переписку с пометкой автора broadcast: клиент отвечает, и бот видит, на что.
  • Получатель ЗАХВАТЫВАЕТСЯ до отправки (claim_broadcast_recipients, одна операция базы): если процесс умрёт между отправкой и записью, следующий тик не напишет человеку второй раз. Захват умершего процесса освобождается через 15 минут, отказ по темпу отпускает его сразу.
  • Аварийный стоп платформы: настройка broadcasts_paused в админке. Отправщик пропускает тик, а API не заводит новую рассылку; очередь и статусы не трогаются.

Простыми словами

Это как разослать одно объявление сразу всем своим клиентам, но аккуратно. Система сама выберет тех, с кем у вас реально был разговор, разложит отправку на часы, подставит имена, остановится, если люди начнут отписываться, и никогда не напишет тому, кто просил не беспокоить. Поэтому номер остаётся живым, а объявление доходит.


Дальше: → Лиды
Связано: Дожимы · Теги · Защита номера от блокировки