Retention Messaging API Apple: komunikat przed anulowaniem
Autor: Mehdi Azizi
Opublikowano , 10 min
Retention Messaging API Apple pokazuje twój komunikat, gdy subskrybent stuknie Cancel Subscription. Formaty, warunki, dostęp i konfiguracja.
Retention Messaging API to usługa Apple typu serwer-serwer, która pokazuje twój komunikat subskrybentowi w chwili, gdy stuka Cancel Subscription. Komunikat pojawia się na ekranie potwierdzenia, zanim anulowanie zostanie zatwierdzone. Może przypomnieć, co daje twoja subskrypcja, zaproponować inny plan albo ofertę promocyjną, ale przycisk anulowania zawsze zostaje na miejscu. API jest w wersji preview od lipca 2025, dostęp przyznawany jest na wniosek, a Apple zapowiedział prostszą wersję w App Store Connect na jesień 2026.
Ten poradnik wyjaśnia, co API wyświetla, od kiedy istnieje, kto może z niego korzystać, jakie ma warunki i jak je skonfigurować. Wszystko pochodzi z dokumentacji Apple i z poświęconej mu sesji WWDC26, sprawdzonych 3 listopada 2026.
Sprzedaję subskrypcje w moich aplikacjach iOS: Solys, blokerze mediów społecznościowych, TradaZen, symulatorze tradingu, Nolera, aplikacji do przymierzania ubrań z AI, oraz Vigie. 25 października 2026 złożyłem wniosek o dostęp do API dla wszystkich czterech i przygotowałem ich komunikaty we wszystkich językach. 28 października zgody Apple wciąż nie było, więc ten poradnik opisuje zasady i moje przygotowania, a nie wyniki.
Co robi Retention Messaging API
Według dokumentacji Apple API pozwala ci wybrać komunikat, który system pokazuje, gdy klient ogląda szczegóły subskrypcji i być może zamierza ją anulować. Komunikaty przygotowujesz z wyprzedzeniem, dla każdego produktu i każdego języka.
Ścieżka jest zawsze taka sama:
- Subskrybent otwiera swoją subskrypcję, na przykład w Apple Account, Subscriptions, albo z poziomu App Store.
- Stuka Cancel Subscription.
- System pokazuje ekran potwierdzenia (Confirm Cancellation) z twoim komunikatem.
- Może mimo to anulować, zachować subskrypcję albo przyjąć to, co proponuje twój komunikat.
Komunikat jest widoczny na iOS 15.1 i iPadOS 15.1 lub nowszym, na visionOS 1 oraz na macOS 14 lub nowszym.
Od kiedy i dla kogo
| Data | Co się zmienia według Apple |
|---|---|
| 16 lip 2025 | Wersja 1.0: pierwsza wersja preview API |
| 9 gru 2025 | Test wydajności serwera dla trybu czasu rzeczywistego |
| 31 mar 2026 | Punkty w komunikatach, ustawianie adresu czasu rzeczywistego przez API |
| 27 kwi 2026 | Obsługa subskrypcji miesięcznych z 12-miesięcznym zobowiązaniem |
| Czerwiec 2026 | WWDC26: zapowiedź modułu w App Store Connect |
Daty pochodzą z dziennika zmian API, poza ostatnią, wziętą z sesji WWDC26. API nadal jest w wersji preview: dokumentacja odsyła do formularza wniosku o dostęp, który wymaga zalogowania na konto deweloperskie.
Na WWDC26 sesja Explore Retention Messaging in App Store Connect przedstawia moduł konfigurowany bez kodu, w App Store Connect. Apple mówi, że jest „otwarty dla wszystkich”. Wersja czasu rzeczywistego nadal wymaga wniosku. Strona nowości App Store zapowiada moduł na „tę jesień”. Na 3 listopada 2026 pomoc App Store Connect nie ma jeszcze o nim żadnej strony, a 28 października moduł nie pojawiał się na moim koncie.
API dotyczy aplikacji sprzedających automatycznie odnawianą subskrypcję. Nie jest zarezerwowane dla dużych wydawców: RevenueCat zauważa w swoim badaniu 22 milionów komunikatów, że małe aplikacje też mogą wnioskować o dostęp.
4 rodzaje komunikatów
| Rodzaj | Co widzi subskrybent | Komunikat domyślny | Czas rzeczywisty |
|---|---|---|---|
| Tekst | Tytuł, tekst, do pięciu punktów | Tak | Tak |
| Tekst z obrazem | To samo, z obrazem | Tak | Tak |
| Zmiana planu | Tekst i inna subskrypcja z tej samej grupy | Nie | Tak |
| Oferta promocyjna | Tekst i oferta, by kontynuować w niższej cenie | Nie | Tak |
Według strony o przygotowaniu komunikatów komunikat domyślny może być tylko tekstem, z obrazem lub bez. Przez API zaproponowanie oferty albo innego planu wymaga odpowiedzi w czasie rzeczywistym. Zapowiedziany moduł w App Store Connect pozwoli natomiast na komunikat z ofertą bez serwera.
Oferta promocyjna to ta, którą tworzysz w App Store Connect. Według pomocy o ofertach promocyjnych jest skierowana do obecnych i byłych subskrybentów. W komunikacie retencyjnym podpisuje ją twój serwer, zgodnie ze stroną o przygotowaniu komunikatów. Zmiana planu proponuje subskrypcję z tej samej grupy. Jeśli dopiero zaczynasz z tymi ofertami, przeczytaj najpierw mój poradnik o kodach ofert i ofertach promocyjnych.
Co możesz pokazać: dokładne limity
| Element | Limit Apple |
|---|---|
| Tytuł | Maksymalnie 66 znaków |
| Tekst | Maksymalnie 144 znaki |
| Punkty | Maksymalnie 5 |
| Obraz na pełną szerokość | PNG bez przezroczystości, 3840 px szerokości, 160-2160 px wysokości |
| Obraz punktu | 1024 × 1024 px |
| Obrazy na aplikację | Maksymalnie 2000 |
Długości pochodzą z opisu treści żądania wysłania komunikatu, a formaty ze strony o wysyłaniu obrazu. Apple wymaga też obrazów, które dobrze wyglądają zarówno w trybie jasnym, jak i ciemnym.
Każdy komunikat i każdy obraz są sprawdzane przez Apple. Ich status zmienia się z PENDING na APPROVED, a system wyświetla tylko to, co zatwierdzone. W sandboxie zatwierdzenie jest automatyczne. Dokumentacja stawia jasną zasadę co do treści: nie wysyłaj niczego mylącego ani nieprawdziwego.
Warunki do spełnienia
- Komunikat domyślny dla każdego produktu, w każdym języku. Bez niego w tym języku nic się nie wyświetli. To też koło zapasowe, gdy twój serwer nie odpowie.
- Zatwierdzone komunikaty i obrazy przed jakimkolwiek uruchomieniem.
- Dla czasu rzeczywistego szybki serwer. Strona o konfiguracji adresu czasu rzeczywistego wymaga ważnego certyfikatu SSL, TLS 1.2 i odpowiedzi w mniej niż 700 ms na produkcji. Powyżej tego żądanie się nie powiedzie i wyświetli się komunikat domyślny.
- Zaliczony test wydajności w sandboxie, zanim zgłosisz adres produkcyjny.
- Weryfikacja aplikacji. Każde żądanie od Apple zawiera identyfikator aplikacji,
appAppleId. Jeśli nie zgadza się z twoim, Apple prosi, żeby nie odpowiadać.
Żądanie w czasie rzeczywistym przekazuje ci identyfikator pierwotnej transakcji, produkt i język urządzenia. To ty wybierasz komunikat według własnych reguł.
Konfiguracja Retention Messaging: trzy drogi
| Droga | Dla kogo | Czego potrzeba |
|---|---|---|
| Moduł App Store Connect | Dla wszystkich, gdy już wyjdzie | Zero kodu; tekst, obraz lub oferta |
| API, z własnym serwerem | Dla tych, którzy mają backend | Dostęp od Apple, adres HTTPS, test wydajności |
| API, przez RevenueCat | Aplikacje już korzystające z RevenueCat | Dostęp od Apple, ustawienia w panelu |
Gdy kilka ustawień istnieje jednocześnie, Apple wyjaśnia w sesji WWDC26 kolejność: najpierw odpowiedź w czasie rzeczywistym. Jeśli jej brak lub jest błędna, ustawienie z App Store Connect. Jeśli go nie ma, komunikat domyślny skonfigurowany przez API.
Z własnym serwerem
- Złóż wniosek o dostęp przez formularz Apple.
- Wyślij obrazy, potem komunikaty, każdy z tytułem i tekstem.
- Poczekaj na ich zatwierdzenie, potem ustaw komunikat domyślny dla każdej subskrypcji i każdego języka.
- Dla czasu rzeczywistego utwórz na swoim serwerze adres
Get Retention Messagei zgłoś go w sandboxie. - Uruchom test wydajności w sandboxie, z transakcją testową.
- Po zaliczonym teście zgłoś adres produkcyjny.
Z RevenueCat
To droga, którą wybrałem: żadnego serwera do pisania, a moje aplikacje i tak już korzystają z RevenueCat, jak opisuję w RevenueCat i subskrypcja in-app na iOS. Według dokumentacji RevenueCat:
- W formularzu Apple podajesz adres, który RevenueCat pokazuje w ustawieniach twojej aplikacji App Store.
- Po zgodzie otwórz Lifecycle, potem Retention, i podłącz adres sandboxowy.
- Uruchom test wydajności z aktywną subskrypcją sandboxową lub z TestFlight. Może trwać do godziny.
- Najpierw utwórz komunikat domyślny, język po języku.
- Potem dodaj komunikaty czasu rzeczywistego, z regułami. Jedna z nich, „Is in free trial”, celuje w osoby na darmowym okresie próbnym.
- Przejdź na produkcję: ustawienia z sandboxa nie są przenoszone, trzeba odtworzyć komunikaty.
Jak napisać komunikat, który zatrzymuje, a nie wciąga w pułapkę
Tekst jest stały i sprawdzany przez Apple przed wyświetleniem. Nie może więc mówić o osobie, która go czyta, ani o dniu, w którym go czyta. Oto komunikat domyślny, który przygotowałem dla TradaZen, po francusku (tu w tłumaczeniu):
Tytuł (57 znaków):
Chciałeś nauczyć się tradingu, a odchodzisz na ślepo?
Tekst (127 znaków):
Bez treningu każdy błąd opłacasz prawdziwymi pieniędzmi. Tu nic nie kosztują. Twoja seria, liga i lekcje się zatrzymają.
Zasady, które ustaliłem dla moich czterech aplikacji:
- Tytuł przypomina osobie jej cel, w formie pytania. Nie zawstydza jej.
- Tekst mówi dokładnie, co się zatrzymuje. Piszę, że dostęp „zostaje zablokowany”, gdy dane zostają, nigdy że zostaną „usunięte”.
- Żadnych słów o czasie typu „jutro” czy „dziś”: ten sam tekst wyświetla się w dowolnym momencie okresu.
- Żadnych obietnic zysku, żadnej sztucznej presji czasu. Pierwszy tytuł, który obiecywał zmianę życia dzięki tradingowi, odrzuciłem przed wysłaniem. Guideline 5.6 zakazuje wszelkich manipulacyjnych praktyk, a paywall TradaZen został już z tego powodu odrzucony, o czym piszę w guideline 5.6 i paywall.
- Każdy język ma własny tekst, w słownictwie przetłumaczonej aplikacji, policzony co do znaku.
Dla TradaZen planuję też komunikat czasu rzeczywistego dla osób na okresie próbnym subskrypcji rocznej. Zaproponuje tańszy plan roczny z tej samej grupy, bo moje dane pokazują, że te osoby korzystają z aplikacji tyle samo co płacący: odrzucają cenę. To ustawienie czeka na zgodę Apple.
Czego można się spodziewać
Nie licz na cud. Apple nazywa współczynnikiem ratowania (save rate) odsetek subskrybentów, którzy zachowują subskrypcję po dotarciu na ekran potwierdzenia. W sesji WWDC26 Apple podaje, że subskrypcje korzystające z Retention Messaging zyskują średnio 1,4 punktu tego współczynnika. Komunikaty z ofertą promocyjną dają najlepszy zaobserwowany wzrost, 5,5 punktu, a wyniki różnią się między deweloperami. Z kolei badanie RevenueCat wskazuje, że subskrybenci przyjmują tylko około 1,1% ofert promocyjnych i 0,6% zmian planu.
Komunikat nie zastąpi więc pracy na wcześniejszych etapach. Darmowy okres próbny anulowany w ciągu minuty rozstrzyga się na paywallu i w pierwszych sesjach: przyczyny i dźwignie znajdziesz w moim poradniku o anulowanym okresie próbnym, a tworzenie okresu próbnego w ofercie wprowadzającej.
Przygotuj subskrypcję, zanim zajmiesz się komunikatem
iOS & Android Kit opiera się na kodzie startowym moich aplikacji: onboarding, paywall i subskrypcje są już zakodowane, a czteroetapowa ścieżka prowadzi cię aż do App Store, we własnym tempie. Cały łańcuch, od produktów w App Store Connect po paywall, jest opisany na stronie subskrypcja in-app na iOS.
Jeśli przygotowujesz swoje pierwsze wydanie, zrób darmową diagnozę: powie ci, co naprawdę blokuje twój projekt, i wyśle ci moją checklistę przeciw odrzuceniom przez Apple.
Najczęściej zadawane pytania
Czym jest Retention Messaging API od Apple?
To usługa typu serwer-serwer, która wybiera komunikat pokazywany subskrybentowi, gdy stuka Cancel Subscription. Komunikat wyświetla się na ekranie potwierdzenia, przed anulowaniem. Może przypomnieć, co daje subskrypcja, zaproponować inny plan albo ofertę promocyjną.
Czy Retention Messaging jest dostępne dla wszystkich deweloperów?
API jest w wersji preview, dostęp przyznaje Apple na wniosek. Na WWDC26 Apple zapowiedział moduł w App Store Connect, otwarty dla wszystkich, planowany na jesień 2026. Na 3 listopada 2026 pomoc App Store Connect jeszcze go nie opisuje.
Na jakich wersjach iOS wyświetla się komunikat?
Na iOS 15.1 i iPadOS 15.1 lub nowszym, na visionOS 1 oraz na macOS 14 lub nowszym. Na starszym urządzeniu anulowanie odbywa się bez komunikatu.
Czy komunikat uniemożliwia subskrybentowi anulowanie?
Nie. Ekran potwierdzenia zachowuje przycisk anulowania. Subskrybent może też zachować subskrypcję albo przyjąć zaproponowaną ofertę lub plan.
Czy można zaproponować zniżkę w momencie anulowania?
Tak. Przez API to komunikat z ofertą promocyjną, tylko w czasie rzeczywistym: oferta jest tworzona w App Store Connect i podpisywana przez twój serwer. Zapowiedziany moduł w App Store Connect też pozwala na komunikat z ofertą. Zmiana planu proponuje natomiast inną subskrypcję z tej samej grupy.
Ile znaków może mieć komunikat retencyjny?
Tytuł ma maksymalnie 66 znaków, tekst 144. Możesz dodać do pięciu punktów i obraz PNG bez przezroczystości. Każdy język potrzebuje własnego komunikatu domyślnego.
Czy do Retention Messaging potrzebny jest serwer?
Dla komunikatów domyślnych nie musisz hostować żadnego adresu: wystarczy wywołać API, żeby je wysłać i ustawić. Z RevenueCat to on pełni rolę serwera. Czas rzeczywisty wymaga adresu HTTPS, który odpowiada w mniej niż 700 ms. Zapowiedziany moduł w App Store Connect konfiguruje się bez kodu.

