Skip to main content

Revenue Hub

How to use it

Read the numbers you can trust, then act on them:

  1. Pick your window — 7, 30, or 90 days. (Revenue Hub → range)
  2. Read the reconciled total & channel split to see what actually earned. (Revenue Hub → Overview)
  3. Watch subscription health — MRR, churn, dunning — if you run subscriptions. (Revenue Hub → Subscriptions)
  4. 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

ChannelWhat it credits
Ads & CampaignsPaid + owned campaign-driven revenue
Organic SEOSearch-driven sessions that convert
Cart RecoveryRecovered abandoned carts
Post-PurchasePost-purchase upsell acceptances
ReferralReferred-friend orders
LoyaltyLoyalty-driven repeat orders
AI Search / Leak RecoveryAI-surface visibility + recovered leaks
CRO / Cart UpsellOn-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.

Why there's no "net margin" toggle

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:

MetricMeaning
MRRMonthly recurring revenue from active subscriptions
ChurnRate at which recurring revenue is lost
DunningRevenue in failed-payment recovery

These read from recorded charges, so they reconcile to money that actually moved.

Subscriptions API approval

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-report for 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.