Shopify cohort analysis: compare repeat purchases on equal time windows

Shopify cohort analysis: compare repeat purchases on equal time windows

Build cohorts by first-order month, then measure repeat purchases inside the same number of days or weeks for every cohort. Shopify's Customer cohort analysis groups customers by first-order date, but if you compare a 12-month-old cohort with a 3-month-old one, the older group has had more time to buy again. Equal windows remove that bias.

What does Shopify's cohort report actually group by?

Shopify's Customer cohort analysis report groups customers into cohorts based on the date they placed their first order. You can change the cohort definition and metrics in the report's configuration panel, and apply filters to narrow the group. The report is designed to show acquisition and retention patterns, so you can see which customers make repeat purchases and decide when to re-engage them. Official source

That default grouping is useful, but it does not automatically make cohorts comparable. A customer who first bought in January has had more calendar time to place a second order than someone who first bought in June. If you read the raw table without adjusting for that, you may conclude retention is falling when the newer cohort simply has not had the same chance to return.

Why equal time windows matter more than cohort size

The core problem is exposure time. Every cohort needs the same observation period after first purchase. If you measure "repeat purchases within 90 days" for every cohort, a January cohort and a June cohort are compared on the same footing. If you measure "all repeat purchases to date," the January cohort will almost always look stronger.

This is not a Shopify-specific quirk. It is how cohort tables work anywhere. The fix is to define a fixed window and apply it consistently.

A simple rule for picking the window

Choose a window that is long enough to capture a meaningful share of repeat behaviour but short enough that your newest cohort can still be measured. If your newest cohort is 60 days old, a 90-day window will leave that cohort incomplete. Either exclude it or mark it clearly as partial.

A practical starting point for many small stores is 30, 60, or 90 days. The right number depends on your product. A consumable that runs out in a month may show repeat purchases quickly. A durable good may take much longer.

How to build equal-window cohorts in Shopify

Start with the Customer cohort analysis report. Shopify groups by first-order date by default, and you can adjust the cohort definition in the configuration panel. Official source

Then decide your measurement window before you look at the numbers. Write it down: "Repeat purchase within 60 days of first order." Do not change it after seeing results, or you will unconsciously pick the window that tells the best story.

Next, check which fields you can use. Shopify's analytics fields reference includes customer metrics such as customers (cohort period totals) and dimensions such as weeks since first purchase. The weeks since first purchase field measures weeks from the customer's first order to the given order. That field is useful for timing campaigns and identifying customers overdue for a next purchase. Official source

If the default report does not give you the exact window you need, export the underlying order data and calculate the window yourself. The key is consistency, not the tool.

Step-by-step

  1. Open Analytics > Reports and filter to Customers.
  2. Open the Customer cohort analysis report.
  3. Set the cohort definition to first-order month.
  4. Choose a fixed window, for example 60 days.
  5. For each cohort, count customers who placed a second order inside that window.
  6. Divide repeat customers by total customers in the cohort.
  7. Compare cohorts only when every cohort has had at least the full window.

A worked example with fictional numbers

This example is hypothetical and uses illustrative figures only. It is not a benchmark and does not describe any real store.

Suppose you have three monthly cohorts, each with 100 first-time customers:

  • January cohort: 22 repeat purchases within 60 days.
  • February cohort: 19 repeat purchases within 60 days.
  • March cohort: 25 repeat purchases within 60 days.

Because every cohort is measured on the same 60-day window, you can compare them directly. The March cohort looks stronger than February. But before acting, check whether the cohorts differ in acquisition source, product mix, or discount use. A cohort that bought a heavily discounted entry product may behave differently from one that bought at full price.

If you had instead measured "all repeat purchases to date," the January cohort would likely show more repeats simply because it has had more time. That comparison would be misleading.

What mistakes make cohort comparisons unreliable?

Comparing unequal windows. This is the most common error. Always fix the window first.

Including incomplete cohorts. A cohort that has not existed for the full window cannot be compared fairly. Mark it as partial or exclude it.

Ignoring acquisition source. A cohort from a paid campaign may behave differently from an organic cohort. If you mix them, you may attribute a retention change to the wrong cause.

Changing the window after seeing results. Decide the window in advance and stick to it.

Treating small cohorts as precise. With 30 customers, one repeat purchase shifts the rate by more than three percentage points. Small cohorts are noisy. Look for consistent direction across several months rather than reacting to one month.

Forgetting that customer reports use full order history. Shopify notes that customer report data is based on the entire order history of the new customers in the report, not only orders placed during the selected timeframe. A November new customer still displays as a repeat customer if their second purchase happened in December. Official source This is another reason to define your own window carefully rather than relying on a default view.

How do you turn cohort results into action?

Once you have equal-window repeat rates, look for patterns rather than single data points. If three consecutive cohorts show a similar rate, that is a more reliable signal than one unusual month.

Use the weeks since first purchase field to time re-engagement. If your data shows most repeat purchases happen between weeks 4 and 8, a reminder around week 3 or 4 may be more useful than one sent immediately after purchase. Official source

Compare cohorts by acquisition channel if you can. If one channel consistently produces cohorts with higher equal-window repeat rates, that channel may deserve more attention. If another produces high first-order volume but low repeat rates, the acquisition cost may not be justified.

Keep the analysis simple. One window, one metric, consistent cohorts. You do not need a complex model to make better decisions.

Frequently asked follow-up questions

Can I use Shopify's default cohort report for this, or do I need to export data?

The default Customer cohort analysis report groups by first-order date and can be configured. For many small stores, it is enough to see the pattern. If you need a precise fixed window that the default view does not provide, export the order data and calculate repeat purchases inside your chosen window yourself. The important thing is that every cohort gets the same window.

How many customers does a cohort need before the repeat rate is meaningful?

There is no universal threshold. With small cohorts, single purchases can swing the percentage noticeably. Treat small cohorts as directional, not precise. Look for the same direction across several consecutive cohorts before changing your retention strategy. If your monthly volume is low, consider grouping two or three months into one cohort to get a more stable base.

What to do next

Pick one window, apply it to every cohort, and compare only complete cohorts. Write the window down before you look at results. If you are still deciding on your ecommerce platform, our guide to WordPress or Shopify: Compare the Full Cost covers the budget side. If you want to measure whether a retention task is actually saving time, see AI at Work: Measure Time Saved, Not the Number of Uses. And if you are weighing ongoing site costs, Website Maintenance Costs: How to Compare Offers explains how to read those proposals.

Back to blog