4 ноября 2026 года Apple открыла retention messages в App Store Connect: сообщение, а при желании и оффер, которые подписчик видит на экране подтверждения отмены. Раньше это было доступно только через Retention Messaging API, по запросу доступа. Теперь retention messaging App Store настраивается в кабинете, без единой строки серверного кода.
У MeteoHealth подписки на StoreKit 2, без RevenueCat. Поэтому меня интересует, что можно включить сегодня и как потом понять, помогло ли. Ниже порядок настройки, места, где ревью отклоняет текст, и разбор цифр Apple и RevenueCat: они измеряют разное.
Что видит подписчик#
Человек открывает страницу подписки в настройках, нажимает Cancel Subscription, и система показывает страницу Confirm Cancellation. На ней появляется раздел «From the developer» с вашим сообщением. Кнопки: Cancel Subscription и Keep Subscription, либо, если есть оффер, кнопка его активации. Вариантов сообщения три:
- только текст;
- текст и картинка (оффера нет или подписчик на него не подходит);
- текст и оффер, если подписчик подходит. Картинка в этом случае не показывается, оффер занимает её место.
Работает на iOS 15.1+, iPadOS 15.1+, visionOS 1+ и macOS 14+. На более старых системах экран отмены остаётся прежним (обзор API).
Retention messaging App Store: два способа настроить#
Сообщение можно собрать в App Store Connect или отдавать через Retention Messaging API. Способы сочетаются, но стоят по-разному.
| App Store Connect | Retention Messaging API | |
|---|---|---|
| Сервер | Не нужен | Нужен |
| Типы сообщений | Текст, текст и картинка, текст и оффер | Текст (с пунктами списка), текст и картинка, смена плана, промо-оффер |
| Выбор сообщения под подписчика | Нет, одно сообщение на подписку | Да, в реальном времени |
| Оффер | Retention offer, настраивается на уровне подписки | Промо-оффер, подпись делает ваш сервер |
| Доступ | Роли Account Holder, Admin, App Manager, Marketing | По запросу |
В режиме API App Store в момент, когда активный подписчик открывает страницу подписки с кнопкой отмены, обращается к вашему эндпоинту. В запросе, подписанном App Store (подпись JWS нужно проверять), приходят originalTransactionId, productId, userLocale, environment и другие поля. Ответить надо за 700 мс в продакшене. Перед запуском эндпоинт проходит Performance Test в песочнице. Если запрос провалился, показывается сообщение из App Store Connect для этой подписки, а если его нет, то сообщение по умолчанию.
Приоритеты такие: ответ в реальном времени выше всего, сообщение из App Store Connect выше сообщений по умолчанию из API. С 4 ноября (версия API 1.6) в ответе реального времени можно указать идентификатор сообщения, настроенного в App Store Connect (changelog). То есть сервер может выбирать из того, что вы собрали в кабинете.
Сообщения по умолчанию в API задаются на пару «продукт и локаль», это только текст, без офферов. Про доступ к API Adapty пишет, что ревью Apple занимает до месяца, и запрос стоит отправлять заранее. Это слова Adapty, в документации Apple срок не указан.
Я бы начинал с App Store Connect: сервер ради эксперимента с неизвестным эффектом не нужен, а если эффект появится, API можно подключить позже: с версии 1.6 сервер может отдавать и сообщения, собранные в кабинете.
Как настроить в App Store Connect, по шагам#
Подробности есть в справке Apple и в WWDC26, сессия 309.
- Откройте приложение, затем Monetization, Subscriptions, Retention Messaging, кнопка «+» или Get Started.
- Задайте Reference name. Подписчики его не видят.
- Заполните заголовок и текст, оба поля обязательны. Локализуйте для всех витрин, где продаётся подписка.
- Если нужна картинка, загрузите её в размере 3840 × 2160 или 5244 × 2950 пикселей. Формат файла и вес в справке не указаны.
- Выберите подписки. Сообщений может быть до 10 на приложение, на одно сообщение можно навесить сколько угодно подписок, но у подписки в каждый момент одно сообщение.
- При желании прикрепите retention offer (ниже).
- Откройте превью: карточка, варианты для iPhone и iPad, выбор оффера или None.
- Нажмите Add for Review. Статус Approved значит, что сообщение работает и показывается подходящим подписчикам, которые пытаются отменить.
Офферы#
Retention offer создаётся на уровне подписки, а не сообщения, и виден подписчику только через сообщение. На один тип тарифа подписки (стандартный, либо месячный с обязательством на 12 месяцев для годовых подписок) можно создать до 10 офферов, и все десять можно привязать к одному сообщению. Какой из них показать, решает App Store: по словам Apple на WWDC, он «автоматически выбирает лучший оффер для подходящих клиентов».
Две вещи надо знать до создания. Reference name и идентификатор оффера после создания менять нельзя. По идентификатору потом видно продажи в Sales and Trends и транзакции в StoreKit, так что называйте его так, чтобы через полгода было понятно, что это.
Кто подходит под оффер, задают условия. Paid Subscription Duration требует минимального срока платной подписки. Wait Between Offers необязательное условие, и действует оно на каждый оффер отдельно, не на подписку целиком. Типы офферов: Pay as you go, Pay up front, Free. Цены для других стран считаются по актуальным курсам, их можно переопределить.
Что ревью режет в тексте#
Заголовок и текст сообщения не могут упоминать акции, скидки и конкретные цены: ни «9,99 $», ни «скидка 50%», ни «месяц бесплатно». Ревью такие сообщения отклоняет. Текст видят все подписчики, а оффер только подходящие.
Допустимы фактические утверждения о том, что человек потеряет. Не принуждать и не обещать непроверяемое: Apple приводит пример, что нельзя писать, будто отмена VPN приведёт к вирусу. Превосходные степени вроде «лучшее приложение» и статистику без подтверждения Apple настоятельно не рекомендует. Капс и повторяющиеся восклицательные знаки тоже просит не использовать.
Ниже примеры для гипотетической подписки на прогноз самочувствия по погоде. Тексты я написал сам, для иллюстрации.
| Пример | Вердикт | Почему |
|---|---|---|
| «Останьтесь, и следующий месяц будет со скидкой 50%» | Отклонят | Скидка в тексте, который видят все подписчики |
| «ЛУЧШИЙ прогноз для метеозависимых!!!» | Нежелательно | Превосходная степень, капс, повторяющиеся восклицательные знаки |
| «Без подписки давление и мигрени вас достанут» | Рискованно | Запугивание и непроверяемое утверждение, тот же класс, что вирус после отмены VPN |
| «9 из 10 подписчиков чувствуют себя лучше» | Нежелательно | Статистика без подтверждения |
| «После отмены прогноз самочувствия на ближайшие дни перестанет обновляться» | Подходит | Фактическая потеря, без цен и обещаний |
| «Сохранённые заметки о самочувствии останутся на устройстве, но новые рекомендации по погоде придут только по подписке» | Подходит | Спокойно говорит, что останется, а что уйдёт |
Про длину. Лимиты 66 символов для заголовка и 144 для текста закреплены в документации Retention Messaging API. Для сообщений, которые вы вводите в App Store Connect, справка лимитов не называет. Я бы держал текст в тех же рамках, раз для кабинета ограничение не названо.
Ловушки версий#
- Откатить сообщение нельзя. Правка утверждённого сообщения создаёт New Version: черновик лежит рядом с боевой версией, пользователи по-прежнему видят боевую. После утверждения черновик заменяет её, и вернуться назад не получится.
- Песочница показывает последнюю версию, включая черновики. Тестер может увидеть то, чего пользователи ещё не видят.
- Удаление сообщения необратимо. При лимите в 10 сообщений, чтобы создать одиннадцатое, придётся удалить одно из существующих.
- Подписка принадлежит одному сообщению. Если выбрать её во втором сообщении, из первого она пропадёт, так что после правок проверьте, кто к чему привязан.
Про автоматизацию: на WWDC сказано, что App Store Connect API «тоже будет поддерживать» Retention Messaging, а в справке написано, что сообщения можно автоматизировать через него. Названий эндпоинтов я в документации не нашёл, так что автоматизацию через ASC API пока строить не на чем.
Работает ли это#
У Apple на WWDC есть цифра: средний рост save rate на 1,4 процентного пункта, что равно росту на 82%. У сообщений с промо-оффером лучший результат, плюс 5,5 пункта, или 223%. Save rate Apple считает как долю подписчиков, которые остались после того, как дошли до страницы подтверждения отмены. Тут же оговорка самой Apple: у разработчиков результаты разные. Период и размер выборки не указаны.
У RevenueCat другая картина, и это данные вендора, не независимое исследование. RevenueCat 6 октября опубликовала ранние бенчмарки по 21 960 020 сообщениям из 309 приложений раннего доступа, у каждого из которых не меньше 100 сообщений. Период с 22 марта по 20 сентября 2026 года.
- Медианный save rate 16,7%. В нижней четверти приложений меньше 10 на 100, в верхней больше 27, у лучших 10% от 42.
- Принятие оффера с июня по сентябрь: 1,1% у промо-офферов и 0,6% у смены плана.
- Влияние на отмены сопоставили у 64 приложений с 500+ платящими клиентами и подобранными аналогами. Вывод RevenueCat: данные не показывают измеримого эффекта ни в какую сторону. Сам анализ, по словам авторов, не доказывает, что сообщения заставили людей остаться или продлить.
- Доля приложений с сообщениями растёт вместе с выручкой: у $1M+ в месяц это 44,4%, у $100 тыс.–1 млн 16,9%, у $10–100 тыс. 4,7%, у $1–10 тыс. 1,3%, у менее $1 тыс. 0,06%.
Последнее важно для чтения остальных чисел. Среди приложений с сообщениями преобладают крупные, поэтому, на мой взгляд, выборка может быть смещена, и небольшой проект может вести себя иначе. Цифры Apple и RevenueCat напрямую не сравнить: у Apple не названы период и выборка, у RevenueCat данные ранних участников.
Настройка в App Store Connect занимает один экран в кабинете и одно ревью. Что она даст вам, покажут только ваши подписчики, поэтому мерить результат надо на них.
Для измерения Apple даёт два инструмента. Если подписчик активировал retention offer, в подписанной транзакции и в renewal info появляется offerType со значением 5. Кроме того, идентификатор оффера виден в Sales and Trends и в транзакциях StoreKit. Это позволяет сравнить продления тех, кто принял оффер, с остальными. В справке Apple я не нашёл встроенного сравнения с контрольной группой, поэтому сравнение продлений придётся строить самому.
Мой план для MeteoHealth, именно план, ничего ещё не настроено: сначала сообщение только с текстом о фактической потере, без оффера, и сравнить долю отмен за месяц до и после. Это не A/B-тест, на отмены влияет и сезон. Потом добавить оффер и по offerType 5 смотреть, сколько человек его приняли и продлили ли подписку после него. Сколько ждать до выводов, зависит от числа отмен в месяц.
Retention messages и win-back offers#
Retention message видит активный подписчик в момент, когда нажал «Отменить»; win-back offer получает бывший. Win-back offers, анонсированные 10 сентября 2024 года, адресованы бывшим подписчикам: их показывают в App Store, в приложении, по ссылке и в настройках подписок. Один не заменяет другой. Если человек всё же ушёл, retention message он уже видел, дальше очередь win-back.
Чек-лист запуска#
- Подписки уже настроены, ссылки на условия и EULA на месте. Если нет, начните со статьи про ссылки на EULA и условия подписки.
- Выбран способ: App Store Connect или API. Для API запрос доступа отправлен заранее.
- Заголовок и текст без цен, скидок, капса и восклицаний, с фактом о потере. Сверьте текст с требованиями App Review.
- Локализация есть для всех витрин, где продаётся подписка.
- Если есть картинка, она 3840 × 2160 или 5244 × 2950.
- Если есть оффер: идентификатор осмысленный и окончательный, условия (Paid Subscription Duration, при необходимости Wait Between Offers) заданы.
- Превью проверено на iPhone и iPad, в песочнице проверены оба варианта: с оффером и без.
- После утверждения подписки привязаны к нужному сообщению.
- Заведён способ измерения:
offerType5 и идентификатор оффера в отчётах. Транзакции и renewal info читаются через StoreKit 2, подробнее в разборе подписок на StoreKit 2.



