Zahlungen und Nutzer-IDs
Unolink ordnet jede Zahlung der Installation zu, zu der sie gehört, und damit dem Link oder der Anzeige, über die diese Installation kam. Das funktioniert, egal wie spät die Zahlung kommt: Wer heute auf deine TikTok-Anzeige tippt und in zwei Wochen ein Abo abschließt, zählt trotzdem als zahlender Nutzer aus dieser Anzeige. Ab dem Pro-Tarif.
So werden späte Zahlungen gezählt
- Jedes Event gehört zu einer Installation. Eine Zahlung, die eine Woche oder einen Monat nach der Installation ankommt, wird derselben Person zugerechnet.
- Funnels, Journeys und der Bericht schneiden nie ab. Ein Schritt zählt, wenn die Person ihn zu irgendeinem Zeitpunkt gemacht hat, eine späte Zahlung macht sie also trotzdem zu „Bezahlt“.
- Der Zeitraum wählt Personen aus, nicht Events. „Letzte 7 Tage“ heißt Personen, die in den letzten 7 Tagen installiert haben, plus alles, was sie danach getan haben. Schau dir die Installationen der letzten Woche nächste Woche noch einmal an, und Bezahlt ist vielleicht gestiegen: Das sind späte Zahler, die ankommen, kein Fehler.
- Journeys aktualisieren sich selbst. Jemand, der als „Ausgestiegen“ angezeigt wird (eine Woche keine Aktivität), wird zu „Abgeschlossen“, wenn seine Zahlung ankommt, und die Zeile zeigt „9 Tage nach Installation bezahlt · zurückgekommen“.
Wo du siehst, wie lange Leute brauchen
- Bericht → Wann Leute zahlen: der Anteil der Installationen, die innerhalb eines Tages, 7 Tagen und 30 Tagen zahlen, die mittlere Wartezeit und wie viele nach einer Woche oder mehr Funkstille zurückgekommen sind, um zu zahlen, für alle und pro Link. „Innerhalb von 7 Tagen“ zählt nur Installationen, die mindestens 7 Tage alt sind, damit neue Installationen die Zahl nicht nach unten ziehen.
- Journeys: Jede zahlende Person zeigt, wie viele Tage nach der Installation sie zum ersten Mal bezahlt hat und ob sie zurückgekommen ist, nachdem sie still geworden war.
- Schon abonniert: Jemand, der vor dieser Installation ein Abo abgeschlossen hat (eine Neuinstallation, ein neues Smartphone), sendet eine Verlängerung, keinen Kauf. Journeys zeigt solche Personen als „Schon abonniert · verlängert“ und zählt ihr Geld zum Umsatz, aber nicht als Bezahlt: Den Verkauf hat nicht diese Installation gemacht und auch nicht der Link, über den sie kam.
Was deine App braucht
Zahlungen erreichen Unolink auf einem von zwei Wegen:
- RevenueCat (empfohlen). Verbinde seinen Webhook unter deiner App → Einstellungen → RevenueCat. RevenueCat meldet Käufe, Umwandlungen von Testphasen, Verlängerungen und Erstattungen, auch wenn die App nicht offen ist, und so passieren die meisten späten Zahlungen (eine kostenlose Testphase, die eine Woche später umgewandelt wird, eine Verlängerung im nächsten Monat).
- Der Aufruf
purchase()des SDK, aus der App gesendet, wenn jemand dort bezahlt. Ohne RevenueCat in Ordnung, aber er sieht nichts, was außerhalb der App passiert.
Damit die Events von RevenueCat die richtige Installation finden, muss die App Unolink sagen, wer der Nutzer ist, mit RevenueCats eigener App-User-ID. Ab SDK 0.3.2 hält eine Zeile beim Start sie aktuell:
// 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);
Es liest RevenueCats ID beim Start, wenn die App wieder in den Vordergrund kommt und wenn sie sich ändert, und sendet sie nur,
wenn sie neu ist (auf iOS und Android ruf außerdem nach logIn und logOut Unolink.revenueCatUserChanged() auf). Vor
0.3.2, oder wenn du es selbst machen willst, ruf stattdessen setUserId mit RevenueCats ID auf (zum Beispiel
Unolink.setUserId(Purchases.shared.appUserID)), nach Purchases.configure, nach jedem Purchases.logIn und
Purchases.logOut und bei jedem Start. Nutze das eine oder das andere, nicht beides. Unter RevenueCat
findest du den Code für jede Plattform.
Für einen Gast ist RevenueCats ID die anonyme ID, sodass ein Kauf, der vor der Registrierung gemacht wird, sofort mit der Installation
verknüpft wird. Nach logIn ist es die ID des Kontos. Unolink behält jede ID, die eine Installation gemeldet hat, sodass der
Kauf des Gasts verknüpft bleibt. Eine Zahlung, die ankommt, bevor die App die Nutzer-ID gesendet hat, geht nicht verloren: Sie
wartet und wird der Installation zugeordnet, sobald die ID ankommt. Ohne RevenueCat ruf setUserId mit deiner eigenen Nutzer-ID
auf und beim Abmelden mit null (nil in Swift).
Wenn jemand „als Gast weiter“ tippt, ruf zusätzlich Unolink.signUpSkipped() auf (SDK 0.3.2 oder neuer, React Native 0.3.1;
ältere SDKs: track("sign_up_skipped")), damit der Funnel-Schritt Als Gast weiter sie zählt. Siehe
Gäste und Konten.
Wenn eine Zahlung nicht zugeordnet werden kann
- Kein RevenueCat und kein
setUserId, und die Person zahlt außerhalb der App (zum Beispiel auf deiner Website). Nichts teilt Unolink das mit. - Die Person installiert neu, bevor sie zahlt. Eine neue Installation ist für Unolink eine neue Person, außer dieselbe Nutzer-ID verbindet beide.
- Die Person zahlt auf einem anderen Gerät. Auch das wird nur über die Nutzer-ID zugeordnet.
- Ein Gast zahlt, und die App meldet nur die Konto-ID. RevenueCat sendet den Kauf unter seiner anonymen ID, die die App nie gemeldet hat. Er wird trotzdem verknüpft, aber erst mit RevenueCats nächstem Event für diesen Kunden, das beide IDs nennt (zum Beispiel die erste Verlängerung); bis dahin zeigt die Person als noch nicht bezahlt. Wenn RevenueCats eigene ID gemeldet wird, wird er sofort verknüpft.
Mit verbundenem RevenueCat und gemeldeter ID (connectRevenueCat, oder setUserId mit RevenueCats ID) sind alle diese
Fälle abgedeckt.
Datenschutz: Das ist kein Fingerprinting
- Fingerprinting heißt, aus den Merkmalen eines Geräts (IP-Adresse, Bildschirm, Schriften, Einstellungen) ohne zu fragen herauszufinden, welches Gerät jemand ist, meist um die Person über die Apps anderer Unternehmen hinweg zu verfolgen. Apple verbietet das, und Unolink macht es nie.
setUserIdist die eigene Nutzer-ID deiner App, absichtlich von deiner App übergeben. Unolink behält davon nur einen Einweg-Hash mit Schlüssel (HMAC-SHA256 mit einem Schlüssel, der für jede deiner Apps einzigartig ist), nie die ID selbst, und nutzt ihn für genau eine Sache: die Zahlungen deiner App den Installationen deiner App zuzuordnen. Er wird nie mit anderen Apps, Werbenetzwerken oder sonst jemandem geteilt.- Bei Apples App Tracking Transparency geht es darum, die Daten deiner App mit Apps oder Websites anderer Unternehmen für Werbung zu verknüpfen oder sie an Datenhändler weiterzugeben. Deine eigenen Käufe deinen eigenen Installationen zuzuordnen, ist First-Party-Analyse, dieselbe Art, die RevenueCat oder Firebase machen, und braucht daher keine Tracking-Abfrage.
In den Datenschutzfragen von App Store Connect läuft Unolink mit setUserId meist auf Folgendes hinaus: Nutzer-ID und
Käufe, erhoben für Analysen, mit dem Nutzer verknüpft und nicht zum Tracking genutzt. Deine eigenen Antworten hängen
von allem anderen ab, was deine App macht, prüfe sie also als Ganzes.