Retention Messaging API : le message avant la résiliation
Par Mehdi Azizi
Publié le , 10 min
La Retention Messaging API d'Apple affiche ton message quand un abonné touche Annuler l'abonnement. Formats, conditions, accès et mise en place.
La Retention Messaging API est un service d'Apple, de serveur à serveur, qui affiche ton message à un abonné au moment où il touche Annuler l'abonnement. Le message apparaît sur une page de confirmation, avant que la résiliation soit validée. Il peut rappeler la valeur de ton abonnement, proposer une autre formule ou une offre promotionnelle, mais le bouton pour résilier reste toujours là. L'API est en préversion depuis juillet 2025, sur demande d'accès, et Apple a annoncé une version plus simple dans App Store Connect pour l'automne 2026.
Ce guide explique ce que l'API affiche, depuis quand elle existe, qui peut l'utiliser, ses conditions et sa mise en place. Tout vient de la documentation d'Apple et de la session WWDC26 qui lui est consacrée, relues le 3 novembre 2026.
Je vends des abonnements dans mes apps iOS : Solys, un bloqueur de réseaux sociaux, TradaZen, un simulateur de trading, Nolera, une app d'essayage de tenues par IA, et Vigie. J'ai demandé l'accès à l'API pour les quatre le 25 octobre 2026, et préparé leurs messages dans toutes leurs langues. Le 28 octobre, l'accord d'Apple n'était pas encore arrivé : ce guide décrit donc la règle et ma préparation, pas encore des résultats.
Ce que fait la Retention Messaging API
D'après la documentation d'Apple, l'API te laisse choisir le message que le système affiche quand un client consulte la page de détail d'un abonnement et s'apprête peut-être à résilier. Tu prépares tes messages à l'avance, pour chaque produit et chaque langue.
Le parcours est toujours le même :
- L'abonné ouvre son abonnement, par exemple dans Compte Apple, Abonnements, ou depuis l'App Store.
- Il touche Annuler l'abonnement.
- Le système affiche une page de confirmation (Confirm Cancellation), avec ton message.
- Il peut résilier quand même, garder son abonnement, ou accepter ce que ton message propose.
Le message est visible sur iOS 15.1 et iPadOS 15.1 ou plus récent, sur visionOS 1 et sur macOS 14 ou plus récent.
Depuis quand, et pour qui
| Date | Ce qui change, d'après Apple |
|---|---|
| 16 juil. 2025 | Version 1.0 : première préversion de l'API |
| 9 déc. 2025 | Test de performance du serveur pour le temps réel |
| 31 mars 2026 | Puces dans les messages, réglage de l'adresse temps réel par l'API |
| 27 avr. 2026 | Prise en charge des abonnements mensuels avec engagement de 12 mois |
| Juin 2026 | WWDC26 : annonce d'un module dans App Store Connect |
Les dates viennent du journal des versions de l'API, sauf la dernière, tirée de la session WWDC26. L'API reste une préversion : la documentation renvoie vers un formulaire de demande d'accès, qui demande une connexion à ton compte développeur.
À la WWDC26, la session Explore Retention Messaging in App Store Connect présente un module réglable sans code, dans App Store Connect. Apple le dit « ouvert à tous ». La version en temps réel, elle, reste sur demande. La page des nouveautés de l'App Store annonce le module pour « cet automne ». Au 3 novembre 2026, l'aide d'App Store Connect ne lui consacre encore aucune page, et le module n'apparaissait pas dans mon compte le 28 octobre.
L'API concerne les apps qui vendent un abonnement auto-renouvelable. Ce n'est pas réservé aux gros éditeurs : RevenueCat note dans son étude de 22 millions de messages que les petites apps peuvent aussi demander l'accès.
Les 4 types de messages
| Type | Ce que voit l'abonné | Message par défaut | Temps réel |
|---|---|---|---|
| Texte | Un titre, un texte, jusqu'à cinq puces | Oui | Oui |
| Texte avec image | La même chose, avec une image | Oui | Oui |
| Changement de formule | Un texte et un autre abonnement du même groupe | Non | Oui |
| Offre promotionnelle | Un texte et une offre pour continuer à prix réduit | Non | Oui |
D'après la page sur la préparation des messages, un message par défaut ne peut être qu'un texte, avec ou sans image. Avec l'API, proposer une offre ou une autre formule demande de répondre en temps réel. Le module annoncé dans App Store Connect proposera, lui, un message avec une offre, sans serveur.
L'offre promotionnelle est celle que tu crées dans App Store Connect. D'après l'aide sur les offres promotionnelles, elle vise les abonnés actuels et anciens. Dans un message de rétention, c'est ton serveur qui la signe, d'après la page sur la préparation des messages. Le changement de formule propose un abonnement du même groupe. Si tu débutes avec ces offres, lis d'abord mon guide sur les codes d'offre et les offres promotionnelles.
Ce que tu peux afficher : les limites exactes
| Élément | Limite d'Apple |
|---|---|
| Titre | 66 caractères au plus |
| Texte | 144 caractères au plus |
| Puces | 5 au plus |
| Image pleine largeur | PNG sans transparence, 3 840 px de large, 160 à 2 160 de haut |
| Image de puce | 1 024 × 1 024 px |
| Images par app | 2 000 au plus |
Les longueurs viennent de la description du corps de la requête d'envoi d'un message, et les formats de la page sur l'envoi d'une image. Apple demande aussi des images qui fonctionnent aussi bien en mode clair qu'en mode sombre.
Chaque message et chaque image sont relus par Apple. Leur état passe de PENDING à APPROVED, et le système n'affiche que ce qui est approuvé. En sandbox, l'approbation est automatique. La documentation pose une règle de contenu claire : ne rien envoyer de trompeur ou d'inexact.
Les conditions à remplir
- Un message par défaut pour chaque produit, dans chaque langue. Sans lui, rien ne s'affiche dans cette langue. C'est aussi la roue de secours si ton serveur ne répond pas.
- Des messages et des images approuvés avant toute mise en ligne.
- Pour le temps réel, un serveur rapide. La page sur la mise en place de l'adresse temps réel demande un certificat SSL valide, TLS 1.2 et une réponse en moins de 700 ms en production. Au-delà, la requête échoue et le message par défaut s'affiche.
- Un test de performance réussi en sandbox, avant de déclarer ton adresse de production.
- Une vérification de l'app. Chaque requête d'Apple contient l'identifiant de l'app,
appAppleId. S'il ne correspond pas au tien, Apple demande de ne pas répondre.
La requête temps réel te donne l'identifiant de la transaction d'origine, le produit et la langue de l'appareil. À toi de choisir le message, selon tes règles.
Mettre en place la Retention Messaging : trois voies
| Voie | Pour qui | Ce qu'il faut |
|---|---|---|
| Module App Store Connect | Tout le monde, une fois sorti | Aucun code ; texte, image ou offre |
| API, avec ton serveur | Ceux qui ont un back-end | Accès Apple, adresse HTTPS, test de performance |
| API, par RevenueCat | Les apps déjà sur RevenueCat | Accès Apple, réglages dans le tableau de bord |
Quand plusieurs réglages coexistent, Apple explique dans la session WWDC26 l'ordre suivi : la réponse temps réel d'abord. Si elle manque ou est mal formée, le réglage d'App Store Connect. S'il n'existe pas, le message par défaut configuré par l'API.
Avec ton propre serveur
- Demande l'accès avec le formulaire d'Apple.
- Envoie tes images, puis tes messages, avec un titre et un texte pour chacun.
- Attends leur approbation, puis déclare un message par défaut pour chaque abonnement et chaque langue.
- Pour le temps réel, crée l'adresse
Get Retention Messagesur ton serveur et déclare-la en sandbox. - Lance le test de performance, en sandbox, avec une transaction de test.
- Une fois le test réussi, déclare ton adresse de production.
Avec RevenueCat
C'est la voie que j'ai choisie : pas de serveur à écrire, et mes apps passent déjà par RevenueCat, comme je l'explique dans RevenueCat et l'abonnement in-app iOS. D'après la documentation de RevenueCat :
- Dans le formulaire d'Apple, l'adresse à donner est celle que RevenueCat affiche dans les réglages de ton app App Store.
- Après l'accord, ouvre Lifecycle, puis Retention, et branche l'adresse sandbox.
- Lance le test de performance avec un abonnement sandbox ou TestFlight actif. Il peut durer jusqu'à une heure.
- Crée d'abord un message par défaut, langue par langue.
- Ajoute ensuite des messages temps réel, avec des règles. L'une d'elles, « Is in free trial », vise les personnes en essai gratuit.
- Passe en production : les réglages de sandbox ne sont pas repris, il faut recréer les messages.
Écrire un message qui garde sans piéger
Le texte est fixe et relu par Apple avant d'être affiché. Il ne peut donc pas parler de la personne qui le lit, ni du jour où elle le lit. Voici le message par défaut que j'ai préparé pour TradaZen, en français :
Titre (57 caractères) :
Tu voulais apprendre à trader, et tu repars à l'aveugle ?
Texte (127 caractères) :
Sans entraînement, ton vrai argent paie chaque erreur. Ici, elles ne coûtent rien. Ta série, ta ligue et tes leçons s'arrêtent.
Les règles que je me suis fixées pour mes quatre apps :
- Le titre renvoie la personne à son objectif, sous forme de question. Il ne lui fait pas honte.
- Le texte dit ce qui s'arrête, exactement. J'écris que l'accès « se verrouille » quand les données restent, jamais qu'elles seront « supprimées ».
- Aucun mot de temps comme « demain » ou « aujourd'hui » : le même texte s'affiche à n'importe quel moment de la période.
- Aucune promesse de gain, aucune fausse urgence. Un premier titre qui promettait de changer de vie grâce au trading a été écarté avant l'envoi. La guideline 5.6 interdit toute pratique manipulatrice, et le paywall de TradaZen a déjà été refusé à ce titre, comme je le raconte dans la guideline 5.6 et le paywall.
- Chaque langue a son texte, dans le vocabulaire de l'app traduite, et compté au caractère près.
Pour TradaZen, je prévois aussi un message temps réel pour les personnes en essai sur l'abonnement annuel. Il proposera une formule annuelle moins chère du même groupe, parce que mes chiffres montrent que ces personnes utilisent l'app autant que celles qui paient : c'est le prix qu'elles refusent. Ce réglage attend l'accord d'Apple.
Ce qu'on peut en attendre
Ne compte pas sur un miracle. Apple appelle taux de sauvetage la part des abonnés qui gardent leur abonnement une fois arrivés sur la page de confirmation. Dans la session WWDC26, Apple annonce que les abonnements qui ont adopté la Retention Messaging gagnent en moyenne 1,4 point de ce taux. Les messages avec une offre promotionnelle font le meilleur gain observé, 5,5 points, et les résultats varient d'un développeur à l'autre. De son côté, l'étude de RevenueCat relève que les abonnés n'acceptent qu'environ 1,1 % des offres promotionnelles et 0,6 % des changements de formule.
Le message ne remplace donc pas le travail en amont. Un essai gratuit qui s'annule dans la minute se joue sur le paywall et les premières sessions : les causes et les leviers sont dans mon guide sur l'essai gratuit annulé, et la création de l'essai dans l'offre d'introduction.
Préparer ton abonnement avant le message
Le Kit iOS part du code de départ de mes apps : onboarding, paywall et abonnements sont déjà codés, et le parcours en quatre étapes te mène jusqu'à l'App Store, à ton rythme. Toute la chaîne, des produits dans App Store Connect au paywall, est décrite sur la page abonnement in-app iOS.
Si tu prépares ta première sortie, fais ton diagnostic gratuit : il te dit ce qui bloque vraiment ton projet et t'envoie ma checklist anti-refus Apple.
Questions fréquentes
Qu'est-ce que la Retention Messaging API d'Apple ?
C'est un service de serveur à serveur qui choisit le message affiché à un abonné quand il touche Annuler l'abonnement. Le message s'affiche sur une page de confirmation, avant la résiliation. Il peut rappeler la valeur de l'abonnement, proposer une autre formule ou une offre promotionnelle.
La Retention Messaging est-elle disponible pour tous les développeurs ?
L'API est une préversion, sur demande d'accès auprès d'Apple. À la WWDC26, Apple a annoncé un module dans App Store Connect, ouvert à tous, prévu pour l'automne 2026. Au 3 novembre 2026, l'aide d'App Store Connect ne le décrit pas encore.
Sur quelles versions d'iOS le message s'affiche-t-il ?
Sur iOS 15.1 et iPadOS 15.1 ou plus récent, sur visionOS 1 et sur macOS 14 ou plus récent. Sur un appareil plus ancien, la résiliation se fait sans message.
Le message empêche-t-il l'abonné de résilier ?
Non. La page de confirmation garde un bouton pour résilier. L'abonné peut aussi garder son abonnement, ou accepter l'offre ou la formule proposée.
Peut-on proposer une réduction au moment de la résiliation ?
Oui. Avec l'API, c'est un message d'offre promotionnelle, en temps réel seulement : l'offre est créée dans App Store Connect et signée par ton serveur. Le module annoncé dans App Store Connect permet aussi un message avec une offre. Le changement de formule, lui, propose un autre abonnement du même groupe.
Combien de caractères pour un message de rétention ?
Le titre fait 66 caractères au plus, le texte 144. Tu peux ajouter jusqu'à cinq puces et une image PNG sans transparence. Chaque langue a besoin de son propre message par défaut.
Faut-il un serveur pour utiliser la Retention Messaging ?
Pas d'adresse à héberger pour les messages par défaut : il suffit d'appeler l'API pour les envoyer et les déclarer. Avec RevenueCat, c'est lui qui joue le rôle du serveur. Le temps réel demande une adresse HTTPS qui répond en moins de 700 ms. Le module annoncé dans App Store Connect se règle sans code.

