Retention message composer
Not sent to Apple.
Header and body, optionally with bullet points. Can be a default message.
Check an image
ApplePNG only, no transparency. Full size is exactly 3840 wide and 160–2160 tall; bullet images are 1024×1024. Checked in this tab — nothing is uploaded.
A default for every product, in every language
AppleApple: the system doesn’t show a retention message for a product in any locale that lacks a default. There is no fallback to English. Only text messages, with or without an image, can be defaults.
One per line.
Export
The JSON holds exactly what the API takes: an Upload Image slot for every image (with the identifier the message refers to), an Upload Message body for every message, and a Configure Default Message call for every covered pair. Upload images first; nothing shows until Apple approves both the message and its images.
Nothing here can tell you how many cancellations a message saves — Apple publishes no figure, and only your own subscription data can show it. Apple’s one content rule is plain: don’t upload anything misleading or inaccurate. If a promotional-offer message is your plan, the offer itself is set up in App Store Connect; the offer codes planner covers the related limits.
Sources, read 2026-09-23
About this tool
What can you show a subscriber who is about to cancel?
Apple’s Retention Messaging puts one message on the Confirm Cancellation sheet — after someone taps Cancel Subscription and before they confirm. It can be text, text with an image, a suggested plan to switch to, or a promotional offer.
This composer writes those messages against every limit Apple documents, checks and fixes your images, and makes sure every subscription has a default message in every language you support — because where one is missing, Apple shows nothing.
How it works
- 1Each message is checked against Apple’s Upload Message caps: header 66, body 144, alt text 150, bullet text 66. Apple states the cap for a UTF-8-encoded value without saying characters or bytes, so both are counted and the stricter reading is flagged.
- 2Images are read in your browser for format, size and transparent pixels, and can be re-saved as an RGB PNG at Apple’s exact width with no alpha channel at all.
- 3The coverage grid lists every product and locale, using Apple’s case-sensitive API locale codes — which differ from listing codes for 17 languages, de-DE rather than de.
- 4Export produces Apple’s request bodies for Upload Image, Upload Message and Configure Default Message.
What it cannot tell you
- Apple’s Retention Messaging API is pre-release and access is by request. Apple says an App Store Connect interface arrives this fall.
- Only text messages, with or without an image, can be defaults. Switch-plan and promotional-offer messages are chosen by your server in real time.
- Apple reviews every message and image before it can show. Passing these checks is not approval.
- No figure here says how many cancellations a message saves. Apple publishes none, and only your own subscription data can show it.
Questions
What is App Store Retention Messaging?
A message Apple shows on the Confirm Cancellation sheet when someone cancels an auto-renewable subscription. You upload the text and images in advance, set a default for each product and locale, and can optionally pick a message in real time from your own server.
How long can a retention message be?
Apple caps the header at 66 and the body at 144, alt text at 150 and each bullet at 66. It describes each as a UTF-8-encoded value with a maximum length, without saying whether that counts characters or bytes, so plan non-Latin copy against bytes to be safe.
What size is a retention message image?
A PNG with no transparency. A full-size image is exactly 3840 pixels wide and 160 to 2160 tall; a bullet-point image is 1024 by 1024.
Which devices show retention messages?
Apple lists iOS 15.1 or later, iPadOS 15.1 or later, visionOS 1 or later and macOS 14 or later.