The lifecycle
Do not count trial starts as customers. Do not count renewals as acquisitions. Send initial paid conversions to your ad platforms, and read renewals separately.
Metrics per source
RevenueCat adds two metrics Superwall lacks:
revenuecat_subscriptions_extended and revenuecat_refunds_reversed.
MRR and lifetime value
We compute MRR for Stripe only, from subscription items, with exact decimal arithmetic. Stripe MRR is unavailable for a subscription that is paused, discounted, metered, tiered, usage-based, on a schedule, mixed-currency, or priced without a fixed unit amount. We serveactive_mrr_usd only when the baseline snapshot is complete and no subscription is incomplete, and return nothing rather than an approximation.
MRR does not exist for RevenueCat, Superwall, or Whop.
Datalyr has no lifetime-value metric. RevenueCat and Superwall write event_data.predicted_ltv equal to that single event’s net revenue, and a conversion rule can send that field to an ad platform. The field covers one event, not a customer’s history.
Align identity
Revenue joins a campaign only through the identity field of that source.
On mobile, call the helper after both SDKs initialize. Call it again after the App Tracking Transparency prompt.
Verify
- Open your paywall or pricing page in a private window with
?utm_source=doctest. - Open Events. Confirm a
pageviewrow exists. - Start one trial or one paid subscription.
- Open Events. Confirm a
trial_startedorsubscription_startedrow. - Confirm
visitor_iddoes not start with the source name. - Cancel the subscription. Confirm a cancellation row arrives.