RevenueCat
Si votre app utilise RevenueCat, connectez son webhook et Unolink reçoit chaque essai, achat, renouvellement, annulation et remboursement directement depuis RevenueCat, y compris les renouvellements et remboursements qui ont lieu quand l’app n’est même pas ouverte. Les revenus de votre entonnoir deviennent nets des remboursements. Forfait Pro et plus.
1. Connecter
Dans Unolink, ouvrez votre app → Paramètres → RevenueCat → Connecter. Copiez l’URL du webhook et la valeur de l’en-tête Authorization (affichée une seule fois).
2. Ajouter le webhook dans RevenueCat
Dans RevenueCat, ouvrez votre projet → Integrations → Webhooks → Add new configuration :
- Webhook URL et Authorization header value : collez-les.
- Environment : les deux. Les achats sandbox sont comptés comme appareils de test, ils restent donc en dehors de vos vrais chiffres.
- App : cette app. Events : tous.
Enregistrez, puis Send test event. La carte RevenueCat dans Unolink indique quand il arrive.
3. Indiquer à Unolink qui est l’utilisateur
Les achats sont reliés à l’installation (et au lien d’où elle vient) grâce à l’identifiant utilisateur signalé par votre
app : le propre identifiant utilisateur d’app de RevenueCat. Avec le SDK 0.3.2 ou plus récent, une seule ligne le
tient à jour. Appelez-la une fois au lancement, avant ou après configure :
Unolink.connectRevenueCat { Purchases.isConfigured ? Purchases.shared.appUserID : nil }
Unolink.connectRevenueCat { Purchases.sharedInstance.appUserID }
import Purchases from "react-native-purchases"
Unolink.connectRevenueCat(Purchases)
Unolink.connectRevenueCat(
() => Purchases.appUserID,
addListener: Purchases.addCustomerInfoUpdateListener,
removeListener: Purchases.removeCustomerInfoUpdateListener,
);
Unolink lit l’identifiant au lancement, chaque fois que l’app revient au premier plan et chaque fois qu’il change, et ne
l’envoie que s’il est nouveau. Cela n’ajoute pas RevenueCat à votre app : c’est vous qui lui passez RevenueCat. Sur iOS
et Android, appelez aussi Unolink.revenueCatUserChanged() après Purchases.logIn et Purchases.logOut pour envoyer
le nouvel identifiant tout de suite (sinon il part avec le prochain événement). React Native et Flutter remarquent le
changement d’eux-mêmes.
Sans connectRevenueCat (un SDK plus ancien, ou si vous préférez le faire vous-même), appelez setUserId avec
l’identifiant de RevenueCat après Purchases.configure, après chaque Purchases.logIn et Purchases.logOut, et à
chaque lancement. Utilisez l’un ou l’autre, pas les deux :
Unolink.setUserId(Purchases.shared.appUserID)
Unolink.setUserId(Purchases.sharedInstance.appUserID)
Unolink.setUserId(await Purchases.getAppUserID())
Unolink.setUserId(await Purchases.appUserID);
Pour un invité, c’est l’identifiant anonyme de RevenueCat, donc un achat fait avant l’inscription est relié à
l’installation tout de suite. Après logIn, c’est l’identifiant du compte. Unolink conserve chaque identifiant signalé
par une installation, donc l’achat de l’invité reste relié.
Si votre app ne signale que l’identifiant du compte, l’achat d’un invité est quand même relié, mais seulement avec le prochain événement RevenueCat pour ce client qui liste les deux identifiants (par exemple le premier renouvellement). Jusque-là, la personne apparaît comme n’ayant pas encore payé. Signaler l’identifiant de RevenueCat évite cette attente.
Quand quelqu’un appuie sur « continuer en invité », appelez aussi Unolink.signUpSkipped() (SDK 0.3.2 ou plus récent,
React Native 0.3.1 ; SDK plus anciens : track("sign_up_skipped")), pour que l’étape Continué en invité de
l’entonnoir les compte. Voir Invités et comptes.
Unolink ne stocke jamais l’identifiant lui-même, seulement un hash à clé, différent pour chacune de vos apps. Un achat qui arrive avant que l’app ait remonté son utilisateur attend, et est relié à l’installation dès que c’est fait. Les paiements qui arrivent des jours ou des semaines plus tard comptent quand même, et le Rapport montre combien de temps les gens mettent : voir Paiements et identifiants utilisateur, qui couvre aussi la confidentialité et les règles d’Apple.
Ce qui arrive
| RevenueCat | Dans Unolink |
|---|---|
INITIAL_PURCHASE (essai) | Essai commencé |
INITIAL_PURCHASE, NON_RENEWING_PURCHASE, conversion d’essai | A payé, avec revenus |
RENEWAL | Renouvelé, avec revenus |
CANCELLATION (remboursement) | Remboursé, revenus déduits |
CANCELLATION, EXPIRATION, BILLING_ISSUE | Abonnement annulé, Abonnement expiré, Problème de paiement |
Une fois RevenueCat connecté, il fait foi pour les achats et les essais : si votre app appelle aussi Unolink.purchase()
ou trialStarted(), ces appels sont ignorés, donc rien n’est compté deux fois. Les renouvellements, annulations et le
reste peuvent être ajoutés comme étapes dans n’importe quel entonnoir (Entonnoir → Modifier).