Before you start
List the platforms and environments you ship, the subscription provider you use, and the small number of app events that describe activation and purchase intent. Decide how a signed-in user is represented consistently across the app and subscription system.1. Install and initialize the SDK
Use the iOS SDK for Swift or the React Native SDK for React Native and Expo. Initialize once during application startup, before tracking screens or product events. Keep development and production configuration separate. Verify events in a debug or sandbox build before releasing the integration.2. Model the product journey
Track the screens and events that answer real product questions: onboarding completed, paywall viewed, trial started, or a core action completed. Keep names stable across releases and avoid sending an event for every UI interaction.3. Identify signed-in users
Callidentify after the app has a trusted user ID. Use that same durable identity in RevenueCat or Superwall where supported, and call reset on logout. This deterministic bridge is more reliable than attempting to infer that two devices or sessions belong to one person.
Do not use an email address or advertising identifier as your primary internal user ID. Respect App Tracking Transparency and your broader analytics consent requirements.
4. Connect subscription revenue
Connect RevenueCat or Superwall from Sources and configure the webhook displayed by Datalyr. Use the environment that matches the app build, then test a purchase or subscription lifecycle event. The subscription provider should remain authoritative for trials, renewals, refunds, and cancellations. Avoid sending the same transaction independently from the app.5. Configure campaign attribution
Set up the mechanisms required by the platforms you advertise on, such as supported deep links, Android install-referrer behavior, Apple Search Ads, or Apple SKAdNetwork. Connect only the destinations you use and follow their current privacy and campaign requirements.6. Verify end to end
Use a fresh test installation and complete the actual journey: open or install, onboarding, sign-in, paywall, and sandbox purchase. Confirm the ordered screen events, identified customer, transaction value and currency, and subscription status appear together. Then verify the intended conversion through the destination’s test flow when available.Common problems
- Events begin too late: the SDK initializes after the first screen or campaign handling.
- One person appears as multiple users: the app and subscription provider use different stable IDs.
- Users merge after logout:
resetis not called before another account signs in. - Revenue is duplicated: both the app and subscription provider send the transaction.
- Sandbox purchases are missing: the webhook or source is connected to a different project or environment.