Revenue Hub
How to use it
Read the numbers you can trust, then act on them:
- Pick your window — 7, 30, or 90 days. (Revenue Hub → range)
- Read the reconciled total & channel split to see what actually earned. (Revenue Hub → Overview)
- Watch subscription health — MRR, churn, dunning — if you run subscriptions. (Revenue Hub → Subscriptions)
- Export at-risk revenue for finance follow-up (role-gated). (Revenue Hub → At risk → Export)
⏱ ~5 min · 💳 Pro+ · 🎯 One honest revenue number, no double-counting
The reconciled number
Most "revenue by channel" reports are wrong in the same way: they sum each engine's own counter — cart-recovery revenue + upsell revenue + subscription total + … — but those overlap. One order can be credited to several engines, so the "total" exceeds real GMV and reconciles to nothing.
The Revenue Hub reads the one reconciled number from the unified attribution ledger: order-capped (an order can never contribute more than its own value), confidence-split (credit is shared, not duplicated), and consistent with the main dashboard hero.
Channels
| Channel | What it credits |
|---|---|
| Ads & Campaigns | Paid + owned campaign-driven revenue |
| Organic SEO | Search-driven sessions that convert |
| Cart Recovery | Recovered abandoned carts |
| Post-Purchase | Post-purchase upsell acceptances |
| Referral | Referred-friend orders |
| Loyalty | Loyalty-driven repeat orders |
| AI Search / Leak Recovery | AI-surface visibility + recovered leaks |
| CRO / Cart Upsell | On-site conversion + upsell |
The window is merchant-selectable (7 / 30 / 90 days); one ledger scan covers both the current and prior window, so you get a period-over-period delta and a daily reconciled sparkline without a second query.
Contribution margin (revenue − COGS) is deliberately not shown per channel: the attribution ledger carries order credit, not cost of goods, so a "net margin" number would be fabricated. The hub only nets costs it genuinely records (loyalty and referral incentives, below). A true margin view waits until per-order COGS is wired.
Subscription economics — real MRR, churn, dunning
Where you run subscriptions, the hub computes the SaaS-style metrics that matter — from actual subscription charges, not projections:
| Metric | Meaning |
|---|---|
| MRR | Monthly recurring revenue from active subscriptions |
| Churn | Rate at which recurring revenue is lost |
| Dunning | Revenue in failed-payment recovery |
These read from recorded charges, so they reconcile to money that actually moved.
The subscription metrics depend on Shopify's Subscriptions API and the
read_own_subscription_contracts scope, which is protected. This view is
gated until that scope is approved for your app — until then, the rest of the
hub works and the subscription band is hidden.
The cost & liability layer
Retention revenue isn't free. The hub shows the costs it can measure honestly:
- Loyalty points liability — the monetary value of outstanding points (points ÷ redeem rate), the same figure the loyalty programme discloses. A real obligation on your books.
- Referral net economics — referral revenue net of its real incentive: the referrer reward is loyalty points issued × their redemption value, so net = attributed revenue − incentive cost.
- Loyalty tier distribution — members and points by tier, ordered high→low value, so you can see where your loyalty liability concentrates.
At-risk revenue & goals
- Revenue at risk — customers or recurring revenue trending toward loss, surfaced so you can act. The CSV export is RBAC-gated (only roles with the right permission can export the underlying customer list).
- Revenue goals with alerts — set a target and get alerted on pace, ahead, or behind.
- Revenue report API — the reconciled figures are also available at
/api/revenue-reportfor your own BI (see the developer docs).
Real merchant scenarios
Scenario A — "Which channel actually earned this month?"
A store's old dashboard claimed cart-recovery + upsell + loyalty together drove more than the store's entire revenue. The Revenue Hub's reconciled view shows the honest split — cart recovery 12%, loyalty 9%, referral 4% — capped to real GMV, so the merchant can finally trust the numbers enough to budget against them.
Scenario B — Subscription health
A subscription brand watches MRR and churn move weekly instead of guessing from Shopify order exports. When dunning revenue spikes, they catch a failing-card wave early and recover it.
Best practices
✅ Anchor budgeting to the reconciled total, not engine counters. The engine counters over-count by design (each claims what it touched); the reconciled number is what actually happened.
✅ Watch the loyalty liability trend, not just the balance. A liability growing faster than redemptions means points are accumulating unspent.
✅ Gate the at-risk export by role. The underlying customer list is sensitive; keep CSV export to finance/leadership roles.