Выбор сервиса push-уведомлений: критерии надежности и оптимизация бюджета
Пользователь оформил заказ, закрыл приложение и через двадцать минут получил пуш «Товары ждут в корзине». Другой пользователь уже неделю не открывал сервис, но ежедневно видит одинаковое «Мы скучаем». В обоих случаях проблема не в самом канале push.

Проблема в том, что платформа рассылок встроена в продуктовый флоу как почтовая труба, а не как часть пользовательского пути.
Выбор провайдера push-уведомлений для мобильного приложения редко сводится к строке с тарифом. На одном экране команда видит цену за активных пользователей, на другом — обещание «быстрой интеграции», на третьем — длинный перечень маркетинговых функций. Но реальная стоимость ошибки проявляется позже: в день крупной акции, при миграции базы токенов, в момент, когда Android начинает агрессивно усыплять приложение, или когда аналитик не может объяснить, дошёл ли пуш и что пользователь сделал после него.
Сервис стоит оценивать как рабочий слой между данными продукта, FCM и APNs, маркетинговой логикой и интерфейсом пользователя. Его задача — не просто отправить сообщение, а доставить уместный сценарий вовремя, не развалив бюджет и не превратив приложение в генератор раздражения.
Техническая надежность: SLA 99,9% — стартовая точка, а не знак качества
В сравнении сервисов рассылки пушей первым обычно смотрят на доступность платформы. Это правильно, но недостаточно. SLA на уровне 99,9% и выше — базовый ориентир для сервиса, на который завязаны транзакционные коммуникации: статусы заказов, подтверждения операций, напоминания о встречах, сообщения службы безопасности.
Здесь есть важное разделение, которое часто теряется в презентациях. Провайдер push-уведомлений отвечает за свою инфраструктуру: API, сегменты, очередь отправки, хранение настроек, формирование кампании, передачу сообщения в Apple Push Notification service и Firebase Cloud Messaging. Но он не контролирует весь путь до экрана пользователя.
На доставку влияют:
- разрешения, которые пользователь выдал приложению;
- актуальность push-токена;
- доступность устройства и соединения;
- правила энергосбережения конкретного Android-производителя;
- ограничения операционной системы на фоновые процессы;
- обработка уведомления внутри самого приложения;
- работа APNs и FCM как платформенных посредников.
Поэтому фраза «доставляемость 100%» должна настораживать. Особенно для Android: OEM-прошивки могут ограничивать фоновую активность и отложить обработку уведомления. Нормальный провайдер не маскирует этот факт, а даёт команде наблюдаемость: статусы отправки, причины недоставки, события открытия, отписки, ошибки токенов и динамику разрешений.
SLA полезно читать не как рекламную наклейку, а как описание зоны ответственности. У продуктовой команды должны появиться конкретные ответы:
1. Что именно включено в показатель доступности: интерфейс, API, отправка кампаний, трекинг событий или всё сразу.
2. Как сервис сообщает об инцидентах и плановых работах.
3. Есть ли понятная процедура эскалации для критичных рассылок.
4. Какие данные доступны после сбоя: можно ли отделить неотправленные сообщения от отклонённых платформой и от недоставленных на устройство.
5. Можно ли повторить кампанию только на нужном сегменте, не устроив повторную волну всем пользователям.
Для небольшого контентного приложения несколько часов недоступности кабинета — неприятность. Для банка, сервиса доставки или медицинского продукта это может разорвать ключевой пользовательский сценарий. Человек ждёт не «push как канал», а подтверждение, что заказ принят, водитель приехал, операция требует внимания. В такой точке надежность — часть интерфейса, хотя пользователь никогда не увидит панель провайдера.
Push-платформа хороша не тогда, когда умеет отправить миллион сообщений, а когда команда после сбоя точно понимает судьбу каждого критичного сценария.
Delivery Rate нельзя читать без контекста
Метрика Delivery Rate звучит убедительно, пока не начинаешь разбирать её состав. Один сервис может считать доставленным сообщение, принятое платформой APNs или FCM. Другой показывает доставку на устройство. Третий отделяет техническую доставку от открытия. Эти цифры нельзя складывать в одну таблицу без расшифровки методологии.
Для продуктового решения важнее собрать собственную цепочку метрик:
- сколько пользователей дали разрешение на уведомления;
- сколько устройств имеют валидный токен;
- сколько сообщений принято push-шлюзом;
- сколько доставлено согласно данным платформы;
- сколько уведомлений показано, открыто или обработано приложением;
- что произошло после открытия: завершил ли пользователь целевое действие.
Именно на последнем шаге заканчивается техническая доставка и начинается продуктовый эффект. Пуш об оплате может иметь высокий показатель открытия, но проваливать сценарий, если тап ведёт на домашний экран вместо конкретного счёта. Платформа рассылок не исправит плохой диплинк автоматически, но должна позволить его прозрачно настроить и проверить.
Архитектура доставки: очередь, пропускная способность и реальность Android
Когда база растёт, вопрос «сколько пушей мы можем отправить» меняется. Важна уже не абстрактная массовая рассылка, а поведение очереди в конкретный момент. Например, сервис должен разослать уведомление о старте продажи билетов, а затем почти одновременно — персональные напоминания тем, кто бросил оформление. Если кампания застревает в очереди, ценность сообщения быстро исчезает.
Пропускная способность push-шлюзов — это не только пиковое количество сообщений в секунду. Команде нужно понять, как платформа ведёт себя при всплеске и какие инструменты даёт для управления нагрузкой:
- поддерживает ли отложенный старт и равномерное растягивание кампании;
- можно ли ограничить скорость отправки на сегмент;
- как приоритизируются транзакционные и маркетинговые пуши;
- что происходит с повторными попытками при временных ошибках;
- есть ли очередь и журнал кампаний, доступные через интерфейс или API;
- как сервис обрабатывает невалидные и обновившиеся токены.
Пиковая рассылка без контроля частоты — знакомый способ испортить и метрики, и настроение аудитории. Пользователь, который получил три пуша за две минуты от разных триггеров, не видит сложную оркестрацию CRM, аналитики и бэкенда. Он видит приложение, которое не умеет держать дистанцию.
Android требует отдельного тестового контура
Критерии оценки push-уведомлений для Android и iOS не могут быть полностью одинаковыми. На iOS поведение сильнее стандартизировано системой, но разрешение на уведомления нужно заработать через онбординг и понятный момент запроса. На Android больше вариативности: версии ОС, производители устройств, системные настройки, режимы экономии батареи и собственные оболочки влияют на результат.
Это не аргумент в пользу отказа от Android-пушей. Это аргумент против уверенности, основанной на одном тестовом устройстве.
Перед контрактом стоит поднять тестовый проект и руками пройти типовые флоу:
1. Установить приложение с чистого устройства и проверить, когда и как появляется запрос разрешений. Если он возникает в первые секунды онбординга без объяснения пользы, будущая база подписчиков начнёт проседать ещё до первой кампании.
2. Отправить обычный маркетинговый пуш, тихое служебное уведомление и транзакционный сценарий. У каждого типа должны быть собственные правила приоритета, текста и перехода.
3. Протестировать диплинки в состояниях cold start, background и foreground. После нажатия пользователь должен попадать не «в приложение вообще», а в конкретный экран: заказ, чат, подборку, счёт.
4. Проверить поведение на нескольких версиях iOS и Android, а для Android — на распространённых OEM-устройствах. Отдельно посмотреть, не ломает ли энергосбережение ожидаемую механику.
5. Открыть аналитику провайдера и сверить её с событиями в продуктовой системе. Если расхождение нельзя объяснить, доверять красивому дашборду рано.
Уведомление — это продолжение интерфейса за пределами приложения. Оно должно сохранять контекст. Если пользователь открыл пуш о снижении цены, а карточка товара уже недоступна, флоу обязан аккуратно объяснить это и предложить следующий шаг, а не выкинуть человека в пустой каталог.
Сегментация и A/B-тесты: сервис выбирают по способности не шуметь
Платформы push-уведомлений часто продают возможность «охватить всю базу». Для ретеншна это слабая формулировка. База не является единым сегментом. В ней одновременно живут новые пользователи, спящие, лояльные, недавно оплатившие подписку, люди с незавершённым действием и те, кто уже сказал продукту «нет» — отпиской или удалением приложения.
Рабочая сегментация строится вокруг поведения и контекста. Не просто «пользователи Android», а, например, пользователи Android, которые просмотрели тарифы дважды за последние дни, но не оплатили подписку и не получали коммуникаций в заданный период. Чем точнее продукт умеет собрать такой сегмент, тем меньше потребность компенсировать слабую логику объёмом отправки.
При выборе провайдера полезно оценить, какие признаки сегментации доступны без ручной выгрузки базы:
| Параметр | Минимально рабочий уровень | Что даёт продуктовой команде |
|---|---|---|
| Атрибуты профиля | Платформа, язык, город, тип подписки | Локализовать и адаптировать коммуникацию |
| Поведенческие события | Открытие экрана, просмотр товара, оплата, отмена | Запускать сценарий по реальному действию, а не по календарю |
| Давность события | Последний визит, последняя покупка, период неактивности | Не писать человеку с устаревшим контекстом |
| Исключения | Недавняя покупка, открытый тикет, отписка от категории | Не дублировать и не раздражать |
| Частотные лимиты | Максимум сообщений за период и приоритеты кампаний | Защищать пользователя от конфликтующих триггеров |
| Контрольная группа | Исключение части аудитории из отправки | Измерять инкрементальный эффект, а не только открытия |
A/B-тест — это проверка флоу, а не конкурс эмодзи
Инструмент A/B-тестирования нужен не для бесконечной полировки заголовка. Его задача — проверить гипотезу о следующем действии пользователя. Иногда выигрывает короткий текст. Иногда — другой момент отправки. Иногда выясняется, что ни один вариант не нужен, потому что событие в продукте уже произошло.
Тест должен быть встроен в путь пользователя. Допустим, человек добавил товар в избранное. Команда проверяет два сценария: отправить пуш сразу при снижении цены или дождаться момента, когда товар снова появился в наличии. Здесь важно измерять не только открытие уведомления, но и переход в карточку, добавление в корзину, оплату, отмену заказа и повторные визиты.
Слабый тест отвечает на вопрос «какой текст открывают чаще». Сильный — «какое сообщение меняет поведение без ухудшения опыта».
Провайдеру не обязательно быть полноценной CDP или системой маркетинговой автоматизации. Но он должен корректно принимать события, собирать сегменты, запускать триггеры и отдавать результаты так, чтобы аналитика не превращалась в ручной разбор CSV-файлов.
Лучший пуш для ретеншна часто выглядит как отсутствие лишнего пуша: пользователь получает сигнал только там, где продукт действительно помогает продолжить действие.
Экономика рассылок: Per-MAU против Per-Message
Стоимость push-уведомлений для разработчиков нельзя оценивать по стартовому тарифу. Сначала нужно нарисовать реальную картину: сколько у приложения ежемесячно активных пользователей, сколько устройств приходится на одного человека, как часто команда делает массовые кампании, сколько работает триггерных сценариев, нужны ли web push и in-app сообщения.
На рынке распространены две логики расчёта: оплата за ежемесячно активных пользователей, Per-MAU, и оплата за фактический объём отправленных сообщений, Per-Message. Обе могут быть выгодными. Ошибка — выбирать модель, не связав её с поведением аудитории.
| Модель | Лучше работает, когда | Бюджетный риск | На что смотреть в договоре |
|---|---|---|---|
| Per-MAU | Приложение часто коммуницирует с активной базой, есть регулярные триггеры и несколько каналов | Платить приходится и за активных пользователей, которым в конкретный месяц почти не пишут | Как именно считается активный пользователь, учитываются ли несколько устройств, какие функции входят в лимит |
| Per-Message | Коммуникации редкие, база широкая, а кампании нерегулярны | Массовые рассылки и рост автоматических сценариев могут резко увеличить счёт | Тарификация повторных отправок, системных сообщений, web push, превышений и пакетных лимитов |
| Гибридная схема | Есть стабильное ядро активной аудитории и отдельные сезонные пики | Сложнее прогнозировать итоговую стоимость без истории отправок | Условия перехода между пакетами, стоимость перерасхода, доступность нужных модулей |
Как посчитать не тариф, а сценарий
Практичный расчёт начинается с карты коммуникаций. Не с вопроса «какой пакет взять», а с вопроса «сколько сообщений продукт действительно должен отправлять».
Для этого стоит разложить пуши на три потока:
- транзакционные — оплата, доставка, безопасность, изменения статуса;
- поведенческие — брошенное действие, возвращение к контенту, напоминание о записи;
- маркетинговые — запуск акции, подборка, сезонная кампания, новость продукта.
У этих потоков разная частота, ценность и допустимость ошибки. Транзакционные уведомления обычно нельзя выключить в угоду экономии. Маркетинговые — первое место, где команда должна вводить частотные лимиты и чистить сегменты. Поведенческие требуют особенно точной настройки, иначе один пользователь одновременно попадёт в пять автоматизаций.
После этого появляются данные для модели:
- прогноз активной базы в месяц;
- среднее число сообщений на активного пользователя;
- размер и периодичность массовых кампаний;
- доля пользователей с несколькими устройствами;
- расходы на дополнительные каналы и расширенные функции;
- стоимость превышения лимита, а не только цена включённого пакета.
Нельзя считать бюджет, умножая цену на текущую базу и надеясь, что всё остальное останется неизменным. Хорошо настроенный продукт обычно начинает отправлять больше целевых триггеров: они полезнее массовых рассылок, но увеличивают объём. Плохая экономия начинается там, где команда отключает сегментацию, историю событий или эксперименты, чтобы остаться в дешёвом тарифе. Формально счёт снижается. Фактически пуши становятся грубее, а удержание — дороже.
Интеграция: API, кроссплатформенность и комплаенс
Интеграция сервисов пуш-уведомлений должна пройти по двум путям одновременно. Первый — мобильный: SDK, получение разрешений, регистрация токена, обработка уведомления, диплинки, события открытия. Второй — продуктовый: передача пользовательских атрибутов и событий, запуск автоматизаций, доступ к данным через API, синхронизация с внутренними системами.
Если второй путь не продуман, платформа быстро превращается в изолированный кабинет. Маркетинг вручную загружает списки, разработка раз в квартал добавляет новое поле, аналитика не может сопоставить кампании с выручкой. Внешне всё работает. Пользовательский путь — нет.
Минимальный набор для устойчивой интеграции выглядит так:
- SDK или понятные механизмы подключения для iOS и Android;
- поддержка как минимум двух мобильных платформ, а при необходимости — web push;
- API для передачи событий, атрибутов, управления сегментами и отправками;
- нормальная документация по диплинкам, токенам, ошибкам и миграции;
- экспорт данных или интеграция с аналитическим и CRM-стеком;
- роли и права доступа для продуктовой, маркетинговой и инженерной команд;
- журнал изменений кампаний, чтобы можно было восстановить причину ошибочной отправки.
Отдельный слой — комплаенс. Если сервис работает с идентификаторами устройств, пользовательскими атрибутами и поведенческими событиями, нужно заранее оценить его поддержку требований GDPR и CCPA, правила хранения и удаления данных, управление согласием и доступами. Это не юридическая формальность в конце закупки. Непрозрачная модель данных позже ограничивает и продуктовые эксперименты: команде становится сложно понять, какие события можно передавать, где они хранятся и кто видит аудитории.
Миграция — тест, который поставщик должен выдержать заранее
Провайдер часто выбирают в момент запуска, когда база невелика и кажется, что сменить платформу можно за выходные. Потом в системе появляются десятки сегментов, триггеры, шаблоны, локализации, частотные ограничения и зависимости от CRM. Миграция становится дорогой именно потому, что никто не проектировал выход.
До подключения стоит спросить о трёх вещах: как выгружаются данные и настройки, как переносятся токены и идентификаторы, что происходит с историей событий и аналитикой. Хороший сервис не обязан сделать переход безболезненным за вас, но не должен удерживать продукт в закрытом контуре.
Полезно также не смешивать все коммуникации в одном флоу. Транзакционные пуши должны иметь отдельные приоритеты, владельцев и правила мониторинга. Маркетинговые кампании — свои лимиты и процесс согласования. Тогда ошибка в акции не затронет подтверждения заказов, а срочная системная коммуникация не утонет в очереди промо.
Вердикт: платить стоит за управляемость, а не за кнопку «Отправить»
Надёжный сервис push-уведомлений не выбирают по числу иконок в кабинете и не называют универсально лучшим. Для одного приложения ключевыми будут массовые кампании и сегментация. Для другого — API, транзакционная надёжность и контроль очередей. Для третьего — предсказуемая модель Per-MAU при быстро растущем ретеншне.
Но базовый фильтр остаётся одинаковым: SLA от 99,9%, прозрачная картина доставки, разумная работа с ограничениями iOS и Android, сегментация по событиям, A/B-тесты, кроссплатформенность, API и понятная экономика превышений.
Я бы не подписывала контракт до теста на реальном CJM. Установить приложение с нуля. Пройти онбординг. Дать или не дать разрешение. Получить пуш. Нажать на него в фоне и после холодного старта. Проверить, куда ведёт диплинк, что фиксируется в аналитике и как выглядит пользователь после ошибки. В этом маршруте быстро становится видно, выбираете ли вы просто шлюз для сообщений или инфраструктуру, которая помогает приложению оставаться полезным между сессиями.
Материалы сети: styleatrium.com.