Net Revenue Retention for DTC and Subscription Brands

Ildi Veliu

Written by Ildi Veliu

Net Revenue Retention for DTC and Subscription Brands

Repeat purchase rate tells you how many customers came back, not what they spent. Spend is what decides whether your media budget is buying growth or replacing what you lost, and what you sell sets the ceiling.

Here's how to calculate NRR for a DTC brand, pull it from Shopify, and judge the result against your category.

Key takeaways

  • What you sell caps the number, so judge your result against your category rather than a published benchmark.

  • A nine-point gap below 100% on $150,000 of recurring revenue costs $13,500 a month in replacement revenue before you grow at all.

  • Pause and skip can cost you five points of monthly NRR on revenue you never lost.

  • Four definitions decide the number before any arithmetic: your cohort, what counts as recurring revenue, how you treat pause and skip, and whether returns come out.

  • Shopify's cohort report defaults to counting customers. Switching the metric to net sales turns the same grid into a revenue retention report.

  • No published NRR benchmark exists for DTC, so benchmark against your own earlier cohorts.

If you are still building the program itself, start with our guide to building a subscription program on Shopify and come back when the billing data is real.

There are two ways to calculate NRR

The right one depends on how you sell, whether it’s subscription based, or based on one-of sales. The table of contents in the article will help you jump to where it most suits you.

If you sell both, follow both rows, then use the subscription filter in the Shopify report to separate the two groups.

The NRR formula

NRR takes a fixed group of customers, looks at what they paid you at the start of a period, and compares it against what the same group paid you at the end.

NRR = (starting recurring revenue + expansion + resumed - contraction - churn) ÷ starting recurring revenue

New customers acquired during the period stay out of both sides, so what you end up with is a read on the existing base with acquisition stripped out of it.

Five components feed it:

Component

What it is in a DTC store

Starting revenue

What the cohort billed in the first period

Expansion

Larger size, added SKU, higher quantity, shorter cadence, price increase

Resumed

A paused subscriber who restarted inside the measurement window

Contraction

Smaller size, removed SKU, longer cadence, discount applied

Churn

Cancellations plus payment failures that never recovered

Separate resumed revenue from winback before you start, because the two look identical in a dashboard and belong in different places.

Subscriber

Did they leave the cohort?

Where the revenue counts

Paused, then restarted

No

Resumed, inside NRR

Canceled, then came back later

Yes

Acquisition, outside NRR


A pause never leaves the cohort. A cancellation does, which is why a winback is acquisition rather than retention.

Gross revenue retention runs the same math without expansion or resumed revenue, which means it cannot exceed 100%.

GRR = (starting recurring revenue - contraction - churn) ÷ starting recurring revenue

You want both numbers in front of you, because a wide gap between them tells you expansion from a small group is covering losses across a large one, and the number will fall the month expansion stalls.

Expansion is capped by what your customer consumes

Software expands on its own as usage grows. In the Aleph and Benchmarkit data, usage-based companies post a 108% median NRR against 98% for seat-based. Physical products have a harder stop, since nobody consumes faster because you sent a campaign

Expansion needs the customer to add a different product, which depends on whether your catalog holds one that fits the routine they already have, and the amount of room above the first order varies enormously from one category to the next.

Category

Typical cadence

Where expansion comes from

Headroom

Supplements and vitamins

30 days, one bottle

Additional products in the same daily stack

High

Skincare

6 to 12 weeks per SKU

The routine grows: cleanser, then serum, then SPF

High

Meal kits and prepared food

Weekly

More servings and more meals per week

High

Household essentials

4 to 6 weeks

Adjacent SKUs and larger refill sizes

Moderate

Coffee and tea

2 to 3 weeks

Grade, single origin, equipment. Rarely volume

Low

Pet food

Set by animal weight and bag size

Treats and supplements, never the food itself

Low

Curated boxes

Monthly

Box size or tier, rarely a second SKU

Low

Expansion headroom by category. Consumption sets the limit before your program does.

Cadences for coffee, household essentials and supplements come from our client work and match the patterns in our subscription program guide. The headroom column is our read on the consumption mechanics, and not survey data.

An example from of our clients 'Valentine Coffee Co.'

Two brands both reporting 85% can be in opposite positions.
A pet food brand at 85% has close to nowhere left to go, whereas a supplement brand at the same number is leaving expansion revenue uncollected, because a customer on a daily multivitamin has room for three more products and nobody has offered them.

Run this check before you set a target:

  • Take one real subscriber.

  • Count how many of your SKUs could join their order without them changing a single habit.

  • That number is your expansion headroom. If it comes out at zero or one, stop planning upsell campaigns and put the whole effort into keeping the subscribers you already have.

Decide these things before you calculate

Two people at the same brand can calculate NRR for the same month and land ten points apart with no arithmetic error between them. The choices below cause it.

1. What the cohort is.
Either of these works, as long as you keep it.

  • Every subscriber active on the first of the month. The simplest version to build.

  • An acquisition cohort, meaning everyone who first subscribed in a given month. More useful, because you can read March's cohort against September's and see whether the program is improving.

Whichever you pick, customers stay in the denominator after they leave.

Snowflake, the data platform, counts a customer who stopped using the platform at zero instead of removing them from the base, which is what its 10-Q definition describes. We see plenty of DTC calculations drop churned customers, which inflates the result and makes the trend meaningless.

2. What counts as recurring revenue.
A store running monthly, six-week, quarterly and prepaid plans at once has no natural monthly number. There are two ways out of that, and both are fine:

  • Normalize everything to a monthly value, plan price divided by billing interval.

  • Move to an annual window, where the cadences stop mattering.

Adding up whatever happened to bill in a calendar month gives you a number that swings on the calendar instead of on customer behavior.

3. How you treat pause and skip.
This one gets its own section below, because on a subscription store it moves the number further than the other three.

4. Whether returns come out.
A refunded order is revenue you gave back, and leaving refunds in overstates every figure in the calculation, badly so in categories where returns run high. Find
what else belongs in that number, to be able work from net sales instead of gross.

Write these five down in the same document as the number, in something close to this form:

Definition

Your choice

Set on

Cohort basis

Active on the 1st, or acquisition month


Recurring revenue

Normalized monthly, or annual window


Pause and skip

Held at contract value, or counted as churn


Refunds

Net sales, or gross


Measurement window

Monthly, trailing three-month, or annual


When NRR moves eight points next quarter, the first question is whether the business changed or the definition did. Copy this table into your own doc and date each row as you settle it

A 3,000-subscriber program example

Let's take the example of a supplements brand, since that category has real expansion headroom and the math shows more. 

The store starts January with a fixed cohort of 3,060 subscribers on a 30-day cycle at a $50 average bill.Of those, 3,000 bill in January, which is the $150,000 of starting recurring revenue, and 60 are paused and bill nothing, which is where the resumed line comes from when they restart.

Component

Amount

Share of start

Starting recurring revenue

$150,000


Expansion (a second product added to the stack)

+$6,000

4.0%

Resumed (paused subscribers restarting)

+$3,000

2.0%

Contraction (dropped a SKU, moved to 60 days)

-$4,500

3.0%

Churn (cancels and failed payments)

-$18,000

12.0%

Ending revenue from the same cohort

$136,500


What these numbers tell you:

  • NRR 91%, GRR 85%. The six-point gap is expansion and resumed revenue covering 40% of the losses. If expansion shrinks toward zero, nothing cushions churn.
  • Both are monthly. Held for twelve months, 91% compounds to about 32%, so never set it beside an annual benchmark like the 102% SaaS median.

Turn the gap into a budget number

A percentage tells nobody what to do, so convert it into the monthly bill it creates. Every point below 100% is revenue you have to replace with new subscribers before you grow at all.

Same store, same $50 average bill, at a $65 acquisition cost:

NRR Revenue to replace each month New subscribers needed Annual media cost
87% $19,500 390 $304,200
91% $13,500 270 $210,600
95% $7,500 150 $117,000

What each NRR level costs in acquisition spend each year, just to stay flat.

Moving from 91% to 95% saves that store $93,600 a year in media that was buying no growth, which is the row to put in front of a founder asking for more prospecting budget.

Pause and skip can cost you five points

A paused or skipped subscriber bills nothing that month, so under strict monthly accounting they show up as lost revenue, indistinguishable from a cancellation, even though they have not gone anywhere.

Recurly's 2026 State of Subscriptions found 38% of consumers would rather pause than cancel, and at brands that offered a pause option, three in four of the subscribers who paused came back within months.

Stay with the same 3,000-subscriber cohort. Say 200 of them skipped or paused in January rather than canceling, and all of them resumed by March. The churn line of $18,000 now contains $10,000 of revenue the store never lost.

Read

Starting revenue

Ending revenue

NRR

Monthly, pause counted as lost

$150,000

$136,500

91.0%

Pause held at contract value

$153,000

$146,500

95.8%

Hold pauses at contract value and you have to do it at both ends. The 60 subscribers already paused in January join the starting figure at $50 each, which takes the denominator to $153,000. Adjust only the ending side and you will overstate the gap.

The same month read two ways. The only difference is how paused subscribers are counted.

This creates an awkward problem for anyone doing the work properly, because every flexibility improvement makes the reported number worse.

Move pause to the first screen of the portal and pause usage climbs, so monthly NRR drops while real retention improves. We have watched brands roll that work back after one bad month of reporting.

Apply both of these:

  • Measure on a trailing three-month or annual window. Pause and resume net out inside the period, so the noise disappears without you adjusting anything by hand.

  • Report a pause-adjusted figure beside the strict one. Hold paused subscribers at contract value, label the line clearly, and never present it on its own.

A skip defers one order on an active subscription and a pause holds an active subscription with no scheduled charge, so neither one is churn. If your platform files them that way, change the setting.

Calculate NRR without a subscription program

Plenty of Shopify stores have no recurring billing at all, and most published guides stop there, but the metric still works if you swap the billing cycle for an anniversary window. What you are measuring here is cohort revenue retention rather than contractual NRR, so say so when you report it.

Take every customer whose first order fell in year one and sum their net sales in that year, then sum the same people's net sales in year two. Customers who never came back stay in the denominator and contribute zero, the same way a contractual NRR calculation does.

A 2023 cohort of 5,000 customers:

Period

Net sales from the cohort

Per original cohort member

2023 (year one)

$520,000

$104

2024 (year two)

$198,000

$39.60

2025 (year three)

$173,000

$34.60


The acquisition order sits in the first bar only, which is why the first ratio reads so low.

Year one to year two gives $198,000 ÷ $520,000, or 38%.

38% looks alarming, but the method is what produces it.

Every customer in that cohort bought in year one, because buying is what put them there, and only the repeat buyers show up in year two. The acquisition order lands in the denominator and never in the numerator, which holds the ratio well below 100% however good your retention is.

Compare year two against year three instead, and the acquisition order sits outside both sides of the calculation. That gives $173,000 ÷ $198,000, or 87%.

That version moves, compares across cohorts, and can climb past 100% when a cohort's spend grows. Record the 38% as well, since it tells you how much of the first order you win back in year two, though no finance team would accept it as a retention figure.

One warning before you run it.
A discounted first order shrinks the year-one denominator, which flatters the ratio, while the customers a deep discount brings in tend to retain worse, which pushes it the other way. The two effects do not cancel cleanly, so split your cohorts by acquisition offer before you decide the product is the problem.

Build the report in Shopify

Go to Analytics > Reports, filter Category by Customers, open Customer cohort analysis.

Access to the report has changed across plans more than once, so check what your own admin shows before you build reporting on top of it. If the report is not there, export your order data and build the cohort table in a sheet.

Where the cohort report lives in the Shopify admin.


The default view counts customers, which cannot produce a revenue retention number.

Then change four things in the configuration panel:

1. Metric.
The default shows customer counts, so switch it to
net sales. The Metric menu also carries gross sales, customer retention rate, average order value and amount spent per customer. Pick net sales, because it already has refunds and discounts taken out.


One setting turns a customer-count report into a revenue retention report.

2. Intervals.
Move from monthly to quarterly for the anniversary method, since monthly is too noisy to read on a non-subscription store.

Quarterly intervals on a non-subscription store. Monthly moves too much to read.

3. Cohort definition.
Filter on first order if you want to split the analysis. The available filters are sales channel, marketing channel, marketing type, product name and
subscription, and that last one splits customers who started on a subscription from those who did not.

On a hybrid store, run it both ways and compare.

The subscription filter separates subscribers from one-time buyers in the same store.

4. Comparison.
Set it to compare between cohorts, so you read an older cohort against a newer one instead of alone.

Comparing cohorts against each other rather than reading one on its own.

Each row covers one cohort by first-order month. The grid then gives the cohort's first orders their own column, separate from period 0, which holds only the repeat orders those same customers placed in that first period.

Divide the later boxed cell by the earlier one. The first-orders column stays out of the calculation.

The reading is the same one from the section above:

  • Take the row for one cohort.

  • Leave the first-orders column out of the calculation. That is the acquisition order, and it belongs on neither side of a retention ratio.

  • Divide a later period column by an earlier one, four quarters apart. Avoid period 0 as your starting column: it only holds repeat orders from what was left of the first period, so it reads low and inflates the ratio.

Watch for two things before you trust the output.

Shopify's own documentation states that customer reports are based on the entire order history of the new customers in the report, not only the orders placed inside your selected timeframe. Cohort membership holds up fine, but be careful reading revenue figures across a narrow window.

The projections toggle only works on the amount spent per customer metric, needs 24 months of history, and is built from your store's data alone, so treat it as a trend line and not a forecast you plan against.

Pull the data from Recharge, Loop or Skio

Recharge, Loop, Skio, Stay AI and Ordergroove all report active subscriber counts, cancellations and failed payments separately, and none of them ships an NRR figure you can use without checking its definitions first.

Export monthly and confirm three things before you calculate anything:

  • When the platform marks a subscription churned. On the first failed charge, or after the retry sequence ends. That choice alone moves NRR by several points on a store with meaningful payment failure.

  • How pauses are counted. Active, churned, or a separate state.

  • Whether the revenue figures are net of refunds. Usually not.

Export your definitions along with your numbers. In the platform migrations we have run, historical subscription data does not come across, so your baseline resets the day you switch and your written method is the only part that survives.

What is a good NRR for a DTC brand?

Start with your category instead of a number off a chart. Expansion headroom sets the range you can reach, and the table earlier in this guide gets you closer than any published figure will.

No NRR benchmark built on a real DTC dataset exists. What gets published comes from software or from one firm's client experience.

Source

Population

NRR

Aleph and Benchmarkit 2026

230 companies reporting the metric, FY2025

102% median

Snowflake Q2 FY2027

One usage-based public company

126%

Eightx

One CFO firm's DTC portfolio

75% to 95% described as realistic

Read that table with three things in mind:

  • The first two rows come from a survey and an SEC filing, and both measure software.

  • The third comes from one CFO firm's experience with its own DTC clients, published without a dataset behind it. Use it as a sanity check. Do not set a target against it, and never let a person be measured on it.

  • None of the three separates a pet food brand from a skincare brand.

Benchmark against yourself instead. These four comparisons work:

  • The same cohort, quarter on quarter. Check whether the curve is flattening or still falling.

  • Newer cohorts against older ones at the same age. Compare month 12 to month 12, never month 12 to month 3.

  • Your best-selling SKU's subscribers against the rest. In a category with real headroom, the customers who started on your hero product should expand faster than everyone else, and if they do not, the cross-sell is the problem instead of the churn.

  • Subscribers against non-subscribers in the same store. Across 20,000 brands, Recharge found subscribers placed nearly 3x more orders than one-time shoppers, so measure your own gap and see whether the program covers its app fee and the work it takes to run.

How to move the number

NRR moves two ways, and different teams own each one.

Expansion, which raises the top of the calculation. Check your headroom first, because in a low-headroom category these four will move very little and the effort belongs on the other half.

  • Prepaid plans. Six months billed once is six months of revenue booked with a single point of payment failure. Prepaid raises upfront cash and complicates the billing logic, so price it deliberately.

  • A second SKU instead of a bigger box. Cross-sell inside the existing plan expands the bill without changing what the customer already decided they want.

  • Price increases on the existing base. The fastest expansion lever available, and it shows up in contraction and churn one to two billing cycles later, so measure the net across two quarters instead of the month it lands.

  • Sell cadence and quantity at signup, before anyone reaches a save offer. Archer Roose, one of our clients, lets subscribers pick 12 or 24 can cases and delivery every 1, 2 or 3 months at checkout.

Three ways NRR misleads you

  • Concentration. A handful of large subscribers expanding can hold the number above 100% while the rest of the base shrinks, so check the GRR gap.

  • Seasonality. A cohort acquired in a Q4 promotion will not behave like a March cohort, so compare like windows.

  • Small bases. Under a few hundred subscribers in a cohort, one large customer moves the number by points, which is why the cohort size belongs next to the percentage every time.

What to pull and how often

Run this on the same day each month so the trend means something.

Frequency

What to pull

Monthly

NRR and GRR for the fixed cohort, with cohort size

Monthly

The five components separately: expansion, resumed, contraction, churn, starting revenue

Monthly

Pause-adjusted NRR beside the strict figure

Quarterly

Cohort curves, newer against older at the same age

Quarterly

Subscriber against non-subscriber NRR

Annually

The anniversary calculation, year two against year three

Track the components underneath, not just the headline. A store holding 91% for six months while expansion and churn both double is in a completely different position from one where nothing moved. Our Shopify KPIs guide covers the wider metric set if you are building reporting from scratch.

Get a read on your own retention numbers

Retention numbers go wrong in the definitions long before they go wrong in the business. A cohort that drops churned customers, a monthly window that reads every pause as a loss, or a discounted first order in the base year can each move the figure by several points while the store underneath does not change at all.

If you want an outside read on what your base is doing, book a call with our marketing team.

FAQs on net revenue retention

Can I calculate NRR if I also sell on Amazon or TikTok Shop?

Not across both. Marketplace orders usually arrive without a customer identity you can match to your store records, so those customers cannot be tracked into a cohort. Calculate NRR on your own store only, and report marketplace revenue as a separate line, because blending them produces a number that moves whenever the channel mix moves.

Guest checkout splits my customers across several email addresses. Does that break the NRR calculation?

It deflates it. Shopify builds cohorts on the customer record, so the same person checking out twice under two addresses becomes two customers, and one of them looks like a one-time buyer forever. The repeat order lands in a brand new cohort instead of the original one, which does two things at once:

  • Pulls the earlier cohort's retention down
  • Inflates your new customer count

Run a duplicate check on name, address and phone before you trust any cohort figure, and push customer accounts or one-tap login if the overlap turns out to be material.

Should I report NRR to an investor if my number is below 100%?

Yes, with the method attached. An investor who works in consumer brands knows DTC does not clear 100% the way software does, and a brand that can produce a consistent cohort calculation is already ahead of the ones presenting blended retention rates.

A number that changes definition between the first meeting and diligence will damage the process. Bring GRR and the cohort curve alongside it, since investors underwrite the shape of the curve rather than the single percentage.

My category has no expansion headroom. Should I still track NRR?

Yes, and it gets easier to read. With expansion near zero, NRR and GRR converge, so one figure gives you the leak rate with nothing covering it up. Set your target from your own best quarter and not any published range, and treat any further lift as a merchandising question instead of a retention one, because it takes new SKUs and not new campaigns.

How long do I have to wait before NRR means anything?

You need one full billing cycle plus a complete dunning and retry sequence, so roughly 60 days for a monthly subscription program.

On the anniversary method for a non-subscription store, you need three full years of history before the year-two-against-year-three calculation exists at all. Start recording the inputs now even if the output is not usable yet, since you cannot backfill the history once your platform data resets.

Ildi is a Technical SEO Specialist at Shero Commerce on a mission to help websites unlock their full organic potential. With a background in Informatics-Economics, he bridges the gap between technical web development and search engine algorithms, specializing in technical audits and search performance strategy. He is always looking for new ways to outsmart the algorithms and drive high-intent organic traffic.