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.Metrics per source
RevenueCat adds two Superwall lacks:
revenuecat_subscriptions_extended and revenuecat_refunds_reversed.
MRR and lifetime value
We compute MRR for Stripe only, from subscription items. We serveactive_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
- 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.