Skip to main content
Four sources report subscriptions: Stripe, RevenueCat, Superwall, and Whop. This page explains which metrics exist and what each one counts.

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.
Connect RevenueCat or Superwall, never both. Each writes the same fourteen event names for one store transaction, and we deduplicate inside a source rather than across them, so your mobile revenue doubles.

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 serve active_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

  1. Open your paywall or pricing page in a private window with ?utm_source=doctest.
  2. Open Events. Confirm a pageview row exists.
  3. Start one trial or one paid subscription.
  4. Open Events. Confirm a trial_started or subscription_started row.
  5. Confirm visitor_id does not start with the source name.
  6. Cancel the subscription. Confirm a cancellation row arrives.

When it does not work