PD Документация ← На главную

Каналы

Каналы — это провайдеры доставки, которые PushData использует для отправки уведомлений. Каждый канал привязан к отдельному приложению.

Чтобы настроить новый канал, откройте Приложения → Каналы → Добавить канал.

Email (SMTP или Resend)

Письма уходят через ваш SMTP-сервер (Mail.ru для бизнеса, Яндекс 360, корпоративный сервер — любой) или через API Resend; провайдер выбирается при создании канала.

ПолеОписание
Хост, портSMTP-сервер и порт: 465 (SSL) или 587 (STARTTLS)
Логин, парольУчётная запись SMTP (у Mail.ru и Яндекса — пароль приложения, не пароль от почты)
Адрес и имя отправителяПоле From: исходящих писем
API-ключ ResendВместо SMTP-полей, если выбран Resend

Подробно и с примерами провайдеров — Email.

SMS (SMS.ru, SMSC)

Отправляйте SMS через российский шлюз — SMS.ru или SMSC (smsc.ru); один шлюз на канал.

ПолеОписание
api_idSMS.ru → Настройки → API
Логин, парольSMSC: логин кабинета и пароль (или пароль для API)
Имя отправителяСогласованное с оператором буквенное имя; пусто — имя шлюза по умолчанию

Telegram

Личные сообщения контактам через бота вашего приложения и рассылки в группу или канал.

ПолеОписание
Токен ботаОт @BotFather — формат: 123456:ABC-DEF...; при сохранении проверяется, вебхук бота направляется в PushData
ID чатаНеобязательно: группа или канал (например, -1001234567890), куда уходит отправка без target

Контакт становится доступен, когда открывает бота по своей ссылке Telegram (карточка контакта, поле telegramLink) или пишет ему. Подробно — Telegram.

MAX

Адресные сообщения контактам в мессенджере MAX (max.ru) через бота вашего приложения.

ПолеОписание
Токен ботаОт @MasterBot; при сохранении проверяется, бот подписывается на вебхук PushData

Контакт становится доступен, когда открывает бота по своей ссылке MAX (карточка контакта, поле maxLink) или пишет ему; ваш сервер может передать max_user_id сам. Подробно — MAX.

VK

Личные сообщения от вашего сообщества VK тем, кто их разрешил.

ПолеОписание
Ключ сообществаИз настроек API сообщества, с правом messages (и manage, чтобы канал сам настроил Callback API); при сохранении проверяется
ID сообществаЧисло сообщества; короткий адрес заполняется при сохранении

Контакт становится доступен, когда пишет сообществу по своей ссылке VK (карточка контакта, поле vkLink) или разрешает его сообщения; ваш сайт может передать vk_user_id сам. Подробно — VK.

Telegram Gateway

Коды подтверждения на номер телефона через сам Telegram — без бота и chat id; контакту нужен телефон. $0,01 за доставленный код, недоставленный возвращается.

ПолеОписание
Токен Gateway APIИз gateway.telegram.org → Settings; «Проверить связь» проверяет его на номере телефона
Срок кода, длина кода, канал-отправитель30–3600 с, 4–8 цифр, необязательный верифицированный канал, от чьего имени показывается код

Отправка с channel_type: telegram_gateway несёт код в data.code или доверяет его шлюзу (тогда POST /api/v1/notifications/{id}/verify проверяет введённое человеком). Подробно — Telegram Gateway.

Резервный канал и переключение

Каналу можно назначить резервный — другой активный канал того же типа (второй SMTP, SMSC за SMS.ru) в форме канала или fallbackChannelId в GraphQL (createChannel / updateChannel; null убирает). Тогда:

  • доставка, которую канал не смог выполнить из-за временного сбоя — провайдер недоступен, ошибка сети, 429 / 5xx, — сразу уходит через резерв, в той же попытке; журнал доставки это помнит (DeliveryLog.routedVia). Постоянная ошибка (адрес, который провайдер отверг) остаётся за получателем и другой канал не пробует;
  • каждый такой сбой засчитывается каналу; после CHANNEL_BREAKER_THRESHOLD подряд (по умолчанию 3) его предохранитель открывается на CHANNEL_BREAKER_COOLDOWN_MS (5 минут): следующие доставки уходят в резерв первым, не дожидаясь сбоя основного. Список каналов показывает «сбой · резерв до ЧЧ:ММ»;
  • успешная доставка через канал закрывает предохранитель и сбрасывает счётчик — трафик возвращается сам. Состояние видно в Channel.consecutiveFailures / breakerOpenUntil.

Только один переход: резерв резерва не рассматривается. Отправки без channel_id идут через самый ранний активный канал типа — с его резервом.

Стоп-лист

Адреса, на которые отправки больше не уходят, — один список на приложение, e-mail и SMS:

  • пополняют провайдеры: постоянный отказ почтового сервера, называющий ящик (550 5.1.1 user unknown, «mailbox unavailable / does not exist», «recipient rejected»), кладёт адрес в список с причиной bounce; «нет маршрута / неверный номер» от SMS-шлюза (SMS.ru 202 / 207, SMSC 7 / 8) — invalid; собственный стоп-лист шлюза (SMS.ru 209) — stop. Отказы по политике (спам, relay denied) и любые временные сбои (4xx, 5xx самого сервера) ничего не добавляют: они ничего не говорят о получателе;
  • пополняете вы: Стоп-лист в меню приложения, POST /api/v1/suppressions ({ channel: "email" | "sms", address, reason?: manual | complaint | stop | bounce | invalid }), addSuppression в GraphQL — жалоба, просьба по телефону, импорт из старой системы.

Рассылка пропускает адреса из списка ещё до отправки (они считаются в total_skipped), шаг SEND сценария пропускает их как отписку, а адрес, попавший в список посреди рассылки (первый отказ пачки), остальная её часть уже не пробует. GET /api/v1/suppressions?channel=sms перечисляет записи с ответом провайдера; DELETE /api/v1/suppressions/{id} (или «Убрать» на странице) снова пропускает адрес. Стоп-лист — про доставляемость; выбор человека живёт в центре настроек и реестре согласий.

Хвост отписки в SMS

Антиспам-правила с 1 августа 2025 требуют инструкцию по отписке в каждой массовой SMS. Поэтому каждая неслужебная SMS контакту заканчивается строкой — по умолчанию Отписка: {url} — с короткой ссылкой из 8 символов (https://app.pushdata.ru/u/AbC12xYz, выдаётся контакту один раз и переиспользуется): человек открывает её, подтверждает и отписывается от SMS приложения целиком (от всех тем; согласия по каналу закрываются). Отправки transactional: true и обязательные темы хвоста не несут. Настройки приложения → Соответствие закону → Хвост отписки в SMS выключает его (если отписку вы обрабатываете сами) и меняет текст ({url} — место ссылки; не больше 160 символов; smsOptOutFooter / smsOptOutText в GraphQL).

Домен отправителя

У сохранённого e-mail канала кнопка Проверить DNS читает у домена из адреса отправителя SPF (TXT v=spf1, заканчивающийся ~all / -all), DKIM (ключ в <селектор>._domainkey.<домен> — селектор виден в заголовке DKIM-Signature: s=… ваших писем, default, если не указан), DMARC (_dmarc.<домен>, p=quarantine или reject, когда SPF и DKIM проходят) и MX и говорит, чего не хватает. emailDomainCheck(channelId, dkimSelector) в GraphQL отвечает тем же. Без этих трёх записей письма домена уходят в спам при любом сервере.

Соответствие закону: 41-ФЗ и антиспам-правила

Два российских правила определяют, какой канал компания вправе использовать:

  • 41-ФЗ (действует с июня–сентября 2025) — госорганы, банки, операторы связи, некредитные финансовые организации, маркетплейсы и платформы с аудиторией больше 500 000 не вправе информировать клиентов через иностранные мессенджеры — Telegram, WhatsApp, Viber (штраф до 200 000 ₽ по ст. 13.11.2 КоАП). Разрешённый мессенджер — MAX. Включите «Организация из перечня 41-ФЗ» в настройках приложения (restrictedMessengers в GraphQL): каждая отправка, проверка канала и шаг сценария через Telegram отклоняются с 400 channel_restricted (прогон сценария завершается ошибкой с причиной в журнале доставки), страница отправки закрывает вкладку Telegram, а роль берёт канал MAX — тот же режим «по контактам» с подписанной ссылкой. SMS, e-mail, push и in-app не затрагиваются.
  • Антиспам-правила с 1 августа 2025 — массовой SMS нужно явное документированное согласие абонента (дата, способ, текст), инструкция по отписке в каждом сообщении, а компания обязана показать согласие по запросу; оператор даёт абоненту блокировку массовых рассылок. PushData ведёт реестр согласий — каждая подписка с доказательством, закрытая отпиской, — и при отмеченном «Требовать согласие» для SMS в настройках приложения отправляет только тем, кто его дал (transactional-отправки освобождены); каждая неслужебная SMS несёт хвост отписки с короткой ссылкой.
КаналОрганизации из 41-ФЗОстальные
MAXдада
SMS, e-mail, push, in-app, сообщения сообщества VKдада
Telegramнет (channel_restricted)да

Push-уведомления

Для push-уведомлений (FCM, APNs, Web Push) настройте Push-провайдер в разделе Приложения → Push-провайдеры, а не канал.

Использование каналов в сценариях

После настройки канал становится доступным при добавлении узла Отправка в сценарий. Выберите канал и шаблон в панели настройки узла.