RevenueCat
Se la tua app usa RevenueCat, collega il suo webhook e Unolink riceve ogni prova, acquisto, rinnovo, cancellazione e rimborso direttamente da RevenueCat, compresi i rinnovi e i rimborsi che avvengono quando l’app non è nemmeno aperta. I ricavi nel tuo funnel diventano al netto dei rimborsi. Dal piano Pro in su.
1. Collega
In Unolink, apri la tua app → Impostazioni → RevenueCat → Collega. Copia l’URL del webhook e il valore dell’header Authorization (mostrato una sola volta).
2. Aggiungi il webhook in RevenueCat
In RevenueCat, apri il tuo progetto → Integrations → Webhooks → Add new configuration:
- Webhook URL e Authorization header value: incollali.
- Environment: entrambi. Gli acquisti sandbox vengono contati come dispositivi di test, quindi restano fuori dai tuoi numeri reali.
- App: questa app. Events: tutti.
Salva, poi Send test event. La scheda RevenueCat in Unolink lo mostra quando arriva.
3. Di’ a Unolink chi è l’utente
Gli acquisti vengono collegati all’installazione (e al link da cui è arrivata) tramite l’ID utente che la tua app
riporta: l’app user ID di RevenueCat. Con l’SDK 0.3.2 o successivo, una riga lo tiene aggiornato. Chiamala una
volta all’avvio, prima o dopo 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 legge l’ID all’avvio, ogni volta che l’app torna in primo piano e ogni volta che cambia, e lo invia solo quando
è nuovo. Non aggiunge RevenueCat alla tua app: sei tu a passargli RevenueCat. Su iOS e Android, chiama anche
Unolink.revenueCatUserChanged() dopo Purchases.logIn e Purchases.logOut per inviare subito il nuovo ID
(altrimenti parte con il prossimo evento). React Native e Flutter notano il cambio da soli.
Senza connectRevenueCat (un SDK precedente, o se preferisci farlo da te), chiama setUserId con l’ID di
RevenueCat dopo Purchases.configure, dopo ogni Purchases.logIn e Purchases.logOut, e a ogni avvio. Usa l’uno o
l’altro, non entrambi:
Unolink.setUserId(Purchases.shared.appUserID)
Unolink.setUserId(Purchases.sharedInstance.appUserID)
Unolink.setUserId(await Purchases.getAppUserID())
Unolink.setUserId(await Purchases.appUserID);
Per un ospite, è l’ID anonimo di RevenueCat, quindi un acquisto fatto prima della registrazione si collega subito
all’installazione. Dopo logIn, è l’ID dell’account. Unolink conserva ogni ID che un’installazione ha riportato, così
l’acquisto dell’ospite resta collegato.
Se la tua app riporta solo l’ID dell’account, l’acquisto di un ospite si collega comunque, ma solo con il prossimo evento di RevenueCat per quel cliente che elenca entrambi gli ID (per esempio il primo rinnovo). Fino a quel momento la persona risulta non ancora pagante. Riportare l’ID di RevenueCat evita quest’attesa.
Quando qualcuno tocca «continua come ospite», chiama anche Unolink.signUpSkipped() (SDK 0.3.2 o successivo, React
Native 0.3.1; SDK precedenti: track("sign_up_skipped")), così il passaggio Continuato come ospite del funnel li
conta. Vedi Ospiti e account.
Unolink non salva mai l’ID in sé, solo un hash con chiave diverso per ognuna delle tue app. Un acquisto che arriva prima che l’app abbia riportato il suo utente aspetta, e si collega all’installazione appena lo fa. I pagamenti che arrivano giorni o settimane dopo contano comunque, e il Report mostra quanto tempo ci mettono le persone: vedi Pagamenti e ID utente, che tratta anche la privacy e le regole di Apple.
Cosa arriva
| RevenueCat | In Unolink |
|---|---|
INITIAL_PURCHASE (prova) | Prova iniziata |
INITIAL_PURCHASE, NON_RENEWING_PURCHASE, conversione della prova | Pagato, con ricavi |
RENEWAL | Rinnovato, con ricavi |
CANCELLATION (rimborso) | Rimborsato, ricavi sottratti |
CANCELLATION, EXPIRATION, BILLING_ISSUE | Abbonamento annullato, Abbonamento scaduto, Problema di pagamento |
Una volta collegato, RevenueCat è la fonte di riferimento per acquisti e prove: se la tua app chiama anche
Unolink.purchase() o trialStarted(), queste chiamate vengono ignorate, quindi nulla viene contato due volte. Rinnovi,
cancellazioni e il resto possono essere aggiunti come passaggi in qualsiasi funnel (Funnel → Modifica).