Migration depuis RevenueCat

La migration depuis RevenueCat comporte huit étapes. Un agent de code effectue la majeure partie du travail : il exécute les migrations via l’Adapty CLI et remplace le SDK RevenueCat dans votre application. Vous gérez ce que l’agent ne peut pas atteindre — les secrets, ainsi que les paramètres dans RevenueCat, App Store Connect et Google Cloud.

  1. Découvrir les différences essentielles.
  2. Migrer votre catalogue vers Adapty.
  3. Migrer vos designs de paywall, si vos offres deviennent des flows.
  4. Remplacer le SDK RevenueCat avec votre agent de code.
  5. Migrer vos intégrations.
  6. Transmettre les événements du store à Adapty.
  7. Tester et publier une nouvelle version de votre app.
  8. (Facultatif) Importer votre historique de transactions.
Info

Vos abonnés migreront automatiquement

Tous les utilisateurs ayant déjà activé un abonnement seront instantanément migrés vers Adapty dès qu’ils ouvriront la nouvelle version de votre application avec le SDK Adapty. La validation du statut de l’abonnement et l’accès premium seront restaurés automatiquement.

Avant de publier une nouvelle version de votre application avec le SDK Adapty, pensez à consulter notre checklist de publication.

Découvrez les principales différences

Les SDK Adapty et RevenueCat sont conçus de façon similaire. La principale différence réside dans l’utilisation du réseau et la rapidité : le SDK Adapty est conçu pour vous fournir les informations à la demande, aussi vite que possible. Par exemple, lors de la récupération d’un paywall, vous recevez d’abord le Remote Config pour préparer votre onboarding ou votre paywall, puis vous récupérez les produits dans une requête dédiée.

Les noms diffèrent légèrement :

RevenueCatAdapty
PackageProduit
OfferingPaywall
PaywallFlow
EntitlementNiveau d’accès

Adapty propose un concept de placement. C’est un emplacement logique dans votre application où l’utilisateur peut effectuer un achat. Dans la plupart des cas, vous avez un ou deux placements :

  • Onboarding (car 80 % de tous les achats y ont lieu) ;
  • Général (vous l’affichez dans les paramètres ou dans l’application après l’onboarding).
2406d97-image.webp

Migrer votre catalogue vers Adapty

La migration du catalogue crée une nouvelle application Adapty à partir de votre projet RevenueCat : des niveaux d’accès à partir des entitlements, des produits à partir des packages, et un placement avec un paywall ou un flow pour chaque offering.

Avant de commencer

  • Utilisez un agent de code capable d’exécuter des commandes dans le terminal, par exemple Claude Code, Codex ou Cursor.
  • Dans le terminal utilisé par votre agent, installez le CLI Adapty et connectez-vous.
  • Dans RevenueCat, créez une clé API secrète (v2) pour le projet que vous migrez.
  • Vérifiez les stores. La migration couvre uniquement les apps App Store et Google Play.

Créer une clé API secrète RevenueCat

Adapty lit votre catalogue RevenueCat avec une clé API secrète du projet que vous migrez. Les clés secrètes dans RevenueCat appartiennent à un projet, donc créez la clé dans ce projet.

  1. Pour ouvrir la liste des clés, dans le tableau de bord RevenueCat, ouvrez le projet, puis accédez à API keys.
  2. Pour créer la clé, cliquez sur New secret API key.
  3. Pour configurer la clé, saisissez un nom, par exemple Adapty migration, et choisissez V2 dans API version.
  4. Pour permettre à Adapty de lire le catalogue, définissez Project configuration permissions sur Read only. Adapty n’a besoin d’aucune autre permission.
  5. Pour créer la clé, cliquez sur Generate, puis copiez-la.
Warning

Utilisez une clé API secrète, pas une clé publique. Une clé publique spécifique à l’application ne peut pas lire la configuration du projet.

RevenueCat secret API key form with API version V2 and Project configuration permissions set to Read only

Lorsque la migration demande la clé, collez-la dans la page Adapty Dashboard qui s’ouvre.

Exécuter la migration du catalogue

  1. Pour démarrer la migration, demandez à votre agent :

    Migrate my RevenueCat project to a new Adapty app called "Acme Fitness" with the Adapty CLI.
  2. Pour connecter RevenueCat, collez la clé API secrète dans la page de l’Adapty Dashboard que l’agent ouvre. La clé est transmise directement à Adapty et ne passe jamais par l’agent ni par le CLI.

  3. Pour choisir ce que vous souhaitez migrer, indiquez à l’agent quelles applications RevenueCat vont ensemble — généralement une par plateforme pour un même produit. Ensemble, elles forment une seule application Adapty.

  4. Pour finaliser le mapping, répondez aux questions de l’agent sur les entités qu’Adapty n’a pas pu associer automatiquement. Pour chaque offering, choisissez ce que son placement contient : un paywall que votre application affiche elle-même, ou un flow depuis le Flow & Paywall Builder. Adapty suggère un flow pour les offerings qui ont un paywall RevenueCat.

    Warning

    Les décisions sont définitives. Une fois que chaque entité a reçu une décision, Adapty crée le catalogue et vous ne pouvez plus modifier le mapping après cela.

    Adapty crée les niveaux d’accès, les produits, les paywalls et les flows, ainsi que les placements, dans cet ordre. Si certains échouent, l’agent vous explique pourquoi. Une fois que toutes les entités sont dans Adapty, la migration est terminée.

  5. Pour permettre à la nouvelle application de valider les achats, connectez-la aux stores dans l’Adapty Dashboard : App Store et Google Play.

Note

Pour exécuter la migration sans agent, utilisez les commandes de migration. adapty migrations status indique la prochaine action à effectuer et les données qu’elle attend.

Comment les entités RevenueCat correspondent à Adapty

  • L’identifiant d’un entitlement devient l’ID du niveau d’accès : ainsi, customerInfo.entitlements["premium"] devient profile.accessLevels["premium"].
  • Un produit qui ne correspond à aucun entitlement octroie le niveau d’accès premium.
  • L’identifiant d’une offre devient l’ID du placement.
  • Les métadonnées d’une offre deviennent le Remote Config du paywall ou du flow, jusqu’à 256 Ko.

Ce que la migration du catalogue ne couvre pas

  • Les offres sans produits.
  • Les produits dont l’identifiant produit App Store est rejeté par Adapty, par exemple un identifiant contenant un deux-points ou un espace. L’agent vous indique lesquels, et ils ne nécessitent aucune décision.
  • Les applications disponibles dans des stores autres qu’App Store et Google Play.
  • Intégrations : Migrez-les séparément.

Migrez vos designs de paywall

Chaque flow créé par la migration du catalogue est publié avec un écran vide sur les produits de l’offre. Pour reconstruire vos designs de paywall RevenueCat dans ces flows, demandez à votre agent :

Migrate my RevenueCat paywall designs to my Adapty app "Acme Fitness" with the Adapty CLI.

L’agent reconstruit les flows un par un et publie chacun d’eux après votre approbation. Il liste les éléments à ajouter manuellement, comme les vidéos et les polices personnalisées. Il lit les designs avec votre clé API secrète RevenueCat, conservez-la donc jusqu’à ce que tous les designs soient migrés.

Warning

Tant que sa conception n’a pas été déplacée, un flow affiche un écran vide. Ne publiez pas une version de l’application qui affiche un tel flow.

Remplacer le SDK RevenueCat

Un agent de code remplace le SDK RevenueCat par le SDK Adapty dans le code de votre application, en utilisant les identifiants du catalogue créé par la migration. Chaque exécution migre une base de code : pour une application avec des projets iOS et Android séparés, exécutez-le dans chacun.

Avant de commencer, commitez ou mettez en attente vos modifications dans le dépôt de l’application, afin que la migration reste un diff unique et facile à réviser.

  1. Pour démarrer la migration du code, ouvrez votre agent à la racine du dépôt de l’application et demandez :

    Migrate the app code in this repository from RevenueCat to Adapty with the Adapty CLI, for my Adapty app "Acme Fitness".

    Si l’agent vous demande de le redémarrer pour charger les skills Adapty, redémarrez-le et répétez la demande.

  2. Si le design d’un flow n’a pas encore été migré, indiquez à l’agent si l’application affiche le flow ou conserve son propre écran de paywall en attendant.

  3. Pour finaliser la migration du code, examinez les modifications sur la branche adapty-migrate, puis parcourez ADAPTY_SETUP.md à la racine de votre projet. Ce fichier liste ce que l’agent vous a laissé à faire.

Migrer vos intégrations

Votre agent repère les outils d’analytics, d’attribution et de messagerie dans le code de votre application et vous indique comment les configurer dans Adapty. Il ne modifie aucun fichier. Demandez :

Find the integrations in my app code to set up in my Adapty app "Acme Fitness", with the Adapty CLI.

Si le dépôt ne contient le code que d’une seule plateforme, indiquez à l’agent où se trouve l’autre. Ensuite, configurez les intégrations comme décrit dans Migrer les intégrations vers Adapty. Les webhooks, Slack et les exports vers le stockage cloud ne se trouvent pas dans le code de l’application : retrouvez-les sur la page Integrations dans RevenueCat.

Transmettre les événements du store à Adapty

L’App Store et Google Play signalent les renouvellements, annulations et remboursements à votre serveur via des notifications, y compris ceux qui surviennent en dehors de votre application. Deux migrations connectent Adapty à ces notifications pendant que RevenueCat continue de recevoir chaque événement, afin que les deux restent à jour pendant que vos utilisateurs migrent vers la nouvelle version de l’application.

Lancez-les une fois la migration du catalogue terminée. Adapty récupère le bundle ID et le nom du package depuis les applications RevenueCat que vous avez sélectionnées à cette étape.

Transférer les événements App Store

Adapty reçoit les notifications App Store et les transfère à RevenueCat.

Avant de commencer, créez une clé d’achat intégré dans App Store Connect, et notez son Issuer ID et son Key ID.

  1. Pour démarrer le transfert, demandez à votre agent :

    Forward App Store events for my Adapty app "Acme Fitness" to Adapty, and keep RevenueCat receiving them.
  2. Pour donner à Adapty accès aux événements App Store, sur la page Adapty Dashboard que l’agent ouvre, téléversez le fichier .p8, puis saisissez l’Issuer ID et le Key ID. La clé va directement à Adapty et ne transite jamais par l’agent ni par le CLI.

  3. Pour que RevenueCat continue de recevoir les événements App Store, communiquez l’URL de notification RevenueCat à l’agent. Dans RevenueCat, ouvrez votre app iOS, puis copiez l’Apple Server Notification URL depuis Apple Server to Server notification settings. Elle commence par https://api.revenuecat.com/v1/incoming-webhooks/.

  4. Pour pointer l’App Store vers Adapty, dans App Store Connect, ouvrez votre app, puis accédez à App Information > App Store Server Notifications. Définissez à la fois la Production Server URL et la Sandbox Server URL sur l’URL Adapty que l’agent vous fournit, avec les notifications Version 2. Pour plus de détails, voir Activer les notifications de serveur App Store. Le transfert vers RevenueCat est déjà actif à ce stade, donc aucun événement n’est perdu.

  5. Pour vérifier la connexion, indiquez à l’agent que les URLs sont configurées. Adapty demande à l’App Store une notification de test et attend sa réception. Si elle n’arrive pas, l’agent vous explique pourquoi.

Transférer les événements Google Play

Google Play envoie des notifications à un topic Pub/Sub. Adapty s’abonne au topic que RevenueCat utilise déjà, en tant que second abonné, afin que RevenueCat continue de recevoir les événements.

Warning

Ne modifiez pas le topic dans Google Play Console, et ne suivez pas les étapes décrites dans Activer RTDN pour cette application. Un nouveau topic interrompt les notifications vers RevenueCat.

  1. Pour démarrer le transfert, demandez à votre agent :

    Forward Google Play events for my Adapty app "Acme Fitness" to Adapty, and keep RevenueCat receiving them.
  2. Pour donner à Adapty l’accès au topic, créez une clé JSON pour le compte de service utilisé par RevenueCat. Dans la console Google Cloud, accédez à IAM & Admin > Service Accounts, ouvrez le compte, généralement revenuecat-service-account, puis allez dans Keys > Add key et choisissez JSON. Une nouvelle clé n’a aucune incidence sur RevenueCat. Pour plus de détails, consultez le guide Google sur la création d’une clé de compte de service.

  3. Pour téléverser la clé, sur la page Adapty Dashboard que l’agent ouvre, déposez le fichier dans Google Play service account key (JSON). La clé est transmise directement à Adapty et ne transite jamais par l’agent ni par le CLI.

  4. Pour abonner Adapty au topic, communiquez son ID à l’agent. Dans RevenueCat, ouvrez les paramètres de votre application Google Play, puis copiez le Topic ID depuis Google developer notifications. La Google Play Console affiche la même valeur dans Monetize > Monetization setup > Topic name.

    Adapty s’abonne au topic, publie une notification de test et attend sa réception. Si elle n’arrive pas, l’agent vous explique pourquoi.

  5. Si le test échoue en raison d’un problème de permissions, accordez au compte de service le rôle Pub/Sub Editor dans le projet du topic, ou le rôle Pub/Sub Subscriber sur le topic et Pub/Sub Editor dans le projet de la clé. Demandez ensuite à l’agent de vérifier à nouveau.

Tester et publier une nouvelle version de votre application

Si vous lisez ceci, vous avez déjà :

  • Migré votre catalogue vers Adapty
  • Migré vos designs de paywall, si vous utilisez des flows
  • Remplacé le SDK RevenueCat par Adapty
  • Suivi le fichier ADAPTY_SETUP.md généré par votre agent de code
  • Configuré vos intégrations dans Adapty
  • Transféré les événements App Store et Google Play vers Adapty
  • Effectué un achat en sandbox
  • Publié une nouvelle version de l’application

Si vous avez coché les points ci-dessus, faites simplement un achat test en sandbox, puis publiez l’application.

Info

Consultez la liste de contrôle pour la mise en production.

Effectuez la vérification finale à l’aide de notre liste pour valider l’intégration existante ou ajouter des fonctionnalités supplémentaires telles que les intégrations d’attribution ou d’analytics.

(Optionnel) Importez votre historique de transactions

L’importation remplit les profils et les graphiques avec l’historique de paiement de vos utilisateurs. Elle n’a aucun impact sur les accès de qui que ce soit.

Warning

Ne vous précipitez pas pour importer les données historiques

Attendez au moins une semaine après la mise en production avec le SDK avant d’effectuer l’import des données historiques. Pendant ce temps, nous récupérerons toutes les informations sur les prix d’achat depuis le SDK, ce qui rendra les données importées plus pertinentes.

Deux migrations importent l’historique dans l’app que votre migration de catalogue a créée. Utilisez un Cloud Export si votre plan RevenueCat en inclut un.

Avec une exportation cloud RevenueCat

RevenueCat effectue une exportation quotidienne dans un bucket qu’Adapty prépare pour votre application, et Adapty importe chaque fichier reçu.

  1. Pour lancer l’import, demandez à votre agent :

    Import the RevenueCat transaction history into my Adapty app "Acme Fitness" with a Cloud Export.
  2. Pour connecter l’export, donnez à l’agent l’External ID fourni par RevenueCat. Dans RevenueCat, ouvrez les paramètres Scheduled Data Exports, choisissez IAM Role (ARN) comme type d’identifiant, et copiez l’External ID affiché par RevenueCat. L’External ID n’est pas un secret.

  3. Pour finaliser les paramètres d’export, dans RevenueCat, saisissez le bucket, la région et le role ARN fournis par l’agent. Activez Receive new and updated transactions only. Sinon, RevenueCat exporte l’intégralité de l’historique chaque jour, et Adapty importe chaque fichier.

RevenueCat peut prendre jusqu’à 24 heures pour livrer le premier fichier, et Adapty vérifie la présence de nouveaux fichiers dans le bucket toutes les heures. La migration se termine automatiquement une semaine après qu’Adapty a importé le premier fichier. Le Customer User ID de chaque profil importé est rc_last_seen_app_user_id_alias.

Via le support

Utilisez cette méthode si votre plan RevenueCat ne propose pas d’export Cloud : le support RevenueCat vous envoie l’export, et le support Adapty l’importe.

  1. Pour démarrer l’import, demandez à votre agent :

    Import the RevenueCat transaction history into my Adapty app "Acme Fitness" through support.
  2. Pour demander l’export, envoyez au support RevenueCat le premier des deux messages que l’agent vous fournit.

  3. Pour importer l’export, transférez les fichiers envoyés par RevenueCat au support Adapty avec le second message. Joignez les fichiers exactement tels que RevenueCat vous les a envoyés : les ouvrir, les ré-enregistrer ou les fusionner modifie le format des colonnes attendu par l’import.

Ce que l’importation apporte

Les données suivantes seront importées dans Adapty pour chaque transaction :

ParamètreDescription
user_idCustomer User ID, l’identifiant principal de votre utilisateur dans Adapty et dans votre système.
apple_original_transaction_idPour les chaînes d’abonnements, il s’agit de la date d’achat de la transaction d’origine, liée par store_original_transaction_id.
google_product_idL’identifiant du produit dans le Google Play Store.
google_purchase_tokenUn identifiant unique fourni par Google Play pour chaque transaction, requis pour la validation.
countryLe pays de l’utilisateur.
created_atLa date et l’heure de création de l’utilisateur.
subscription_expiration_dateLa date et l’heure d’expiration de l’abonnement.
emailL’adresse e-mail de l’utilisateur final.
phone_numberLe numéro de téléphone de l’utilisateur final.
idfaL’Identifier for Advertisers (IDFA), attribué par Apple à l’appareil d’un utilisateur.
idfvL’Identifier for Vendors (IDFV), un code attribué à toutes les applications d’un même développeur et partagé entre ces applications sur un appareil.
advertising_idUn identifiant unique fourni par l’OS Android que les annonceurs peuvent utiliser à des fins de suivi.
attribution_channelLe nom du canal marketing.
attribution_campaignLe nom de la campagne marketing.
attribution_ad_groupLe groupe d’annonces d’attribution.
attribution_ad_setL’ensemble d’annonces d’attribution.
attribution_creativeLe mot-clé créatif d’attribution.

En outre, les identifiants d’intégration pour les intégrations suivantes seront importés : Amplitude, Mixpanel, AppsFlyer, Adjust et FacebookAds.

Ce qui ne transparaît pas

  • Chaque transaction est revalidée auprès du store lors de l’import, donc les lignes que le store ne reconnaît plus sont supprimées.
  • Les lignes sans véritable identifiant de transaction en store — par exemple, les droits promotionnels ou accordés manuellement dans RevenueCat — sont importées en tant que profils sans transactions. Pour restaurer l’accès de ces utilisateurs, accordez-leur un niveau d’accès via l’API côté serveur.
  • L’historique des remboursements et des problèmes de facturation n’est pas repris tel quel : un remboursement ne conserve que sa date d’annulation, et l’état de problème de facturation d’un abonnement est enregistré au moment de l’import, et non avec les dates historiques.

FAQ

J’ai installé le SDK Adapty avec succès et publié une nouvelle version de l’app. Que va-t-il se passer pour mes abonnés existants qui n’ont pas mis à jour vers la version intégrant le SDK Adapty ?

La plupart des utilisateurs chargent leur téléphone la nuit, période à laquelle l’App Store met généralement à jour toutes leurs apps automatiquement, donc ça ne devrait pas poser de problème. Il peut rester un petit nombre d’abonnés payants qui n’ont pas effectué la mise à jour, mais ils auront tout de même accès au contenu premium. Vous n’avez pas à vous en inquiéter ni à les forcer à mettre à jour.

Dois-je exporter mes données historiques depuis RevenueCat le plus vite possible, ou vais-je les perdre ?

Pas besoin de vous précipiter : publiez d’abord une version avec le SDK Adapty, puis importez votre historique. Nous restaurerons l’historique des paiements de vos utilisateurs et alimenterons les profils et les graphiques.

J’utilise un MMP (AppsFlyer, Adjust, etc.) et des outils d’analytics (Mixpanel, Amplitude, etc.). Comment m’assurer que tout fonctionnera ?

Vous devez d’abord nous transmettre les identifiants de ces services tiers via notre SDK pour que nous puissions leur envoyer les données. Consultez le guide d’intégration de l’attribution et le guide d’intégration des analytics. Pour les données historiques et les utilisateurs existants, assurez-vous de nous transmettre ces identifiants à partir des données que vous avez exportées depuis RevenueCat.