Migración desde RevenueCat
Una migración desde RevenueCat tiene ocho pasos. Un agente de codificación hace la mayor parte del trabajo: ejecuta las migraciones con el Adapty CLI y reemplaza el SDK de RevenueCat en tu app. Tú te encargas de lo que el agente no puede alcanzar: los secretos y la configuración en RevenueCat, App Store Connect y Google Cloud.
- Aprende las diferencias principales.
- Migra tu catálogo a Adapty.
- Migra los diseños de tus paywalls, si tus ofertas se convierten en flows.
- Reemplaza el SDK de RevenueCat con tu agente de codificación.
- Migra tus integraciones.
- Reenvía los eventos del store a Adapty.
- Prueba y publica una nueva versión de tu app.
- (Opcional) Importa el historial de transacciones.
Tus suscriptores migrarán automáticamente
Todos los usuarios que alguna vez hayan activado una suscripción pasarán automáticamente a Adapty en cuanto abran la nueva versión de tu app con el SDK de Adapty. La validación del estado de la suscripción y el acceso premium se restaurarán de forma automática.
Antes de publicar la nueva versión de tu app con el SDK de Adapty, asegúrate de revisar nuestra lista de verificación para el lanzamiento.
Aprende las diferencias principales
Los SDK de Adapty y RevenueCat tienen un diseño similar. La mayor diferencia está en el uso de red y la velocidad: el SDK de Adapty está diseñado para proporcionarte información bajo demanda de la forma más rápida posible cuando la solicitas. Por ejemplo, al pedir un paywall, primero obtienes el Remote Config para construir previamente tu onboarding o paywall y luego solicitas los productos en una petición independiente.
Los nombres difieren ligeramente:
| RevenueCat | Adapty |
|---|---|
| Package | Producto |
| Offering | Paywall |
| Paywall | Flow |
| Entitlement | Nivel de acceso |
Adapty tiene el concepto de placement. Es un lugar lógico dentro de tu app donde el usuario puede realizar una compra. En la mayoría de los casos, tienes uno o dos placements:
- Onboarding (porque el 80% de todas las compras se realizan ahí);
- General (lo muestras en los ajustes o dentro de la app después del onboarding).
Migra tu catálogo a Adapty
La migración del catálogo crea una nueva app de Adapty a partir de tu proyecto de RevenueCat: niveles de acceso a partir de entitlements, productos a partir de paquetes y un placement con un paywall o un flow para cada offering.
Antes de empezar
- Utiliza un agente de codificación que ejecute comandos de terminal, por ejemplo Claude Code, Codex o Cursor.
- En la terminal que usa tu agente, instala la CLI de Adapty y accede con tu cuenta.
- En RevenueCat, crea una clave de API secreta (v2) para el proyecto que vas a migrar.
- Comprueba las stores. La migración solo cubre apps de App Store y Google Play.
Crea una clave de API secreta de RevenueCat
Adapty lee tu catálogo de RevenueCat con una clave de API secreta del proyecto que migras. Las claves secretas en RevenueCat pertenecen a un único proyecto, así que créala en ese proyecto.
- Para abrir la lista de claves, en el dashboard de RevenueCat abre el proyecto y ve a API keys.
- Para crear la clave, haz clic en New secret API key.
- Para configurar la clave, introduce un nombre, por ejemplo
Adapty migration, y elige V2 en API version. - Para que Adapty pueda leer el catálogo, establece Project configuration permissions en Read only. Adapty no necesita ningún otro permiso.
- Para crear la clave, haz clic en Generate y cópiala.
Usa una clave secreta, no una pública. Una clave pública específica de la app no puede leer la configuración del proyecto.
Cuando la migración solicite la clave, pégala en la página del Adapty Dashboard que se abre.
Ejecutar la migración del catálogo
-
Para iniciar la migración, pregúntale a tu agente:
Migrate my RevenueCat project to a new Adapty app called "Acme Fitness" with the Adapty CLI. -
Para conectar RevenueCat, pega la clave API secreta en la página del Adapty Dashboard que abre el agente. La clave va directamente a Adapty y nunca pasa por el agente ni por la CLI.
-
Para elegir qué migrar, indícale al agente qué aplicaciones de RevenueCat pertenecen juntas, normalmente una por plataforma del mismo producto. Juntas formarán una única app de Adapty.
-
Para cerrar el mapeo, responde las preguntas del agente sobre las entidades que Adapty no pudo mapear por sí solo. Para cada offering, elige qué contiene su placement: un paywall que tu app renderiza por su cuenta, o un flow del Flow & Paywall Builder. Adapty sugiere un flow para los offerings que tienen un paywall de RevenueCat.
WarningLas decisiones son definitivas. Cuando todas las entidades tienen una decisión, Adapty crea el catálogo y no podrás cambiar el mapeo después.
Adapty crea niveles de acceso, productos, paywalls y flows, y placements, en ese orden. Si alguno falla, el agente te indica el motivo. Cuando todas las entidades están en Adapty, la migración se completa.
-
Para que la nueva app pueda validar las compras, conéctala a los stores en el Adapty Dashboard: App Store y Google Play.
Para ejecutar la migración sin un agente, usa los comandos de migración. adapty migrations status indica la siguiente acción y los datos que necesita.
Cómo se relacionan las entidades de RevenueCat con Adapty
- Un identificador de entitlement se convierte en el ID del nivel de acceso, por lo que
customerInfo.entitlements["premium"]se convierte enprofile.accessLevels["premium"]. - Un producto que no concede ningún entitlement concede el nivel de acceso
premium. - Un identificador de offering se convierte en el ID del placement.
- Los metadatos del offering se convierten en el Remote Config del paywall o del flow, hasta 256 KB.
Lo que la migración del catálogo no incluye
- Offerings sin productos.
- Productos cuyo ID de producto de App Store Adapty rechaza, por ejemplo un ID con dos puntos o un espacio. El agente te indica cuáles son, y no requieren ninguna decisión.
- Apps en stores distintos de App Store y Google Play.
- Integraciones: Muévelas por separado.
Mueve los diseños de tus paywalls
Cada flow que crea la migración del catálogo se publica con una pantalla vacía sobre los productos de la oferta. Para reconstruir los diseños de tus paywalls de RevenueCat en estos flows, pídele a tu agente:
Migrate my RevenueCat paywall designs to my Adapty app "Acme Fitness" with the Adapty CLI.
El agente reconstruye los flows uno a uno y publica cada uno después de que lo apruebes. Indica qué elementos debes añadir tú mismo, como vídeos y fuentes personalizadas. Lee los diseños con tu clave secreta de API de RevenueCat, así que consérvala hasta que todos los diseños estén migrados.
Hasta que se le asigne un diseño, un flow muestra una pantalla en blanco. No publiques una versión de la app que muestre ese flow.
Reemplazar el SDK de RevenueCat
Un agente de codificación reemplaza el SDK de RevenueCat con el SDK de Adapty en el código de tu app, usando los IDs del catálogo que creó la migración. Cada ejecución migra una base de código: si tu app tiene proyectos separados para iOS y Android, ejecútalo en cada uno.
Antes de empezar, haz commit o stash de tus cambios en el repositorio de la app, para que la migración quede como un único diff revisable.
-
Para iniciar la migración de código, abre tu agente en la raíz del repositorio de la app y pregunta:
Migrate the app code in this repository from RevenueCat to Adapty with the Adapty CLI, for my Adapty app "Acme Fitness".Si el agente te pide que lo reinicies para cargar los skills de Adapty, reinícialo y repite la solicitud.
-
Si el diseño de un flow todavía no se ha migrado, dile al agente si la app muestra el flow o si mantiene su propia pantalla de paywall hasta entonces.
-
Para terminar la migración del código, revisa los cambios en la rama
adapty-migratey luego sigue las instrucciones deADAPTY_SETUP.mden la raíz de tu proyecto. Ahí encontrarás lo que el agente dejó pendiente para ti.
Migra tus integraciones
Tu agente encuentra las herramientas de analítica, atribución y mensajería en el código de tu app e indica cómo configurar cada una en Adapty. No modifica ningún archivo. Pregunta:
Find the integrations in my app code to set up in my Adapty app "Acme Fitness", with the Adapty CLI.
Si el repositorio solo contiene el código de una plataforma, indica al agente dónde está la otra. A continuación, configura las integraciones tal como se describe en Migrar integraciones a Adapty. Los webhooks, Slack y las exportaciones a almacenamiento en la nube no están en el código de la app: encuéntralos en la página Integrations de RevenueCat.
Reenvía los eventos de la store a Adapty
El App Store y Google Play notifican a tu servidor sobre renovaciones, cancelaciones y reembolsos a través de notificaciones, incluidas las que ocurren fuera de tu app. Dos migraciones conectan Adapty a estas notificaciones mientras RevenueCat sigue recibiendo todos los eventos, de modo que ambos permanecen actualizados mientras tus usuarios se pasan a la nueva versión de la app.
Inícielas tras completar la migración del catálogo. Adapty obtiene el bundle ID y el package name de las apps de RevenueCat que seleccionaste allí.
Reenviar eventos de App Store
Adapty recibe las notificaciones de App Store y las reenvía a RevenueCat.
Antes de empezar, crea una clave de compras in-app en App Store Connect y anota su Issuer ID y Key ID.
-
Para iniciar el reenvío, pídele a tu agente:
Forward App Store events for my Adapty app "Acme Fitness" to Adapty, and keep RevenueCat receiving them. -
Para que Adapty acceda a los eventos de App Store, en la página del Adapty Dashboard que abre el agente, sube el archivo
.p8e introduce el Issuer ID y el Key ID. La clave va directamente a Adapty y nunca pasa por el agente ni por la CLI. -
Para que RevenueCat siga recibiendo eventos de App Store, facilítale al agente la URL de notificaciones de RevenueCat. En RevenueCat, abre tu app de iOS y copia la Apple Server Notification URL desde Apple Server to Server notification settings. Empieza por
https://api.revenuecat.com/v1/incoming-webhooks/. -
Para que App Store apunte a Adapty, en App Store Connect abre tu app y ve a App Information > App Store Server Notifications. Establece tanto la Production Server URL como la Sandbox Server URL con la URL de Adapty que te proporciona el agente, con notificaciones Version 2. Para más detalles, consulta Activar notificaciones del servidor de App Store. El reenvío a RevenueCat ya está activo en este punto, por lo que no se pierde ningún evento.
-
Para verificar la conexión, indícale al agente que las URLs están configuradas. Adapty solicita a App Store una notificación de prueba y espera a recibirla. Si no llega, el agente te explica por qué.
Reenviar eventos de Google Play
Google Play envía notificaciones a un topic de Pub/Sub. Adapty se suscribe al topic que ya usa RevenueCat como segundo suscriptor, para que RevenueCat siga recibiendo los eventos.
No cambies el topic en Google Play Console y no sigas los pasos de Habilitar RTDN para esta app. Un nuevo topic interrumpe las notificaciones a RevenueCat.
-
Para comenzar el reenvío, pídele a tu agente:
Forward Google Play events for my Adapty app "Acme Fitness" to Adapty, and keep RevenueCat receiving them. -
Para conceder acceso a Adapty al topic, crea una clave JSON para la cuenta de servicio que usa RevenueCat. En la consola de Google Cloud, ve a IAM & Admin > Service Accounts, abre la cuenta, normalmente
revenuecat-service-account, luego ve a Keys > Add key y elige JSON. La nueva clave no afecta a RevenueCat. Para más detalles, consulta la guía de Google sobre cómo crear una clave de cuenta de servicio. -
Para subir la clave, en la página del Adapty Dashboard que abre el agente, carga el archivo en Google Play service account key (JSON). La clave va directamente a Adapty y nunca pasa por el agente ni por la CLI.
-
Para suscribir a Adapty al topic, proporciona al agente su ID. En RevenueCat, abre la configuración de tu app de Google Play y copia el Topic ID de Google developer notifications. Google Play Console muestra el mismo valor en Monetize > Monetization setup > Topic name.
Adapty se suscribe al tema, luego publica una notificación de prueba y espera recibirla. Si no llega, el agente te indica el motivo.
-
Si la prueba falla por un problema de permisos, otorga al service account el rol Pub/Sub Editor en el proyecto del tema, o el rol Pub/Sub Subscriber en el tema y Pub/Sub Editor en el proyecto de la clave. Luego pide al agente que vuelva a comprobarlo.
Prueba y lanza una nueva versión de tu app
Si estás leyendo esto, ya has:
- Migrado tu catálogo a Adapty
- Migrado los diseños de tus paywalls, si usas flows
- Reemplazado el SDK de RevenueCat por Adapty
- Trabajado con el archivo
ADAPTY_SETUP.mdde tu agente de código - Configurado tus integraciones en Adapty
- Redirigido los eventos de App Store y Google Play a Adapty
- Realizado una compra en sandbox
- Publicado una nueva versión de la app
Si has marcado los puntos anteriores, solo tienes que hacer una compra de prueba en el Sandbox y luego lanzar la app.
Consulta la lista de verificación para el lanzamiento.
Realiza la comprobación final con nuestra lista para validar la integración existente o añadir funciones adicionales como integraciones de atribución o analíticas.
(Opcional) Importa tu historial de transacciones
La importación rellena los perfiles y los gráficos con el historial de pagos de tus usuarios. No afecta al acceso de nadie.
No te precipites con la importación de datos históricos
Debes esperar al menos una semana tras el lanzamiento con el SDK antes de hacer la importación de datos históricos. Durante ese tiempo, obtendremos toda la información sobre los precios de las compras desde el SDK, por lo que los datos que importes serán más relevantes.
Dos migraciones importan el historial en la app que creó tu migración de catálogo. Usa una exportación en la nube si tu plan de RevenueCat lo incluye.
Con una exportación Cloud de RevenueCat
RevenueCat realiza una exportación diaria en un bucket que Adapty prepara para tu app, y Adapty importa todos los archivos que recibe.
-
Para iniciar la importación, pregúntale a tu agente:
Import the RevenueCat transaction history into my Adapty app "Acme Fitness" with a Cloud Export. -
Para conectar la exportación, proporciona al agente el External ID de RevenueCat. En RevenueCat, abre los ajustes de Scheduled Data Exports, elige IAM Role (ARN) como tipo de credencial y copia el External ID que muestra RevenueCat. El External ID no es un dato secreto.
-
Para finalizar la configuración de la exportación, en RevenueCat, introduce el bucket, la región y el ARN del rol que te indique el agente. Activa Receive new and updated transactions only. De lo contrario, RevenueCat exporta todo el historial cada día y Adapty importa todos los archivos.
RevenueCat puede tardar hasta 24 horas en entregar el primer archivo, y Adapty busca nuevos archivos en el bucket cada hora. La migración finaliza automáticamente una semana después de que Adapty importe el primer archivo. El Customer User ID de cada perfil importado es rc_last_seen_app_user_id_alias.
A través de soporte
Usa este método si tu plan de RevenueCat no incluye Cloud Export: el soporte de RevenueCat te envía el export y el soporte de Adapty lo importa.
-
Para iniciar la importación, dile a tu agente:
Import the RevenueCat transaction history into my Adapty app "Acme Fitness" through support. -
Para solicitar la exportación, envía al soporte de RevenueCat el primero de los dos mensajes que te proporciona el agente.
-
Para importar la exportación, reenvía los archivos que RevenueCat te envíe al soporte de Adapty con el segundo mensaje. Adjunta los archivos exactamente como te los envió RevenueCat: abrirlos, volver a guardarlos o fusionarlos cambia el formato de columnas que espera la importación.
Qué incluye la importación
Los siguientes datos se importarán a Adapty por cada transacción:
| Parámetro | Descripción |
|---|---|
| user_id | Customer User ID, el identificador principal de tu usuario en Adapty y en tu sistema. |
| apple_original_transaction_id | Para cadenas de suscripción, es la fecha de compra de la transacción original, vinculada por store_original_transaction_id. |
| google_product_id | El ID del producto en Google Play Store. |
| google_purchase_token | Identificador único que proporciona Google Play para cada transacción, necesario para la validación. |
| country | El país del usuario. |
| created_at | La fecha y hora de creación del usuario. |
| subscription_expiration_date | La fecha y hora en que expira la suscripción. |
| El correo electrónico del usuario final. | |
| phone_number | El número de teléfono del usuario final. |
| idfa | El Identificador para Anunciantes (IDFA), asignado por Apple al dispositivo de un usuario. |
| idfv | El Identificador para Proveedores (IDFV), un código asignado a todas las apps de un mismo desarrollador y compartido entre ellas en un dispositivo. |
| advertising_id | Identificador único proporcionado por el sistema operativo Android que los anunciantes pueden usar para el seguimiento. |
| attribution_channel | El nombre del canal de marketing. |
| attribution_campaign | El nombre de la campaña de marketing. |
| attribution_ad_group | El grupo de anuncios de atribución. |
| attribution_ad_set | El conjunto de anuncios de atribución. |
| attribution_creative | La palabra clave creativa de atribución. |
En además, se importarán los identificadores de integración para las siguientes integraciones: Amplitude, Mixpanel, AppsFlyer, Adjust y FacebookAds.
Lo que no se transmite
- Cada transacción se revalida con el store durante la importación, por lo que las filas que el store ya no reconoce se descartan.
- Las filas sin un ID de transacción real del store — por ejemplo, las entitlements promocionales o concedidas manualmente de RevenueCat — se importan como perfiles sin transacciones. Para restaurar el acceso de estos usuarios, concédeles un nivel de acceso con la API del servidor.
- El historial de reembolsos y problemas de facturación no se transfiere tal cual: un reembolso conserva únicamente su fecha de cancelación, y el estado de problema de facturación de una suscripción se registra en el momento de la importación, no con las fechas históricas.
Preguntas frecuentes
Instalé el SDK de Adapty correctamente y publiqué una nueva versión de la app. ¿Qué pasará con mis suscriptores existentes que no actualicen a la versión con el SDK de Adapty?
La mayoría de los usuarios cargan sus teléfonos por la noche, que es cuando App Store suele actualizar automáticamente todas sus apps, por lo que no debería ser un problema. Puede que quede un pequeño número de suscriptores de pago que no hayan actualizado, pero seguirán teniendo acceso al contenido premium. No tienes que preocuparte por ello ni forzarlos a actualizar.
¿Necesito exportar mis datos históricos de RevenueCat lo antes posible o los perderé?
No tienes que hacerlo con prisa; primero lanza la app con el SDK de Adapty y luego importa tu historial. Restauraremos el historial de pagos de tus usuarios y rellenaremos los perfiles y los gráficos.
Uso MMP (AppsFlyer, Adjust, etc.) y análisis (Mixpanel, Amplitude, etc.). ¿Cómo me aseguro de que todo funcione?
Primero debes pasarnos los IDs de esos servicios de terceros a través de nuestro SDK para que podamos enviarles datos. Lee la guía de integración de atribución y la de integración de análisis. Para datos históricos y usuarios legacy, asegúrate de pasarnos esos IDs a partir de los datos que exportaste de RevenueCat.