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.

  1. Aprende las diferencias principales.
  2. Migra tu catálogo a Adapty.
  3. Migra los diseños de tus paywalls, si tus ofertas se convierten en flows.
  4. Reemplaza el SDK de RevenueCat con tu agente de codificación.
  5. Migra tus integraciones.
  6. Reenvía los eventos del store a Adapty.
  7. Prueba y publica una nueva versión de tu app.
  8. (Opcional) Importa el historial de transacciones.
Info

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:

RevenueCatAdapty
PackageProducto
OfferingPaywall
PaywallFlow
EntitlementNivel 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).
2406d97-image.webp

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

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.

  1. Para abrir la lista de claves, en el dashboard de RevenueCat abre el proyecto y ve a API keys.
  2. Para crear la clave, haz clic en New secret API key.
  3. Para configurar la clave, introduce un nombre, por ejemplo Adapty migration, y elige V2 en API version.
  4. Para que Adapty pueda leer el catálogo, establece Project configuration permissions en Read only. Adapty no necesita ningún otro permiso.
  5. Para crear la clave, haz clic en Generate y cópiala.
Warning

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.

Formulario de clave API secreta de RevenueCat con versión de API V2 y permisos de configuración del proyecto configurados como Solo lectura

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

  1. 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.
  2. 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.

  3. 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.

  4. 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.

    Warning

    Las 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.

  5. Para que la nueva app pueda validar las compras, conéctala a los stores en el Adapty Dashboard: App Store y Google Play.

Note

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 en profile.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.

Warning

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.

  1. 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.

  2. 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.

  3. Para terminar la migración del código, revisa los cambios en la rama adapty-migrate y luego sigue las instrucciones de ADAPTY_SETUP.md en 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.

  1. 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.
  2. Para que Adapty acceda a los eventos de App Store, en la página del Adapty Dashboard que abre el agente, sube el archivo .p8 e introduce el Issuer ID y el Key ID. La clave va directamente a Adapty y nunca pasa por el agente ni por la CLI.

  3. 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/.

  4. 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.

  5. 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.

Warning

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.

  1. 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.
  2. 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.

  3. 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.

  4. 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.

  5. 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.md de 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.

Info

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.

Warning

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.

  1. 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.
  2. 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.

  3. 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.

  1. Para iniciar la importación, dile a tu agente:

    Import the RevenueCat transaction history into my Adapty app "Acme Fitness" through support.
  2. Para solicitar la exportación, envía al soporte de RevenueCat el primero de los dos mensajes que te proporciona el agente.

  3. 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ámetroDescripción
user_idCustomer User ID, el identificador principal de tu usuario en Adapty y en tu sistema.
apple_original_transaction_idPara cadenas de suscripción, es la fecha de compra de la transacción original, vinculada por store_original_transaction_id.
google_product_idEl ID del producto en Google Play Store.
google_purchase_tokenIdentificador único que proporciona Google Play para cada transacción, necesario para la validación.
countryEl país del usuario.
created_atLa fecha y hora de creación del usuario.
subscription_expiration_dateLa fecha y hora en que expira la suscripción.
emailEl correo electrónico del usuario final.
phone_numberEl número de teléfono del usuario final.
idfaEl Identificador para Anunciantes (IDFA), asignado por Apple al dispositivo de un usuario.
idfvEl Identificador para Proveedores (IDFV), un código asignado a todas las apps de un mismo desarrollador y compartido entre ellas en un dispositivo.
advertising_idIdentificador único proporcionado por el sistema operativo Android que los anunciantes pueden usar para el seguimiento.
attribution_channelEl nombre del canal de marketing.
attribution_campaignEl nombre de la campaña de marketing.
attribution_ad_groupEl grupo de anuncios de atribución.
attribution_ad_setEl conjunto de anuncios de atribución.
attribution_creativeLa 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.