Luseri

Luseri / Guides

Luseri: an MRR dashboard for your Shopify app

Luseri is a dashboard that rebuilds your Shopify app's monthly recurring revenue (MRR) from your Partner account, with read-only access, and shows what moved it each day: new subscribers, upgrades, downgrades, cancellations and returning subscribers. The cash Shopify actually billed for you is shown apart, in the currency of your payouts, with a page for each store and a report by email every Monday.

By , updated

See it in the demo

The Revenue screen of the dashboard, with example numbers. It opens without an account.

What the Revenue page shows

The Revenue page answers three questions: how much your app earns each month, where that revenue comes from, and what made it go up or down. The figures cover the period you pick (7 days, 30 days, 90 days, 12 months, or two dates of your own within the last year) and is compared with the period just before.

FigureWhat it is
Monthly recurring revenue (MRR)The monthly price of every paid subscription active that day. An annual plan counts as a twelfth of its price.
What moves your recurring revenueGains and losses over each part of the period: new subscribers, upgrades and returning subscribers above the line, downgrades and cancellations below it, with the net change.
Cash collectedEverything billed to your merchants over the period, subscriptions, usage charges and one-time purchases, in the currency of your payouts, split by type.
Average revenue per subscriberCash collected over the period, brought back to a month, divided by the stores paying at the end of it.
Recurring revenue lost to cancellationsThe share of the MRR you had at the start of the period that cancellations take away each month.
Breakdown by planPrice, subscribers and MRR of each plan with its change, and your annual recurring revenue (ARR) at the current pace, which is MRR × 12.
Next payout, estimatedWhat was billed over the last 15 days, minus the fees Shopify kept. The exact date and amount are in Shopify's Dev Dashboard, under Organization settings.

The Metrics page gives each of these numbers, and others such as lifetime value (LTV), trial conversion and revenue over the last 12 months, its own chart and a one-line definition.

How each MRR movement is counted

Luseri replays the events of each store in the order Shopify recorded them, and adds up what each event changes. The full method and its edge cases are in how Luseri calculates MRR and churn; the general approach, whatever tool you use, is in how to calculate MRR for a Shopify app.

MovementWhen it is countedEffect on MRR
New subscriberA store's first payment: when its paid plan is activated, or when its free trial endsPlus the plan's monthly price
Upgrade or downgradeA paying store moves to another plan. A cancellation followed within 10 minutes by the activation of another plan is read as a plan change, not a departurePlus or minus the price difference
CancellationA paying store's subscription is canceled or expires, the store uninstalls the app, or Shopify freezes the chargeMinus the plan's monthly price
Returning subscriberA store that paid before subscribes again, or a frozen charge resumesPlus the plan's monthly price

A plan whose first billing date falls more than 12 hours after its activation is treated as a free trial: it enters MRR on that date, if it is still active then. Test charges are left out. When a merchant closes or pauses their store, its subscription leaves MRR, and comes back as a returning subscriber if the store reopens.

Cash collected, kept apart from MRR

MRR is the price of the plans your merchants are on. Cash collected is what Shopify actually billed for you, read from your payouts. The two rarely match: usage charges and one-time purchases are cash but not recurring revenue, a store on a trial brings neither, and a plan can be priced in one currency while your payouts arrive in another. So the dashboard shows each figure in its own currency and never adds them together.

When your payouts can be read, the fees Shopify kept appear next to them. When they cannot, cash collected is estimated from the subscriptions, without Shopify's fees, and the dashboard says so. To see what Shopify's revenue share and processing fee take from a given revenue, use the revenue share calculator.

A page for each store

The Merchants page lists every store that installed your app, those that left included. Click one to open its page:

  • Its status: paying, on a trial, on a free plan, closed or suspended (store closed or paused, or billing suspended by Shopify), or uninstalled.
  • Its current plan and what it pays per month.
  • What it has paid in total since it installed, and how long ago its last payment was.
  • When it installed, and the last 40 events of its history: installs, trials, payments, plan changes, suspensions, credits, and the uninstall with the reason the merchant gave.

Ready-made lists sort the stores for you: active subscribers, trials in progress, converted and dropped trials, upgrades and downgrades, subscribers without a payment in 30 days, and your 15 best customers. You can build your own lists from conditions, keep them, and export any list to a CSV file for a spreadsheet.

The Monday report by email

Every Monday, each connected app gets a short report by email, in the language of your account. The numbers below are made up, to show its shape:

Line of the emailExample (made-up numbers)
Monthly recurring revenue (MRR)$4,210 (+$130 in 7 days)
Installs38, compared with 31 the week before
Uninstalls12, compared with 14 the week before
New subscribers6

A button opens the Report page of the dashboard. The report only goes to a confirmed address, and a link at the bottom of each email, or your settings, turns it off. The other email, an alert when uninstalls rise sharply, is described on the uninstall tracking page.

Where the numbers come from

Everything on these pages comes from Shopify's Partner API, the interface Shopify gives app developers to read their Partner account. Two kinds of data are read:

  • App events: installs, uninstalls, store closures and reopenings, and subscription events, each with the plan's name, amount, currency and first billing date.
  • Payouts: what was billed for each charge and the fee Shopify kept, and, with the View financials permission, whether a subscription is billed every 30 days or once a year.

The access is a Partner API client you create in Shopify's Dev Dashboard, under Organization settings, with the "Manage apps" permission, which Shopify documents as giving access to app events such as installs, uninstalls and charges. That is usually enough, because Shopify also returns payouts as historical events under this permission. Luseri's code only sends read queries to the Partner API and refuses anything else, so nothing is ever changed in your account. The token is stored encrypted and never sent back to your browser.

The numbers update by themselves once a day, and again when you open the dashboard if they are more than an hour old. The AI assistant in the dashboard answers questions about them, such as why your MRR fell last month, from the summary of figures the page sends it. It runs on Claude, a model made by Anthropic, needs no API key of your own, and takes up to 40 questions a day per account, with no limit for normal use for founding members (accounts created before paid plans).

How to connect your app

It takes about five minutes, once.

  1. Create your Luseri account with an email address and a password, then confirm the address.
  2. Open your app in your Shopify Partner Dashboard and copy the page address: Luseri reads your organization ID and your app ID from it.
  3. In the Dev Dashboard, open Organization settings, then Users, then Security, and create a Partner API client named Luseri with only "Manage apps" ticked. Shopify then shows its token, which starts with prtapi_.
  4. Paste the token. Luseri checks the three values with Shopify before it stores anything.
  5. Your history is copied from Shopify in about a minute, a little longer for an app with a long history. Your numbers then keep themselves up to date.

One account can connect up to 10 apps. Removing an app erases what was copied for it, and deleting your account erases everything at once. Your App Store listing and Google Analytics connect afterwards, in one step each.

Limits to know

  • Currencies are not converted. If your plans are priced in several currencies, or your payouts arrive in several, the amounts are added up as they are, and the dashboard warns you that the total is approximate.
  • Annual plans need "View financials". Without that permission, Shopify's payout events do not say whether a subscription is annual, so an annual plan counts in MRR as if its yearly price were billed every month. If you sell annual plans, tick "View financials" on the API client too. Shopify attaches write actions to that permission, such as cancelling a merchant's subscription; Luseri still sends nothing but reads.
  • MRR leaves out usage charges, one-time purchases, test charges and trials that have not ended. Credits you grant appear in the store's history but do not lower MRR.
  • MRR is a price, not a payout: Shopify's revenue share, its processing fee, refunds and the timing of payouts all come between the two.
  • The next payout is an estimate. The exact amount and date are in Shopify's Dev Dashboard, under Organization settings.
  • Luseri only reads: it does not bill merchants, change their plans or grant credits.

Questions

Does Shopify show my app's MRR?
No. Shopify's dashboards show revenue, earnings and payouts, not a monthly recurring revenue figure. MRR has to be rebuilt from the subscription events of the Partner API, store by store, which is what Luseri does from read-only access.
Which Partner API permission does Luseri need?
"Manage apps", which gives access to app events such as installs, uninstalls and charges. Add "View financials" only if you sell annual plans: without it, Shopify does not say whether a subscription is annual. Either way, Luseri's code sends nothing but read queries.
Can Luseri change anything in my Shopify account?
No. Its code refuses to send anything other than a read query to the Partner API, and it does not bill merchants, change plans or grant credits. To cut its access, remove the app in Luseri or delete the API client in your Partner Dashboard.
How far back does the revenue history go?
Luseri copies your app's event history from the Partner API, so MRR is rebuilt from your app's past events, not only from the day you connect. The pages show up to the last 12 months, each compared with the period before.
How much does Luseri cost?
Luseri is free for now, while it welcomes its first users. Its terms say that if it becomes paid, users are told by email at least 30 days before, and nothing is charged without their consent.

Sources