Rheo
Funnel from install to paid subscription with acquisition channel labels
Product

Product analytics with revenue attribution for subscription apps

Subscription apps need analytics that tie installs and campaigns to trials, paid conversion, and renewals: not vanity install charts.

Product analytics for consumer apps often stops at engagement: sessions, screens, feature adoption. Subscription businesses live and die on revenue per cohort. If your analytics cannot answer which acquisition channel produced paying subscribers: not just which channel produced cheap installs: you are optimizing the wrong funnel.

This post defines what revenue attribution means in a mobile subscription context, why install volume misleads growth teams, how RevenueCat, Superwall, and Stripe fit without being replaced, a worked example with channel-level readouts, and how segments turn insight into action with Rheo Analytics.

Install ≠ revenue

The failure mode is familiar:

  1. Marketing celebrates a CPI win on a new creative.
  2. Product analytics shows healthy onboarding completion.
  3. Finance reports trial-to-paid below plan and CAC payback stretching.

Each dashboard told a true story about a different slice of the user. None connected campaign → journey → payment on one timeline.

MetricWhat it optimizesBlind spot
InstallsUA efficiencyQuality of user intent
Onboarding completionUX frictionWhether completers pay
Trial startsMonetization top of funnelChannel mix and LTV
MRR / revenueBusiness healthWhich acquisition sources fund it

Revenue attribution closes the loop: attribute subscription outcomes (trial start, first paid period, renewal, refund) to the first-touch or agreed acquisition dimensions captured when the user entered the product.

That is not the same as forwarding purchase events to an MMP alone. MMPs excel at media buying; they are weaker at step-level funnel context and product-led segments. Product analytics tools excel at events; they are weaker at billing truth unless you maintain flawless identity glue.

First-touch fields that actually matter

You do not need fifty UTM parameters. You need a stable, documented set stored on the user profile at first open (or first identified session):

FieldExampleUsed for
media_sourcefacebook, organic, apple_search_adsChannel rollups
campaignUS_iOS_prospecting_q4Budget allocation
ad_set / adgroupfitness_25_34Creative and audience tests
creativevideo_hook_aCreative iteration
keyword (ASA)workout plannerSearch intent
install_timeISO timestampCohort windows

Hygiene beats granularity. Renaming campaigns weekly without a mapping table breaks historical segments. Document conventions in a shared runbook marketing and engineering both reference.

Rheo normalizes MMP and deep-link payloads into profile attributes so Analytics funnels and retention charts can break down by campaign without re-querying the attribution SDK on every report.

Billing tools stay in their lane

Revenue attribution does not mean moving subscriptions into your analytics vendor.

SystemRole in attribution
RevenueCatSource of truth for trials, conversions, renewals, refunds, product ids
SuperwallPaywall presentation and paywall experiments; purchase outcomes still land in RC or StoreKit
StripeWeb checkout, customer portal, B2B hybrid; revenue events attach to the same Rheo profile when connected
MMPInstall and re-engagement labels; optional S2S revenue postbacks for UA dashboards

Rheo Analytics ingests purchase and subscription lifecycle signals (via SDK and integrations) and joins them to acquisition fields and in-app behavior. It does not process payments or issue entitlements.

For paywall steps inside Rheo flows, see How to use Rheo with RevenueCat. RevenueCat remains authoritative for MRR charts; Rheo is authoritative for which path and channel produced that MRR.

Example: channel table you can act on

Imagine a weekly growth review. You want one table: not three exports.

CampaignInstallsPaywall reach %Trial start %Paid (30d) %Est. revenue / install
ASA_brand4,20062%18%9%$2.40
Meta_broad28,00041%8%2%$0.55
Influencer_may1,10071%22%14%$4.10
Organic9,80058%15%11%:

Reading the table:

  • Meta_broad drives volume but underperforms on paywall reach: onboarding or targeting may be wrong, not the paywall price.
  • ASA_brand converts trials efficiently; paid % suggests trial experience or pricing follow-through needs work.
  • Influencer_may is small but high intent; worth scaling if creative fatigue is controlled.

Without revenue per install (or per trial), teams overfund CPI winners and underfund high-LTV niches.

In Rheo Analytics, build this view by:

  1. Defining funnel steps: first open → key onboarding steps → paywall presented → trial or purchase.
  2. Breaking down by campaign (or media_source) on the same profile that recorded billing events.
  3. Saving the breakdown as a segment for Convert experiments or Engage campaigns.

Segments: from chart to motion

Attribution tables are useless if they only live in a slide deck. Segments connect analytics to action:

SegmentDefinitionAction
High-intent drop-offCampaign in top quartile for paywall reach, bottom quartile for trialTest shorter path in Convert
Trial, no day-2trial_started and no session day 2Day-2 Engage nudge with value reminder
Paid, low D7First paid period and retention below baselineOnboarding variant for that campaign only
Refund riskTrial cancel in first 48hSurvey flow + offer branch

Segments should use the same identity as funnel analytics. Re-exporting user ids from Mixpanel into a messaging tool every week reintroduces the glue problem the growth platform model avoids.

Instrumentation checklist

Before trusting revenue attribution:

CheckPass criteria
IdentityAnonymous pre-signup merges to identified user; Rheo userId stable across sessions
Purchase dedupingOne trial_started per user per product; server and client do not double-fire
Campaign persistenceFirst-touch fields immutable unless you explicitly model re-attribution
Flow version on eventsflow_variant present during experiments
CurrencyRevenue events include currency for multi-region apps

Validate with a test device: install from a tagged link, complete onboarding, start trial, confirm campaign appears on the profile and in Analytics revenue breakdown.

Rheo Analytics in the stack

Rheo Analytics is built for subscription funnels:

  • Step-level completion and conversion on Convert flows
  • Retention and activation tied to acquisition dimensions
  • Revenue milestones joined to the profile that walked the journey

Teams already on Mixpanel or PostHog may keep those tools for general product analytics. Many use Rheo as the subscription growth layer: funnels that end in trial and paid, segments that feed Engage, and experiments that ship OTA.

Related reading:

Product analytics without revenue attribution trains teams to celebrate installs. Subscription apps need the opposite: fewer vanity metrics, clearer line from campaign → payment.

Start for free