Metrics dictionary
Last updated: July 22, 2026
Every number SoleOS shows is computed from your connected sources by rules we can state in a sentence — so here they all are, with their limitations. Two conventions apply everywhere: days are bucketed in UTC, and amounts are reported in USD. Non-USD revenue is converted at that day’s European Central Bank reference rate (RevenueCat is normalized to USD at source; Stripe subscriptions and charges are converted at ingestion). We don’t yet apply historical per-transaction rates, so a figure can move slightly as exchange rates move — reconcile against your provider’s own currency, not to the cent.
MRR
Stripe: the sum over active subscriptions of amount × quantity, normalized to a monthly rate (yearly plans count as 1/12 per month). RevenueCat: the provider's own MRR metric.
Worth knowing: Refunds don't reduce MRR (they show in gross revenue); trialing subscriptions are excluded.
MRR Δ30d
Percentage change between the latest MRR snapshot and the one ~31 days earlier.
Worth knowing: With fewer than 31 days of history the oldest snapshot is used, so early deltas cover a shorter window.
Gross revenue
Stripe charges that succeeded, minus amounts refunded, bucketed by day.
Worth knowing: Stripe only; processing fees are not subtracted; heavy refund days can go negative — we show that rather than clamping.
Proceeds (iOS)
Units × developer proceeds from Apple's daily sales reports.
Worth knowing: Net of Apple's commission — never directly comparable to Stripe gross.
Active users (28d)
RevenueCat active users, or Firebase users whose last sign-in falls within 28 days — whichever source the project has.
Worth knowing: Definitions differ by provider; a project's number always comes from one source, never a blend.
Visitors · 30d
The sum of the last 30 daily visitor counts. PostHog (unique persons on pageviews, by host) when connected; otherwise GA4 activeUsers by date.
Worth knowing: When both are connected, PostHog wins and GA4 is skipped — one source of truth per project.
Search clicks / impressions
Google Search Console clicks and impressions by day, plus Bing Webmaster numbers tracked under separate keys and summed for display.
Worth knowing: Google publishes search data ~2 days behind; recent days settle late.
Downloads
iOS first-time downloads (updates and re-downloads excluded) plus Android daily user installs, summed over the overlapping period.
Worth knowing: The two stores define 'download' slightly differently; we keep the raw series separate underneath.
Signups
Signup events from your backend (Supabase/Firebase hooks), Firebase's created-at buckets, or RevenueCat new customers — per project, one source.
Project health
growing: best momentum above +2% · declining: below −2% · needs attention: previously active but now near zero (or marked dead/archived) · new: never active · flat: everything else. Momentum is the best of MRR Δ, signup growth, and traffic growth.
Worth knowing: Taking the best of three momentum signals is deliberately optimistic — a project is 'growing' if anything meaningful grows.
Projections
Both a linear and an exponential trend are fitted over up to 90 days of history; the better fit (by r²) wins. Below 21 days of data: no projection at all. Fits with r² under 0.6 are labelled rough (≈). Milestone ETAs beyond 18 months, or with a non-positive slope, show as 'not on trajectory'.
Worth knowing: Projections are estimates, not financial advice — and the product shows nothing rather than guessing.
Why your provider dashboard may differ
Stripe buckets by your account’s timezone, we bucket by UTC; refunds land on different days than their original charges; Apple reports proceeds, Stripe reports gross; GA4 and PostHog count people differently. When two dashboards disagree by a few percent, the cause is almost always one of those four. If yours disagrees by more, tell us — support@soleos.app.