How to measure churn for a Shopify app
Churn sounds like one number. For a Shopify app it is at least three: stores that uninstall, subscribers who cancel and keep the app, and stores whose subscription Shopify freezes. The Partner API records all three, if you know which events to read.
Updated
The events that matter
| Event | What happened |
|---|---|
RELATIONSHIP_INSTALLED, RELATIONSHIP_UNINSTALLED | The store installed or removed your app. |
RELATIONSHIP_DEACTIVATED, RELATIONSHIP_REACTIVATED | The store was deactivated (closed, for example), or reactivated. |
SUBSCRIPTION_CHARGE_ACTIVATED | A subscription started to bill. |
SUBSCRIPTION_CHARGE_CANCELED | A subscription ended. The app can still be installed. |
SUBSCRIPTION_CHARGE_FROZEN, SUBSCRIPTION_CHARGE_UNFROZEN | Billing was put on hold for non-payment, then resumed. |
SUBSCRIPTION_CHARGE_DECLINED, SUBSCRIPTION_CHARGE_EXPIRED | The merchant refused the charge, or did not approve it in time. |
Three ways of leaving
- An uninstall ends the relationship. It is the clearest kind of churn, and since April 2026 it comes with a reason (see why merchants uninstall your app).
- A cancellation ends the revenue but not always the relationship: a merchant can drop to a free plan and keep the app. Count it in revenue churn, not in store churn.
- A freeze is not a decision. Shopify puts a subscription on hold when the store does not pay, and it can come back. Count frozen stores apart, and as lost only if they stay frozen.
A trial that ends without a first payment is a missed conversion rather than churn. Keep it in its own count, or it will hide the real trend.
Two churn rates
| Rate | How to compute it | Example |
|---|---|---|
| Store churn (logo churn) | Paying stores lost during the month, divided by paying stores at the start of the month. | 6 lost out of 200: 3%. |
| Revenue churn | MRR lost to cancellations and downgrades during the month, divided by MRR at the start of the month. | 120 dollars lost out of 4,000: 3%. |
The examples are made up to show the arithmetic. The two rates often differ: losing a few large plans hurts revenue churn far more than store churn.
Read churn by cohort
A single churn rate mixes stores installed yesterday with stores that have paid for two years. Group stores by the month they installed and follow what share is still there one, two and three months later. Then look at two things apart: the drop in the first days, which is about onboarding, and the slower decline after it, which is about value.
What changed in 2026
- April 28: subscription webhooks stopped for apps on Shopify App Pricing. Subscription changes are read from the Partner API instead.
- April 29: merchants must pick a reason before they uninstall. The reasons are visible in the Partner Dashboard and in the Partner API.
- Store closures: when a merchant schedules the closure of their store, Shopify now uninstalls its apps at the end of the billing cycle, with the reason
scheduled_cancellation(a Shopify staff reply, April 2026). Do not count these as churn caused by your app. - July: a new historical events query in the Partner API adds subscription events such as
SUBSCRIPTION_CANCELLATION_SCHEDULED. It returns the last 30 days by default and 365 days at most.
Luseri replays these events from a read-only access to your Partner account: retention by install cohort, the reasons merchants give, store churn and revenue churn, and an email alert when uninstalls rise sharply.
Questions
- Should frozen stores count as churn?
- Not right away. A freeze is billing on hold for non-payment, and Shopify sends an unfreeze event when it resumes. Count frozen stores apart and treat them as lost only if they stay frozen.
- Is a merchant who cancels but keeps the app churned?
- For revenue, yes. For store counts, no: the merchant is still installed, usually on a free plan.
- Does the app/uninstalled webhook include the reason?
- No, according to Shopify staff. Read the reason from the Partner API or the Partner Dashboard.
- What is a good monthly churn rate for a Shopify app?
- Shopify does not publish one, and figures quoted online rarely say how they were measured. Compare your own cohorts month after month instead.