Retention Messaging API: повідомлення перед скасуванням
Автор: Mehdi Azizi
Опубліковано , 10 хв
Retention Messaging API від Apple показує твоє повідомлення, коли підписник торкається Cancel Subscription. Формати, умови, доступ і налаштування.
Retention Messaging API це сервіс Apple типу «сервер-сервер», який показує твоє повідомлення підписнику в момент, коли він торкається Cancel Subscription. Повідомлення з'являється на сторінці підтвердження, до того як скасування буде підтверджено. Воно може нагадати про цінність твоєї підписки, запропонувати інший тариф або промоційну пропозицію, але кнопка для скасування завжди залишається на місці. API перебуває в попередній версії з липня 2025 року, доступ надають за запитом, а Apple анонсувала простішу версію в App Store Connect на осінь 2026 року.
У цьому гайді пояснюю, що показує API, відколи воно існує, хто може ним користуватися, які в нього умови і як його налаштувати. Усе взято з документації Apple і присвяченої йому сесії WWDC26, перечитаних 3 листопада 2026 року.
Я продаю підписки у своїх iOS-застосунках: Solys, блокувальник соцмереж, TradaZen, симулятор трейдингу, Nolera, застосунок для приміряння одягу за допомогою ШІ, і Vigie. Я подав запит на доступ до API для всіх чотирьох 25 жовтня 2026 року і підготував їхні повідомлення всіма їхніми мовами. Станом на 28 жовтня згоди Apple ще не було, тож цей гайд описує правила і мою підготовку, а не результати.
Що робить Retention Messaging API
Згідно з документацією Apple, API дає тобі змогу обрати повідомлення, яке система показує, коли клієнт відкриває сторінку з деталями підписки і, можливо, збирається її скасувати. Ти готуєш повідомлення заздалегідь, для кожного продукту і кожної мови.
Сценарій завжди однаковий:
- Підписник відкриває свою підписку, наприклад в Apple Account, Subscriptions, або з App Store.
- Торкається Cancel Subscription.
- Система показує сторінку підтвердження (Confirm Cancellation) з твоїм повідомленням.
- Він може все одно скасувати, залишити підписку або прийняти те, що пропонує твоє повідомлення.
Повідомлення видно на iOS 15.1 та iPadOS 15.1 або новіших, на visionOS 1 і на macOS 14 або новіших.
Відколи і для кого
| Дата | Що змінюється, за даними Apple |
|---|---|
| 16 лип. 2025 | Версія 1.0: перша попередня версія API |
| 9 груд. 2025 | Тест продуктивності сервера для режиму реального часу |
| 31 бер. 2026 | Маркери в повідомленнях, налаштування адреси реального часу через API |
| 27 квіт. 2026 | Підтримка щомісячних підписок із 12-місячним зобов'язанням |
| Червень 2026 | WWDC26: анонс модуля в App Store Connect |
Дати взято з журналу версій API, окрім останньої, яка походить із сесії WWDC26. API досі в попередній версії: документація веде на форму запиту доступу, для якої треба увійти у свій акаунт розробника.
На WWDC26 сесія Explore Retention Messaging in App Store Connect представляє модуль в App Store Connect, який налаштовується без коду. Apple називає його «відкритим для всіх». А от версія реального часу залишається за запитом. Сторінка новинок App Store анонсує модуль на «цю осінь». Станом на 3 листопада 2026 року довідка App Store Connect ще не має про нього жодної сторінки, а 28 жовтня модуля в моєму акаунті не було.
API стосується застосунків, що продають автоматично поновлювану підписку. Воно не лише для великих видавців: RevenueCat у своєму дослідженні 22 мільйонів повідомлень зазначає, що малі застосунки теж можуть подати запит на доступ.
4 типи повідомлень
| Тип | Що бачить підписник | Повідомлення за замовчуванням | Реальний час |
|---|---|---|---|
| Текст | Заголовок, текст, до п'яти маркерів | Так | Так |
| Текст із зображенням | Те саме, але із зображенням | Так | Так |
| Зміна тарифу | Текст та інша підписка з тієї ж групи | Ні | Так |
| Промоційна пропозиція | Текст і пропозиція продовжити за зниженою ціною | Ні | Так |
Згідно зі сторінкою про підготовку повідомлень, повідомлення за замовчуванням може бути лише текстом, із зображенням або без. В API, щоб запропонувати знижку чи інший тариф, треба відповідати в реальному часі. А от анонсований модуль в App Store Connect дасть змогу показати повідомлення з пропозицією без сервера.
Промоційна пропозиція це та, яку ти створюєш в App Store Connect. Згідно з довідкою про промоційні пропозиції, вона орієнтована на поточних і колишніх підписників. У повідомленні утримання її підписує твій сервер, згідно зі сторінкою про підготовку повідомлень. Зміна тарифу пропонує підписку з тієї ж групи. Якщо ти тільки починаєш працювати з такими пропозиціями, спершу прочитай мій гайд про коди пропозицій і промоційні пропозиції.
Що можна показати: точні обмеження
| Елемент | Обмеження Apple |
|---|---|
| Заголовок | Не більше 66 символів |
| Текст | Не більше 144 символів |
| Маркери | Не більше 5 |
| Зображення на всю ширину | PNG без прозорості, 3840 px завширшки, від 160 до 2160 заввишки |
| Зображення маркера | 1024 × 1024 px |
| Зображень на застосунок | Не більше 2000 |
Довжини взято з опису тіла запиту на надсилання повідомлення, а формати зі сторінки про надсилання зображення. Apple також вимагає зображень, які однаково добре виглядають у світлому і темному режимах.
Кожне повідомлення і кожне зображення Apple перевіряє. Їхній статус змінюється з PENDING на APPROVED, і система показує лише схвалене. У sandbox схвалення автоматичне. Документація встановлює чітке правило щодо вмісту: нічого оманливого чи неточного.
Умови, які треба виконати
- Повідомлення за замовчуванням для кожного продукту кожною мовою. Без нього цією мовою нічого не показується. Це також запасний варіант, якщо твій сервер не відповідає.
- Схвалені повідомлення і зображення до будь-якого запуску.
- Для реального часу потрібен швидкий сервер. Сторінка про налаштування адреси реального часу вимагає дійсного SSL-сертифіката, TLS 1.2 і відповіді менш ніж за 700 мс у production. Якщо довше, запит не вдається і показується повідомлення за замовчуванням.
- Успішний тест продуктивності в sandbox, перш ніж вказувати адресу для production.
- Перевірка застосунку. Кожен запит Apple містить ідентифікатор застосунку,
appAppleId. Якщо він не збігається з твоїм, Apple просить не відповідати.
Запит у реальному часі дає тобі ідентифікатор початкової транзакції, продукт і мову пристрою. Повідомлення обираєш ти, за власними правилами.
Налаштування Retention Messaging: три шляхи
| Шлях | Для кого | Що потрібно |
|---|---|---|
| Модуль App Store Connect | Для всіх, коли вийде | Жодного коду; текст, зображення або пропозиція |
| API з власним сервером | Для тих, хто має бекенд | Доступ Apple, HTTPS-адреса, тест продуктивності |
| API через RevenueCat | Для застосунків, що вже на RevenueCat | Доступ Apple, налаштування в дашборді |
Коли співіснує кілька налаштувань, Apple у сесії WWDC26 пояснює порядок: спершу відповідь у реальному часі. Якщо її немає або вона неправильно сформована, береться налаштування App Store Connect. Якщо його немає, показується повідомлення за замовчуванням, налаштоване через API.
З власним сервером
- Подай запит на доступ через форму Apple.
- Надішли зображення, потім повідомлення, кожне із заголовком і текстом.
- Дочекайся схвалення, потім вкажи повідомлення за замовчуванням для кожної підписки і кожної мови.
- Для реального часу створи на своєму сервері адресу
Get Retention Messageі вкажи її в sandbox. - Запусти тест продуктивності у sandbox із тестовою транзакцією.
- Коли тест пройдено, вкажи адресу для production.
З RevenueCat
Це шлях, який обрав я: не треба писати сервер, а мої застосунки вже працюють через RevenueCat, як я пояснюю в статті RevenueCat і підписка в iOS-застосунку. Згідно з документацією RevenueCat:
- У формі Apple вкажи адресу, яку RevenueCat показує в налаштуваннях твого застосунку App Store.
- Після схвалення відкрий Lifecycle, потім Retention, і підключи адресу sandbox.
- Запусти тест продуктивності з активною підпискою sandbox або TestFlight. Він може тривати до години.
- Спершу створи повідомлення за замовчуванням, мова за мовою.
- Потім додай повідомлення реального часу з правилами. Одне з них, «Is in free trial», орієнтоване на людей на безкоштовному пробному періоді.
- Переходь у production: налаштування sandbox не переносяться, повідомлення треба створити заново.
Як написати повідомлення, що утримує, а не заманює в пастку
Текст фіксований і перевіряється Apple перед показом. Тож він не може говорити ні про людину, яка його читає, ні про день, коли вона його читає. Ось повідомлення за замовчуванням, яке я підготував для TradaZen (переклад французької версії):
Заголовок (48 символів):
Хотів навчитися трейдингу, а тепер ідеш наосліп?
Текст (125 символів):
Без тренувань кожну помилку оплачують твої справжні гроші. Тут вони нічого не коштують. Твоя серія, ліга й уроки зупиняються.
Правила, які я встановив для своїх чотирьох застосунків:
- Заголовок повертає людину до її мети, у формі запитання. Він її не соромить.
- Текст точно каже, що саме зупиняється. Я пишу, що доступ «блокується», коли дані зберігаються, і ніколи, що їх буде «видалено».
- Жодних слів про час на кшталт «завтра» чи «сьогодні»: той самий текст показується в будь-який момент періоду.
- Жодних обіцянок заробітку, жодної штучної терміновості. Перший заголовок, що обіцяв змінити життя завдяки трейдингу, я відкинув ще до надсилання. Guideline 5.6 забороняє будь-які маніпулятивні практики, і пейвол TradaZen уже відхиляли саме через це, як я розповідаю в статті guideline 5.6 і пейвол.
- Кожна мова має свій текст, з лексикою перекладеного застосунку, і підрахований до символу.
Для TradaZen я також планую повідомлення реального часу для людей на пробному періоді річної підписки. Воно запропонує дешевший річний тариф із тієї ж групи, бо мої цифри показують, що ці люди користуються застосунком не менше за тих, хто платить: їх не влаштовує саме ціна. Це налаштування чекає на згоду Apple.
Чого від цього чекати
Не розраховуй на диво. Apple називає рівнем порятунку частку підписників, які зберігають підписку, потрапивши на сторінку підтвердження. У сесії WWDC26 Apple повідомляє, що підписки, які запровадили Retention Messaging, у середньому отримують +1,4 пункта цього показника. Повідомлення з промоційною пропозицією дають найкращий зафіксований приріст, 5,5 пункта, а результати різняться від розробника до розробника. Своєю чергою, дослідження RevenueCat фіксує, що підписники приймають лише близько 1,1 % промоційних пропозицій і 0,6 % змін тарифу.
Тож повідомлення не замінює роботи на попередніх етапах. Безкоштовний пробний період, який скасовують за хвилину, вирішується на пейволі й у перших сесіях: причини і важелі є в моєму гайді про скасований безкоштовний пробний період, а створення пробного періоду описано у статті про вступну пропозицію.
Підготуй підписку до повідомлення
iOS & Android Kit побудований на стартовому коді моїх застосунків: онбординг, пейвол і підписки вже запрограмовані, а маршрут із чотирьох етапів доведе тебе до App Store у твоєму темпі. Увесь ланцюжок, від продуктів в App Store Connect до пейвола, описано на сторінці підписка в iOS-застосунку.
Якщо готуєш свій перший реліз, пройди безкоштовну діагностику: вона покаже, що насправді гальмує твій проєкт, і надішле тобі мій чекліст проти відхилень Apple.
Поширені запитання
Що таке Retention Messaging API від Apple?
Це сервіс типу «сервер-сервер», який обирає повідомлення для підписника, коли той торкається Cancel Subscription. Повідомлення з'являється на сторінці підтвердження, до скасування. Воно може нагадати про цінність підписки, запропонувати інший тариф або промоційну пропозицію.
Чи доступна Retention Messaging усім розробникам?
API перебуває в попередній версії, доступ надають за запитом до Apple. На WWDC26 Apple анонсувала модуль в App Store Connect, відкритий для всіх, запланований на осінь 2026 року. Станом на 3 листопада 2026 року довідка App Store Connect його ще не описує.
На яких версіях iOS показується повідомлення?
На iOS 15.1 та iPadOS 15.1 або новіших, на visionOS 1 і на macOS 14 або новіших. На старішому пристрої скасування відбувається без повідомлення.
Чи заважає повідомлення підписнику скасувати підписку?
Ні. На сторінці підтвердження залишається кнопка скасування. Підписник також може залишити підписку або прийняти запропоновану знижку чи тариф.
Чи можна запропонувати знижку в момент скасування?
Так. В API це повідомлення з промоційною пропозицією, лише в реальному часі: пропозицію створюють в App Store Connect, а підписує її твій сервер. Анонсований модуль в App Store Connect теж дає змогу показати повідомлення з пропозицією. А зміна тарифу пропонує іншу підписку з тієї ж групи.
Скільки символів може мати повідомлення утримання?
Заголовок не більше 66 символів, текст не більше 144. Можна додати до п'яти маркерів і зображення PNG без прозорості. Для кожної мови потрібне окреме повідомлення за замовчуванням.
Чи потрібен сервер, щоб користуватися Retention Messaging?
Для повідомлень за замовчуванням хостити адресу не треба: достатньо викликати API, щоб їх надіслати і вказати. З RevenueCat роль сервера виконує він. Реальний час вимагає HTTPS-адреси, яка відповідає менш ніж за 700 мс. Анонсований модуль в App Store Connect налаштовується без коду.

