# Retention Messaging API: повідомлення перед скасуванням

> Retention Messaging API від Apple показує твоє повідомлення, коли підписник торкається Cancel Subscription. Формати, умови, доступ і налаштування.

Оригінальна сторінка: [Retention Messaging API: повідомлення перед скасуванням](https://devoria.fr/uk/blog/retention-messaging-api-message-before-cancellation)
Автор: [Mehdi Azizi](https://devoria.fr/uk/mehdi-azizi)
Опубліковано: 2026-11-04
Останнє оновлення змісту: 2026-11-04


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](https://developer.apple.com/documentation/retentionmessaging), API дає тобі змогу обрати повідомлення, яке система показує, коли клієнт відкриває сторінку з деталями підписки і, можливо, збирається її скасувати. Ти готуєш повідомлення заздалегідь, для кожного продукту і кожної мови.

Сценарій завжди однаковий:

1. Підписник відкриває свою підписку, наприклад в Apple Account, Subscriptions, або з App Store.
2. Торкається Cancel Subscription.
3. Система показує сторінку підтвердження (Confirm Cancellation) з твоїм повідомленням.
4. Він може все одно скасувати, залишити підписку або прийняти те, що пропонує твоє повідомлення.

Повідомлення видно на 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](https://developer.apple.com/documentation/retentionmessaging/retention-messaging-changelog), окрім останньої, яка походить із сесії WWDC26. API досі в попередній версії: документація веде на [форму запиту доступу](https://developer.apple.com/contact/request/retention-messaging-api/), для якої треба увійти у свій акаунт розробника.

На WWDC26 сесія [Explore Retention Messaging in App Store Connect](https://developer.apple.com/videos/play/wwdc2026/309/) представляє модуль в App Store Connect, який налаштовується без коду. Apple називає його «відкритим для всіх». А от версія реального часу залишається за запитом. [Сторінка новинок App Store](https://developer.apple.com/app-store/whats-new/) анонсує модуль на «цю осінь». **Станом на 3 листопада 2026 року довідка App Store Connect ще не має про нього жодної сторінки, а 28 жовтня модуля в моєму акаунті не було.**

API стосується застосунків, що продають автоматично поновлювану підписку. Воно не лише для великих видавців: RevenueCat у своєму [дослідженні 22 мільйонів повідомлень](https://www.revenuecat.com/blog/growth/apple-retention-messaging-benchmarks) зазначає, що малі застосунки теж можуть подати запит на доступ.

## 4 типи повідомлень

| Тип                   | Що бачить підписник                             | Повідомлення за замовчуванням | Реальний час |
| --------------------- | ----------------------------------------------- | ----------------------------- | ------------ |
| Текст                 | Заголовок, текст, до п'яти маркерів             | Так                           | Так          |
| Текст із зображенням  | Те саме, але із зображенням                     | Так                           | Так          |
| Зміна тарифу          | Текст та інша підписка з тієї ж групи           | Ні                            | Так          |
| Промоційна пропозиція | Текст і пропозиція продовжити за зниженою ціною | Ні                            | Так          |

Згідно зі сторінкою про [підготовку повідомлень](https://developer.apple.com/documentation/retentionmessaging/setting-up-retention-messages), повідомлення за замовчуванням може бути лише текстом, із зображенням або без. **В API, щоб запропонувати знижку чи інший тариф, треба відповідати в реальному часі.** А от анонсований модуль в App Store Connect дасть змогу показати повідомлення з пропозицією без сервера.

Промоційна пропозиція це та, яку ти створюєш в App Store Connect. Згідно з [довідкою про промоційні пропозиції](https://developer.apple.com/help/app-store-connect/manage-subscriptions/set-up-promotional-offers-for-auto-renewable-subscriptions), вона орієнтована на поточних і колишніх підписників. У повідомленні утримання її підписує твій сервер, згідно зі сторінкою про підготовку повідомлень. Зміна тарифу пропонує підписку з тієї ж групи. Якщо ти тільки починаєш працювати з такими пропозиціями, спершу прочитай мій гайд про [коди пропозицій і промоційні пропозиції](https://devoria.fr/uk/blog/offer-codes-app-store-connect-promo-code).

## Що можна показати: точні обмеження

| Елемент                  | Обмеження Apple                                                 |
| ------------------------ | --------------------------------------------------------------- |
| Заголовок                | Не більше 66 символів                                           |
| Текст                    | Не більше 144 символів                                          |
| Маркери                  | Не більше 5                                                     |
| Зображення на всю ширину | PNG без прозорості, 3840 px завширшки, від 160 до 2160 заввишки |
| Зображення маркера       | 1024 × 1024 px                                                  |
| Зображень на застосунок  | Не більше 2000                                                  |

Довжини взято з опису [тіла запиту на надсилання повідомлення](https://developer.apple.com/documentation/retentionmessaging/uploadmessagerequestbody), а формати зі сторінки про [надсилання зображення](https://developer.apple.com/documentation/retentionmessaging/upload-image). Apple також вимагає зображень, які однаково добре виглядають у світлому і темному режимах.

Кожне повідомлення і кожне зображення Apple перевіряє. Їхній статус змінюється з `PENDING` на `APPROVED`, і система показує лише схвалене. У sandbox схвалення автоматичне. Документація встановлює чітке правило щодо вмісту: нічого оманливого чи неточного.

## Умови, які треба виконати

- **Повідомлення за замовчуванням для кожного продукту кожною мовою.** Без нього цією мовою нічого не показується. Це також запасний варіант, якщо твій сервер не відповідає.
- **Схвалені повідомлення і зображення** до будь-якого запуску.
- **Для реального часу потрібен швидкий сервер.** Сторінка про [налаштування адреси реального часу](https://developer.apple.com/documentation/retentionmessaging/setting-up-retention-messaging-endpoint) вимагає дійсного 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.

### З власним сервером

1. Подай запит на доступ через форму Apple.
2. Надішли зображення, потім повідомлення, кожне із заголовком і текстом.
3. Дочекайся схвалення, потім вкажи повідомлення за замовчуванням для кожної підписки і кожної мови.
4. Для реального часу створи на своєму сервері адресу `Get Retention Message` і вкажи її в sandbox.
5. Запусти [тест продуктивності](https://developer.apple.com/documentation/retentionmessaging/initiate-performance-test) у sandbox із тестовою транзакцією.
6. Коли тест пройдено, вкажи адресу для production.

### З RevenueCat

Це шлях, який обрав я: не треба писати сервер, а мої застосунки вже працюють через RevenueCat, як я пояснюю в статті [RevenueCat і підписка в iOS-застосунку](https://devoria.fr/uk/blog/revenuecat-in-app-subscription-ios). Згідно з [документацією RevenueCat](https://www.revenuecat.com/docs/platform-resources/apple-platform-resources/apple-retention-messaging-api):

1. У формі Apple вкажи адресу, яку RevenueCat показує в налаштуваннях твого застосунку App Store.
2. Після схвалення відкрий Lifecycle, потім Retention, і підключи адресу sandbox.
3. Запусти тест продуктивності з активною підпискою sandbox або TestFlight. Він може тривати до години.
4. Спершу створи повідомлення за замовчуванням, мова за мовою.
5. Потім додай повідомлення реального часу з правилами. Одне з них, «Is in free trial», орієнтоване на людей на безкоштовному пробному періоді.
6. Переходь у production: налаштування sandbox не переносяться, повідомлення треба створити заново.

## Як написати повідомлення, що утримує, а не заманює в пастку

Текст фіксований і перевіряється Apple перед показом. Тож він не може говорити ні про людину, яка його читає, ні про день, коли вона його читає. Ось повідомлення за замовчуванням, яке я підготував для TradaZen (переклад французької версії):

```text
Заголовок (48 символів):
Хотів навчитися трейдингу, а тепер ідеш наосліп?

Текст (125 символів):
Без тренувань кожну помилку оплачують твої справжні гроші. Тут вони нічого не коштують. Твоя серія, ліга й уроки зупиняються.
```

Правила, які я встановив для своїх чотирьох застосунків:

- **Заголовок повертає людину до її мети**, у формі запитання. Він її не соромить.
- **Текст точно каже, що саме зупиняється.** Я пишу, що доступ «блокується», коли дані зберігаються, і ніколи, що їх буде «видалено».
- **Жодних слів про час** на кшталт «завтра» чи «сьогодні»: той самий текст показується в будь-який момент періоду.
- **Жодних обіцянок заробітку**, жодної штучної терміновості. Перший заголовок, що обіцяв змінити життя завдяки трейдингу, я відкинув ще до надсилання. [Guideline 5.6](https://developer.apple.com/app-store/review/guidelines/#5.6) забороняє будь-які маніпулятивні практики, і пейвол TradaZen уже відхиляли саме через це, як я розповідаю в статті [guideline 5.6 і пейвол](https://devoria.fr/uk/blog/guideline-5-6-paywall-app-store-rejection).
- **Кожна мова має свій текст**, з лексикою перекладеного застосунку, і підрахований до символу.

Для TradaZen я також планую повідомлення реального часу для людей на пробному періоді річної підписки. Воно запропонує дешевший річний тариф із тієї ж групи, бо мої цифри показують, що ці люди користуються застосунком не менше за тих, хто платить: їх не влаштовує саме ціна. Це налаштування чекає на згоду Apple.

## Чого від цього чекати

Не розраховуй на диво. Apple називає рівнем порятунку частку підписників, які зберігають підписку, потрапивши на сторінку підтвердження. У сесії WWDC26 Apple повідомляє, що підписки, які запровадили Retention Messaging, у середньому отримують +1,4 пункта цього показника. Повідомлення з промоційною пропозицією дають найкращий зафіксований приріст, 5,5 пункта, а результати різняться від розробника до розробника. Своєю чергою, дослідження RevenueCat фіксує, що підписники приймають лише близько 1,1 % промоційних пропозицій і 0,6 % змін тарифу.

Тож повідомлення не замінює роботи на попередніх етапах. Безкоштовний пробний період, який скасовують за хвилину, вирішується на пейволі й у перших сесіях: причини і важелі є в моєму гайді про [скасований безкоштовний пробний період](https://devoria.fr/uk/blog/probnyi-period-skasovano-odrazu-ios), а створення пробного періоду описано у статті про [вступну пропозицію](https://devoria.fr/uk/blog/introductory-offer-ios-free-trial).

## Підготуй підписку до повідомлення

[iOS & Android Kit](https://devoria.fr/uk/kits/ios) побудований на стартовому коді моїх застосунків: онбординг, пейвол і підписки вже запрограмовані, а маршрут із чотирьох етапів доведе тебе до App Store у твоєму темпі. Увесь ланцюжок, від продуктів в App Store Connect до пейвола, описано на сторінці [підписка в iOS-застосунку](https://devoria.fr/uk/expertise/ios-in-app-subscription).

Якщо готуєш свій перший реліз, [пройди безкоштовну діагностику](https://devoria.fr/uk/diagnostic): вона покаже, що насправді гальмує твій проєкт, і надішле тобі мій чекліст проти відхилень 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 налаштовується без коду.


## Твій проєкт

[iOS & Android Kit](https://devoria.fr/uk/kits/ios): Створи свій застосунок для iPhone і Android з Claude Code: стартовий код моїх застосунків, шлях до публікації в сторах і всі кіти. 4 999 ₴.

[Діагностика: що відділяє тебе від твого застосунку для iPhone](https://devoria.fr/uk/diagnostic): 7 запитань, 60 секунд: ти дізнаєшся, що насправді заважає тобі опублікувати застосунок для iPhone, отримаєш свій шлях у 4 кроки і кіт, який тобі підходить.
