SMPP-статусы: как читать DLR и не тратить деньги на мёртвые номера

SMPP-статусы: как читать DLR и не тратить деньги на мёртвые номера

Каждая отправленная SMS стоит денег. Если номер давно заблокирован, абонент уехал или телефон выключен — оператор всё равно спишет средства за попытку доставки. DLR (Delivery Receipt) — это техническое уведомление, которое приходит после отправки и показывает, дошло ли сообщение. Научившись читать эти статусы, вы сможете убрать «мёртвые» номера из базы и перестать тратить бюджет на воздух. В статье разберём, какие бывают статусы, как их расшифровать и что делать с данными.

Что такое DLR и зачем он нужен малому бизнесу?

DLR — это ответ от оператора связи на запрос о статусе доставки. Когда вы отправляете SMS через SMPP-протокол, система генерирует уникальный идентификатор сообщения. Через несколько секунд (или минут) приходит пакет с кодом: «доставлено», «не доставлено», «просрочено», «отклонено» и так далее. Для владельца небольшого магазина или салона эти данные — прямой способ увидеть, какие номера реально работают.

Без DLR вы платите за все отправки вслепую. С ними — знаете, что 10% базы не принимает сообщения, и можете очистить список. За год экономия на «мёртвых» номерах может составить заметную сумму, особенно если рассылки идут еженедельно.

Какие статусы SMPP бывают и что они означают?

Стандарт SMPP определяет несколько базовых статусов доставки. Вот основные коды, которые вы увидите в DLR:

Статус (код)ЗначениеЧто делать бизнесу
DELIVRDСообщение доставлено абонентуНомер активен, можно продолжать рассылки
UNDELIVНе удалось доставить (абонент недоступен, телефон выключен, роуминг без настроек)Повторить попытку через 1–2 дня; если повторный статус тот же — исключить из активной базы
EXPIREDИстёк срок жизни сообщения (обычно 24–48 часов)Номер может быть временно недоступен; после 2–3 EXPIRED подряд — удалить
REJECTDОператор отклонил сообщение (неверный формат, спам-фильтр, чёрный список)Проверить текст и настройки; возможно, номер занесён в стоп-лист оператора
UNKNOWNСтатус не определён (редкий случай)Требуется дополнительный анализ; обычно переотправляют через другой канал

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

Как потери бюджета связаны с «мёртвыми» номерами?

Допустим, вы отправляете 1000 SMS в месяц. Средняя цена сообщения по Беларуси — около 0,05 BYN (цифра для примера). Если 5% номеров «мёртвые» (не доставляются), вы теряете 50 × 0,05 = 2,5 BYN в месяц. Кажется немного. Но если база растёт и вы не чистите её годами, доля неактивных номеров может достигать 15–20%. Тогда потери — уже десятки рублей ежемесячно. Плюс время на бесполезные отправки и риск попасть в спам-фильтры из-за высокого процента недоставленных сообщений.

Регулярный анализ DLR позволяет видеть динамику: какие номера перестали отвечать, какие операторы чаще «теряют» сообщения. На основе этих данных вы принимаете решение — исключить контакт, изменить время отправки или переключиться на другой канал (Viber, например).

Как настроить приём DLR в своей системе?

Для получения DLR нужно, чтобы ваша платформа (или интеграция через SMPP) поддерживала запрос статуса. Обычно это делается двумя способами:

  • Синхронный запрос — после отправки вы отправляете команду query_sm и получаете статус. Подходит для небольшого количества сообщений (до нескольких сотен в день).
  • Асинхронное уведомление — оператор сам присылает DLR на заданный вами адрес (например, на ваш сервер). Это основной метод для массовых рассылок: вы не блокируете очередь, а просто обрабатываете входящие пакеты.

В большинстве сервисов рассылок (в том числе тех, что работают через SMPP) приём DLR уже встроен. Вам нужно только включить опцию «получать статусы доставки» в личном кабинете или API. Если используете собственную CRM — убедитесь, что она умеет принимать и парсить входящие DLR-пакеты. Процесс обычно выглядит так: отправка → получение message_id → ожидание deliver_sm → разбор статуса.

Типичные ошибки при работе с DLR

  • Игнорировать повторяющиеся UNDELIV. Один сбой — не повод удалять номер. Но если статус «не доставлено» приходит три рассылки подряд — контакт мёртв.
  • Путать EXPIRED с UNDELIV. EXPIRED — сообщение вообще не попало на телефон (срок жизни вышел). UNDELIV — телефон был, но не смог принять. Тактика разная.
  • Не проверять статусы после повторной отправки. Если вы переотправили на тот же номер и снова получили REJECTD — скорее всего, номер заблокирован оператором. Дальнейшие попытки бесполезны.
  • Хранить историю DLR только в CRM. Полезно выгружать статистику в Excel или Google Sheets раз в месяц, чтобы видеть тренды по операторам и времени суток.
  • Не учитывать задержки DLR. Иногда уведомление приходит через 10–30 минут после отправки. Не делайте выводов по одному сообщению в первые 5 минут.

Практический совет: как часто анализировать DLR?

Достаточно раз в неделю просматривать отчёт по недоставленным сообщениям. Если база маленькая (до 500 контактов) — можно раз в месяц. Главное — не накапливать «мёртвые души» годами. Заведите правило: если контакт не получил три последовательные рассылки (с интервалом не меньше недели), он автоматически перемещается в «неактивные». Потом, раз в квартал, можно попробовать отправить им сообщение с предложением подтвердить подписку. Те, кто не ответит — окончательно удаляются.

Для тех, кто хочет глубже разобраться в настройке рассылок и экономии бюджета, будет полезен материал о 5 сценариях SMS-рассылок, которые сэкономят бюджет малого бизнеса в 2026.

3 шага, которые можно сделать сегодня:

  1. Откройте статистику рассылок за последний месяц и посмотрите, сколько сообщений имеют статус UNDELIV или EXPIRED. Если таких больше 5% — пора чистить базу.
  2. Настройте автоматическое получение DLR в вашей CRM или личном кабинете сервиса рассылок. Убедитесь, что видите не только «доставлено/не доставлено», но и конкретные коды.
  3. Создайте правило: после трёх неудачных доставок подряд переводить номер в отдельный сегмент и не тратить на него бюджет до повторной верификации.