Pagos e IDs de usuario

Unolink une cada pago a la instalación a la que pertenece, y así al enlace o anuncio del que vino esa instalación. Eso funciona por tarde que llegue el pago: alguien que toca hoy tu anuncio de TikTok y se suscribe dentro de dos semanas sigue contando como usuario de pago de ese anuncio. Plan Pro y superiores.

Cómo se cuentan los pagos tardíos

  • Cada evento pertenece a una instalación. Un pago que llega una semana o un mes después de la instalación se añade a esa misma persona.
  • Los embudos, los Recorridos y el Informe nunca cortan. Un paso cuenta si la persona lo hizo en cualquier momento, así que un pago tardío la sigue convirtiendo en "Pagó".
  • El rango de fechas elige personas, no eventos. "Últimos 7 días" significa personas que instalaron en los últimos 7 días, más todo lo que hicieron después. Vuelve a mirar las instalaciones de la semana pasada la semana que viene y puede que Pagó haya subido: son pagadores tardíos que llegan, no un error.
  • Los Recorridos se actualizan solos. Alguien que aparece como "Se fue" (sin actividad durante una semana) pasa a "Completado" cuando llega su pago, y la fila muestra "pagó 9 días después de instalar · volvió".

Dónde ver cuánto tarda la gente

  • Informe → Cuándo paga la gente: la proporción de instalaciones que pagan en un día, 7 días y 30 días, la espera mediana, y cuántas volvieron a pagar tras una semana o más de silencio, para todos y por enlace. "En 7 días" solo cuenta las instalaciones de al menos 7 días, así las instalaciones recientes no bajan el número.
  • Recorridos: cada persona que paga muestra cuántos días después de instalar pagó por primera vez, y si volvió después de quedarse inactiva.
  • Ya suscrito: alguien que se suscribió antes de esta instalación (una reinstalación, un teléfono nuevo) envía una renovación, no una compra. Recorridos lo muestra como "Ya suscrito · renovó" y cuenta su dinero en los ingresos, pero no como Pagó: la venta no la hizo esta instalación ni el enlace del que vino.

Qué necesita tu app

Los pagos llegan a Unolink de una de estas dos formas:

  1. RevenueCat (recomendado). Conecta su webhook en tu app → Ajustes → RevenueCat. RevenueCat informa de compras, conversiones de prueba, renovaciones y reembolsos incluso cuando la app no está abierta, que es como ocurren la mayoría de los pagos tardíos (una prueba gratis que se convierte una semana después, una renovación el mes siguiente).
  2. La llamada purchase() del SDK, enviada desde dentro de la app cuando alguien paga ahí. Sirve sin RevenueCat, pero no puede ver nada de lo que pasa fuera de la app.

Para que los eventos de RevenueCat encuentren la instalación correcta, la app tiene que decirle a Unolink quién es el usuario, con el propio ID de usuario de app de RevenueCat. Con el SDK 0.3.2 o posterior, una línea al iniciar lo mantiene al día:

// iOS: once at launch, before or after configure
Unolink.connectRevenueCat { Purchases.isConfigured ? Purchases.shared.appUserID : nil }
// Android
Unolink.connectRevenueCat { Purchases.sharedInstance.appUserID }
// React Native
Unolink.connectRevenueCat(Purchases)
// Flutter
Unolink.connectRevenueCat(() => Purchases.appUserID,
    addListener: Purchases.addCustomerInfoUpdateListener,
    removeListener: Purchases.removeCustomerInfoUpdateListener);

Lee el ID de RevenueCat al iniciar, cuando la app vuelve al primer plano y cuando cambia, y solo lo envía cuando es nuevo (en iOS y Android, llama también a Unolink.revenueCatUserChanged() después de logIn y logOut). Antes de la 0.3.2, o para hacerlo tú mismo, llama en su lugar a setUserId con el ID de RevenueCat (por ejemplo Unolink.setUserId(Purchases.shared.appUserID)) después de Purchases.configure, después de cada Purchases.logIn y Purchases.logOut, y en cada inicio. Usa uno u otro, no los dos. RevenueCat tiene el código para cada plataforma.

Para un invitado, el ID de RevenueCat es su ID anónimo, así que una compra hecha antes de registrarse se une a la instalación de inmediato. Después de logIn, es el ID de la cuenta. Unolink conserva cada ID que haya informado una instalación, así que la compra del invitado se mantiene unida. Un pago que llega antes de que la app haya enviado el ID de usuario no se pierde: espera y se une a la instalación en cuanto llega el ID. Sin RevenueCat, llama a setUserId con tu propio ID de usuario, y null (nil en Swift) al cerrar sesión.

Cuando alguien toca «continuar como invitado», llama también a Unolink.signUpSkipped() (SDK 0.3.2 o posterior, React Native 0.3.1; SDK anteriores: track("sign_up_skipped")), para que el paso Siguió como invitado del embudo los cuente. Consulta Invitados y cuentas.

Cuándo no se puede unir un pago

  • Sin RevenueCat y sin setUserId, y la persona paga fuera de la app (por ejemplo, en tu sitio web). Nada se lo dice a Unolink.
  • Reinstala antes de pagar. Una instalación nueva es una persona nueva para Unolink, salvo que el mismo ID de usuario las vincule.
  • Paga en otro dispositivo. También se une solo mediante el ID de usuario.
  • Un invitado paga, y la app solo informa del ID de la cuenta. RevenueCat envía la compra con su ID anónimo, que la app nunca informó. Aun así se une, pero solo con el siguiente evento de RevenueCat para ese cliente que incluya ambos IDs (por ejemplo, la primera renovación); hasta entonces la persona aparece como que todavía no ha pagado. Informar del propio ID de RevenueCat la une de inmediato.

Con RevenueCat conectado y su ID informado (connectRevenueCat, o setUserId con el ID de RevenueCat), todos estos casos quedan cubiertos.

Privacidad: esto no es fingerprinting

  • Fingerprinting significa averiguar qué dispositivo es alguien a partir de sus características (dirección IP, pantalla, fuentes, ajustes) sin preguntar, normalmente para seguirlo a través de las apps de otras empresas. Apple lo prohíbe, y Unolink nunca lo hace.
  • setUserId es el propio ID de usuario de tu app, entregado a propósito por tu app. Unolink solo guarda un hash unidireccional con clave de él (HMAC-SHA256 con una clave única para cada una de tus apps), nunca el ID en sí, y lo usa para una sola cosa: unir los pagos de tu app a las instalaciones de tu app. Nunca se comparte con otras apps, redes publicitarias ni nadie más.
  • App Tracking Transparency de Apple trata de vincular los datos de tu app con las apps o los sitios web de otras empresas para publicidad, o de compartirlos con brókeres de datos. Unir tus propias compras a tus propias instalaciones es analítica propia (first-party), del mismo tipo que hacen RevenueCat o Firebase, así que no necesita aviso de rastreo.

En las preguntas de privacidad de App Store Connect, Unolink con setUserId normalmente se resume en: ID de usuario y Compras, recopilados para Análisis, vinculados al usuario y no usados para rastrear. Tus propias respuestas dependen de todo lo demás que hace tu app, así que revísalas en conjunto.