Shopify Cohort Analysis: How to Read the Report
Read Shopify's cohort report: the cells for retention, repeat orders and spend per customer, a worked grid, and what a flat or falling curve means for CAC.
Quick answer: Shopify’s customer cohort analysis report puts customers into rows by the period of their first order and shows how each row behaves in the weeks, months or quarters afterwards. Pick the metric first (retention rate for who comes back, number of customers for repeat buyers, amount spent per customer for money), then read across a row to see one group age and down a column to compare groups at the same age. A row that settles at a steady level gives you repeat buyers to plan your cost per customer around, and a row that keeps falling means the first order has to carry most of that cost. Shopify’s help pages do not say which plans include the base report, so check your admin.
You can know your conversion rate and your revenue and still not know whether the customers you acquired in July behave like the ones you acquired in April. That decides how much you can afford to pay for a new customer, and the cohort report is built to answer it. It also looks like a spreadsheet nobody warned you about: a triangle of coloured cells, a metric menu, a toggle for a curve.
This guide reads it the way I would with a founder on a call, using an invented example grid (every number is made up for teaching, none is a benchmark). It ends with what a flattening versus a falling curve means for a customer acquisition cost (CAC) decision.
A note on scope. Prism3 does not run ads, email or SMS, so the retention actions that follow from a cohort grid (flows, offers, subscriptions) belong to whoever runs those for you. What we do is the conversion work after the click, organic and AI-search visibility, and the measurement that makes numbers like these trustworthy.
What the cohort report is, and what Shopify says about it
Shopify’s help centre describes the Customer cohort analysis report as showing data about your customer acquisition and retention, with customers grouped into cohorts by the date they placed their first order. A cohort is everyone who bought for the first time in the same period, for example every customer whose first order was in July.
What matters for reading it, from Shopify’s Customers reports documentation (checked 31 October 2026):
- Rows are cohorts. The first column is the cohort name, by month of first purchase by default. The Intervals menu lets the table run over weeks, months or quarters since the first order.
- The first columns are totals. The second column is the sum of your chosen metric for the whole cohort, and the third is that metric for the cohort’s first orders. The remaining columns run period by period after that.
- A “period 0” column exists. It captures returning orders by the cohort’s customers in the same period as their first order, so a customer who buys on the 3rd and again on the 20th of the same month shows up there.
- You choose the metric. The menu offers number of customers, customer retention rate, gross sales, net sales, average order value and amount spent per customer.
- You choose the view. The default is a heatmap (the cohort grid). You can switch to a retention curve.
- Every interval cell opens a detail panel. It covers total sales, average order value, orders per customer, amount spent per customer, new versus returning customers, top marketing and sales channels, predicted spend tier, one-time versus subscription split and top locations. Some are missing when there is no matching data.
- You can filter who is in the cohort. Cohort definition filters are sales channel, marketing channel, marketing type, product name and subscription. The Filters menu adds date range and customer country, region, city and email subscription status.
- Projections are optional and limited. You select amount spent per customer and turn projections on. Shopify says they use the previous 24 months of each cohort’s data, do not appear without 24 months, come only from your store’s data, and are not guaranteed. Shopify’s changelog of 31 January 2024 says predicted spend is “available on Advanced plans and above” (as at 31 October 2026 I have not found a newer plan statement).
Shopify links the report directly at admin.shopify.com/analytics/reports/customer_cohort_analysis. Otherwise go to Analytics, then Reports, and search for it.
Shopify’s own blog guide to cohort retention analysis (published 22 May 2026) explains why it exists. Its argument is that a single store-wide retention percentage can hide large differences between cohorts, because a blended number averages them together. Grouping by first-order period pulls them apart, and the article suggests checking, for example, whether customers acquired in a Black Friday sale are worth less than organic ones.
Check your plan
Plan availability is disputed, so I will not tell you it is on or off for your store. As at 31 October 2026, this is what I could verify. Shopify’s reports overview says the main Shopify Analytics features are available on any subscription plan, while its analytics overview says which analytics and reports you can see depends on your plan, without naming plans. The Customers reports page does not state a plan for the cohort report, and neither do the changelog posts of 6 January 2023 or 27 June 2025 (the 2025 post says the report is supported in the new analytics experience). The one plan statement I found is narrower: the 31 January 2024 changelog says predicted spend in the cohort report is available on Advanced plans and above and needs at least 24 months of sales data. That is about projections, not the whole report. Shopify’s pricing page lists “200+ real-time reports, plus custom analytics” on Basic, Grow, Advanced and Plus, with no separate cohort row. One third-party guide says the native cohort report is Plus only. That does not sit easily with Shopify’s own Advanced statement, and I could not confirm it at a Shopify source, so I have not relied on it.
The test takes two minutes. Open Analytics, then Reports, and search for “cohort”. If it opens, you have it. If not, check your plan, and remember you can build a rough version of the same table from an orders export in a spreadsheet.
The grid, with an invented example
Here is an illustrative grid for a made-up store. Each cell is the percentage of that cohort that placed an order in that month, read at the start of November. Every figure is invented to show the shape. None of it is a benchmark for your store or anyone else’s.
Cohort New cust M1 M2 M3 M4 M5 M6
Apr 400 7% 5% 4% 4% 4% 4%
May 450 7% 5% 4% 4% 4%
Jun 500 6% 5% 4% 4%
Jul 700 4% 3% 2%
Aug 650 4% 2%
Sep 600 3%
M1 is the month after the first-order month, M2 the one after that, and so on. I have left out Shopify’s totals and period 0 columns and its colours, because the numbers are what you read. Your real report will look busier.
The triangle is normal. September’s customers have had one month to buy again, so that row has one cell; April’s have had six. Nothing is wrong with the empty bottom right corner.
Read across a row: one cohort ageing
Take April: 7%, 5%, 4%, 4%, 4%, 4%. Seven in every hundred April customers ordered again in May, five in June, and then it settles at four a month. That is a flattening curve: it fell, then stopped falling. Something is holding a steady slice of these customers as repeat buyers.
Now July: 4%, 3%, 2%. Still moving down at the last cell, with no floor yet. That is a falling curve, though three cells is thin. I would call it “falling so far” and recheck at five or six.
Rows also show timing. Here the biggest repeat month is M1, so anything meant to prompt a second order (a replenishment reminder, a sample in the parcel, an email flow) has to land before that month, not after. I do not run those flows, but the grid tells whoever does when to send.
Read down a column: same age, different cohorts
Read M1 from top to bottom: 7%, 7%, 6%, 4%, 4%, 3%. All six cohorts are measured at the same age, so this is the fair comparison. April and May are alike, June is a little weaker, and from July the first-month repeat rate drops to 4%, against 7% for April and May. M2 (5, 5, 5, 3, 2) and M3 (4, 4, 4, 2) show the same break at the same row. A break that lines up across columns is less likely to be noise. It is a change in who you acquired, or in what happened to them afterwards.
Look at the size column too. July is 700 customers, up from 500 in June, so something changed in acquisition: a sale, a new campaign, a new channel. The grid cannot say which. The filters below are how you look.
Read the edge: the newest cells are incomplete
The bottom rows are young cohorts that have not had time to buy again, and a cohort that looks worse only because it is young is not worse. Never compare a new cohort’s M1 with an old cohort’s M5. The current month is also unfinished, so if you open the report mid-month, treat the last cell on each row as partial. In my example I read it at the start of November so that October is complete.
Which cell answers which question
Pick the metric before you read anything, because switching it changes what every cell means.
| Question | Metric to select | Cells to read |
|---|---|---|
| Do customers come back at all? | Customer retention rate | M1 to M3 across cohorts |
| How many repeat buyers did I get? | Number of customers | Same cells, in people |
| How many orders per customer? | Click a cell for orders per customer | The age you care about |
| What is a customer worth so far? | Amount spent per customer | Your payback window |
| Is the first order the problem? | Average order value | The first-orders column |
Two checks before you rely on any of it.
Shopify does not spell out the retention calculation on the pages I read. The Customers reports page lists customer retention rate without defining it. Shopify’s blog gives the standard cohort formula: customers active in a period divided by the original cohort size, times 100. That is probably what the grid does, but “probably” is thin for a spending decision. Take one cell from a small, old cohort, count the customers yourself from an orders export, and see if it matches.
Check whether your cells are per-period or cumulative. Shopify’s changelog of 29 November 2023 describes a toggle that shows running totals for net, gross and total sales across cohorts, so this applies to the sales metrics. If a sales number never goes down along a row, it is probably cumulative. The two tell different stories: a flat cumulative line means nobody is spending any more, which is bad flat, while a flat per-period retention rate means a steady slice keeps ordering, which is good flat.
Retention: four readings
Retention is the share of a cohort that comes back. In the order I take them:
- M1. Did they come back in the first month? It is the first signal that the first experience (product, delivery, packaging, follow-up) earned a second order.
- The floor. Does the row stop falling, and where? The level and how long it takes to get there is the most useful single number in the report. April’s floor is 4%.
- The slope. A steep fall then a floor is a normal shape. A shallow fall with no floor is a slow leak.
- The comparison. Is the newest cohort that has reached the same age at, above or below the older ones?
I have no primary-source “good” retention rate to give you. Compare your cohorts against each other and against the payback maths below.
Repeat orders: people versus orders
Retention counts customers. Repeat orders count orders, and a customer who buys four times is one customer in a retention percentage and four orders in an order count. Shopify’s documentation counts a customer as a repeat customer in each month they bought again, so one person can appear in several columns. For orders per customer, click a cell; the detail panel includes the average for that cohort.
A rough conversion: if each active customer placed one order that month, a row’s percentages add up to repeat orders per 100 customers. April by M3 is 7 + 5 + 4 = 16 per 100. July by M3 is 4 + 3 + 2 = 9. It is approximate, but good enough to compare cohorts, and it feeds the CAC example below.
Two traps. A few very frequent buyers can lift orders per customer while the share who come back barely moves, so read both. And if you sell subscriptions, renewals count as orders: filter by subscription, or the repeat picture will flatter you.
Spend per customer: the cell that connects to money
Amount spent per customer answers “what is a customer from this cohort worth so far?” Shopify’s changelog of 29 November 2023 describes it as the average amount customers have spent in their history with your store, including taxes, discounts, shipping and any refunds, without spelling out how each is treated. The wording suggests a running figure, but it does not say whether a cell shows spend to date or spend in that period, so check which one you are looking at. Reconcile one cell against a hand total before using it in a margin calculation.
Average order value (AOV) is different: spend per order, not per person. A cohort can have a higher AOV and a lower spend per customer if its customers rarely return.
Here is the invented store again, with spend per customer by month 3 worked out from the grid. I have assumed repeat orders average $74 for April, $72 for May and June, and $62 for July (all invented, Australian dollars).
| Cohort | First-order AOV | Spend per customer by month 3 |
|---|---|---|
| April | $68 | $80 |
| May | $66 | $78 |
| June | $65 | $76 |
| July | $58 | $64 |
The workings: April is $68 plus 0.16 repeat orders at $74, about $80. July is $58 plus 0.09 repeat orders at $62, about $64. July started with a lower first order and then came back less, so the effects stack: a $10 gap on the first order becomes $16 by month 3.
The long-run version of this number is customer lifetime value, covered in how to calculate customer lifetime value on Shopify. Do not stretch a three-month cell into a lifetime figure.
Acquisition cohort questions it can answer
Because cohort definitions can be filtered, one report becomes several. These are the questions I would run and the filter for each:
- Did the July sale bring worse customers? Compare that month’s cohort with the month before. Shopify’s blog guide uses the same idea, checking whether Black Friday customers are worth less than organic ones. The Black Friday checklist covers the baseline to write down before a sale.
- Which first-order channel brings customers who come back? Set the marketing channel filter and compare cohorts of the same month. Treat it as directional (see below).
- Which first product leads to repeat purchases? Set the product name filter. If customers who started with product A reorder far more than those who started with B, lead with A in ads, on your home page and in collection order.
- Are subscribers a different business? Use the subscription filter. They usually are.
- Did a change help? If you changed packaging, shipping policy or a post-purchase step in September, compare cohorts either side at the same age. Other things changed too, so this suggests, it does not prove.
- Where are my best customers? The cell detail lists top locations. For a store selling into Australia and the US, the two markets may behave differently.
Why the channel filter is only directional
The Shopify pages I read do not say how a marketing channel is assigned to a first order. The acquisition reports page defines a marketing channel as the ad product, messaging tool or site a session is credited to, says sessions are cookie-based and end after 30 minutes of inactivity, and says acquisition reports apply to the online store only. Because sessions are cookie-based, a customer who clicks on a phone and buys on a laptop may not be credited to the channel that found them, and untagged links get no channel at all. Before moving real money on a channel comparison, check it against your ad platform and a UTM-tagged view. Why attribution is broken on Shopify and what counts as CAC explain the gaps.
Flattening versus falling: what it means for CAC
This is what the report is for. Your cost to acquire a customer is only “too high” or “fine” relative to what that customer returns, and the cohort grid shows how that return arrives over time.
Use the invented store. April’s customers cost $38 each to acquire; July’s cost $34 (cheaper, thanks to a bigger promotion and a broader audience). Assume a 55% gross margin, also made up. Gross profit is what pays back acquisition; the contribution-margin version, which also takes out shipping, fees and returns, is in contribution margin per order on Shopify.
| Measure (invented) | April cohort | July cohort |
|---|---|---|
| Cost to acquire a customer | $38 | $34 |
| Gross profit on first order | $37 | $32 |
| Repeat orders per 100, by month 3 | 16 | 9 |
| Spend per customer, by month 3 | $80 | $64 |
| Gross profit per customer, by month 3 | $44 | $35 |
| Profit left after acquisition cost | +$6 | +$1 |
July was about 10% cheaper to acquire, and a CAC report alone would call that a win. But by month 3 it has returned $9 less gross profit per customer and leaves $1 after acquisition cost against April’s $6. Neither cohort recovers its cost on the first order alone ($37 against $38, and $32 against $34), so both depend on the second order. That dependence is the thing to see.
What a flattening curve lets you do
April’s row flattens at 4% a month. At these invented figures each extra month adds roughly $1.60 of gross profit per customer (0.04 orders at $74 and 55%). Small, but steady, and it gives you room:
- Judge CAC on a payback window that includes months 2 and 3, not only the first order. CAC payback period on Shopify covers how to choose the window.
- Accept an acquisition cost above first-order profit, as long as you can fund the wait. Cash is a real limit for a $150K to $1M store, so choose a window you can afford.
- Do not extrapolate from two flat months.
What a falling curve forces
July’s row is still dropping at M3. If it kept falling to 1% a month, each month would add only about $0.34 per customer. When a row keeps falling:
- The first order has to do most of the work. If first-order gross profit does not cover CAC, the cohort stays in the red until a second order arrives, and you are betting on something that is getting less likely.
- The answer is rarely “spend less”. Find what changed between the good cohorts and the bad. In the grid it is July, where volume jumped from 500 to 700 and every column broke at the same row. Run the filters above on that month.
- LTV to CAC is built from exactly these cells. Whether 3 to 1 is the right target for you is covered in LTV:CAC on Shopify: is 3 to 1 right?, and what to fix first is in high CAC, low LTV.
A decision rule you can use
- Pick a payback window you can fund (for example 3 months).
- Read amount spent per customer at that age for the last three cohorts that have reached it.
- Multiply by your gross or contribution margin.
- Compare with the CAC for the same cohorts. If they pay back in the window and the newest one is not drifting worse, the acquisition is working. If the newest is slipping, find out what changed before adding budget.
Mistakes that make the grid lie
- Trusting small cohorts. With 40 customers, one person is 2.5 percentage points. September’s 3% above is 18 people. Decide nothing on a handful.
- Reading colour instead of numbers. I have not seen Shopify document its colour scale, so read the figures in the cells.
- Mixing customers and orders, or per-period and cumulative views. State which one you are reading.
- Mixing subscribers with one-time buyers. Filter them apart.
- Treating a sale month as normal. A Black Friday or Boxing Day cohort can look different. Compare sale cohorts with sale cohorts.
- Ignoring the data underneath. If tracking or discount handling changed between months, the cohorts are not comparable.
Where the grid stops
The cohort report tells you what customers did, not why. Three limits are worth stating plainly.
It only sees customers who bought. Part of your cost per customer is how many visitors convert. At the same traffic cost, a store converting 1% of visitors pays roughly twice as much per customer as one converting 2%. That is arithmetic, not a forecast, and it is why a conversion problem shows up as a CAC problem.
It inherits the quality of the tracking. If purchases are double-counted or channel tagging is patchy, the cohorts built on them carry the same errors. That is measurement work, and it is why a tracking check comes before any optimisation in our CRO audit: it decides whether anyone’s numbers, including paid and email numbers, can be believed.
It cannot change anything. A good grid often points to an email or offer action, such as timing a second-order prompt. Those belong with whoever runs your email and ads, and the grid is the brief you give them. The part that sits with us is what happens on site after the click, and how people find you without paying for it.
Key takeaways
- The cohort report groups customers by first-order period. Choose the metric first, because it changes what every cell means.
- Read across a row to watch one cohort age, down a column to compare cohorts at the same age, and treat the newest cells and the current month as incomplete.
- A flattening row gives you room to judge CAC over a longer payback window. A falling row means the first order carries more of the cost.
- Shopify does not define the retention calculation on the pages I read, so count one cell by hand before relying on the grid.
- The channel filter is directional, and plan availability is disputed: search “cohort” in Analytics, then Reports, to find out for your store.
FAQs
What is a cohort in Shopify?
A group of customers who share something, in this report the period of their first order. Shopify groups customers by that period (month by default), then tracks what each group does in the periods after.
Where is the customer cohort analysis report in Shopify admin?
Go to Analytics, then Reports, and search for “Customer cohort analysis”, or use the direct link in Shopify’s help centre. If it does not appear, check your plan: Shopify’s help pages do not state which plans include the base report, and its changelog says only that predicted spend is available on Advanced plans and above. One third-party guide says Plus only, which I could not confirm.
What is a good retention rate in the cohort report?
I do not have a primary-source benchmark, so I will not give one. Compare your own cohorts at the same age, and compare each cohort’s spend per customer with its acquisition cost. That tells you whether your retention is good enough for your margins, which is the question that matters.
Why do my newest cohorts look worse than the old ones?
Usually because they are younger. A cohort acquired last month has had one month to reorder, while an old one has had a year. Compare columns at the same age. If a cohort is worse at the same age as its neighbours, that is a real difference worth investigating.
How many months of data do I need before acting?
Enough to cover the payback window you are judging, for every cohort in the comparison. If you judge acquisition on a 3-month payback, wait for three full months after the first-order month. Shopify’s projections need 24 months of store data, are tied to your plan (see above) and are not guaranteed, so they are no shortcut.
Does the cohort report replace calculating customer lifetime value?
No. It supplies the observed inputs: how many come back, how often and how much they spend. Lifetime value is a calculation you build from those cells with your margin and a window you choose.
Can I trust the marketing channel filter?
Treat it as directional. The pages I read do not say how a channel is assigned to a first order, and the acquisition reports they describe are session-based and cookie-based. Check it against your ad platform and UTM-tagged links before moving budget.
Keep reading
- High CAC, low LTV on Shopify: what to do first
- CAC payback period on Shopify
- How to calculate customer lifetime value on Shopify
Want a second pair of eyes on your cohort numbers?
A cohort report is only as good as the order data behind it, and every cohort starts with a first order. Book a free 30-minute diagnostic: we look at where your store loses buyers after the click, using your own numbers, and tell you what to fix first. We do not run ads or email. No pitch. No email gate. If conversion is the part you want to fix, see how our Shopify CRO service works.
Free 30-min diagnostic
Seen enough?
Book a free diagnostic.
We'll look at where your store loses buyers after the click and what to fix first. No pitch. No email gate. 30 minutes.
More from Prism3
Afterpay vs Zip vs Shop Pay Instalments: Shopify AU
Afterpay, Zip and Shop Pay Instalments compared for Australian Shopify stores: merchant fees, payouts, approval, checkout placement and a worked margin example.
AI-Referred Orders on Shopify: What Is Real and What Is Hype
What Shopify has disclosed about AI-referred orders, why the 13x headline needs context, how to find AI traffic in GA4 and Shopify, and what to do now.
AI Visibility Tools for Shopify: What They Measure and Miss
What AI visibility tools for Shopify stores really count: mentions, share of voice and citations, where the data is sampled or unstable, and how to use them.