Skip to main content
Four sources report subscriptions: Stripe, RevenueCat, Superwall, and Whop. This page covers the metrics and renewal credit.

The lifecycle

Do not count trial starts as customers, and do not count renewals as acquisitions. Send initial paid conversions to your ad platforms, and read renewals separately.

Who gets credit for a renewal

A renewal is the same acquisition, billed again, so Datalyr credits it to the source that acquired the customer. Without this a January Google click cannot win a March renewal, and the payment lands on Direct. Both pages read these columns the same way: Revenue and ROAS keep the meaning they always had. A renewal moves between sources; the range total never changes. Conversions plus Renewals is the old count.

Which rows are renewals

We read each platform’s own marker, never the payment order. A trial conversion is the first paid period, so it is an acquisition and a later renewal credits back to it. An unlabelled Shopify order still reaches LTV through the customer. Acquisition revenue can go negative, because a refund of a renewal subtracts from it while the renewal sits in Revenue. That is why it is not the default.

When a renewal keeps its own date

Datalyr looks back 90 days for the acquiring payment, because click history is kept that long. An unmatched renewal selects touches from its own date, and the page says so above the table.
Ad platforms credit conversions only inside their own attribution windows, and a renewal falls outside them. Keep renewals out of every new-customer conversion rule. Renewal crediting changes what Datalyr reports, never what we send to Meta or Google.

Metrics per source

RevenueCat adds two 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. We serve active_mrr_usd only when the baseline snapshot is complete. It never exists for RevenueCat, Superwall, or Whop. Stripe MRR is also unavailable here: The LTV column is a cohort figure, keyed on the CUSTOMER. For customers first acquired inside the range it sums every later payment to date, refunds subtracted: renewals, repeat orders, and upsells. Payments after the range end count too. A supplement buyer who reorders four times by hand is one customer worth four orders. LTV counts payments we hold, and is not a forecast. RevenueCat and Superwall also write event_data.predicted_ltv, which equals one event’s net revenue, so it covers one payment.

Align identity

Revenue joins a campaign only through that source’s identity field. On mobile, call the helper after both SDKs initialize, and 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