You walk into the monthly call with a channel deck, some creative test results and a revenue summary. The client nods along. Then someone asks how many of last quarter's new customers actually came back, and the room goes quiet, because the honest answer is buried in a blended dashboard number nobody trusts. A retention report fixes that. Five numbers, defined the same way every month, each tied to one piece of work.
Key takeaways
-
One page, five numbers, sent before anything else in the deck.
-
The five: cohort repeat rate at 90 days, median days to second order, product-level repeat rate for the top openers, customers late for reorder by product, and repeat revenue share.
-
Benchmark a client only against their own earlier cohorts and their own product mix.
-
Show "versus last month" only between fully matured cohorts. Label the rest as in progress.
How do I report retention to e-commerce clients monthly?
Send a one-page document with five numbers on a fixed date each month, ahead of channel and creative results.
Each number is defined identically every month, or the meeting becomes an argument about formulas. Each number is tied to one flow, campaign, merchandising move or timing decision. A number that does not connect to something you can change does not belong on the page.
Which five numbers belong in the report?
-
Cohort repeat rate at 90 days. Of customers acquired in a month, the share who placed a second order within 90 days. Ties to the post-purchase flow, second-order offers and early win-back.
-
Median days to second order. The middle value of the gap between first and second order for that cohort. Ties to when the reminder, the replenishment nudge and the win-back fire.
-
Product-level repeat rate for the top openers. For each high-volume first product, the share of its first-time buyers who reordered within 90 days. Ties to acquisition spend, landing pages and bundles.
-
Customers late for reorder, by product. Customers whose last purchase of a replenishable item is older than that item's usual reorder window. Ties to the replenishment and win-back audiences you build this month.
-
Repeat revenue share. The share of the month's revenue from customers on their second order or later. Ties to the overall balance between acquisition and retention spend.
How do I benchmark a client's repeat purchase rate without misleading them?
Against their own earlier cohorts, and against their own product families, never against a blended industry figure that mixes categories, windows and seasons.
Compare January's 90-day cohort rate with October, November and December, and with January a year earlier if you have it. Compare opener products with each other. Say it in the client's numbers: "January customers are repeating five points above October's, which is the new post-purchase flow working." The benchmark article covers why external averages do not compare.
Which tools generate a monthly retention report for Shopify clients, and what can a spreadsheet do?
A spreadsheet computes all five from an order export: order id, customer id, order date, SKU, quantity, revenue, refund flag. Mark each customer's first order, group by acquisition month, count repeats within 90 days, take the median gap, compute the opener table, flag the late customers per product, and split the month's revenue by first versus repeat orders. The customer retention analysis article has the full method.
It stops being fun at the fifth client. Tools that read the order history keep the definitions constant across stores, refresh the numbers monthly, and hand back the late-for-reorder audience as a list rather than a count. Affinsy does this from each store's export, with product roles and RFM segments alongside.
How do I show "versus last month" honestly when cohorts are still maturing?
Only compare fully matured cohorts with earlier fully matured cohorts, and label younger cohorts as in progress with the date they close.
A March cohort has not finished its 90-day window by the April report. Show it as "repeat rate so far, through day 30" with the end date. Put the latest matured cohort on one line and the maturing one on another. Comparing a partial cohort with a complete one understates performance and triggers changes nobody needed.

The one-page layout
Five tiles, top-left to bottom-right in the order above. Each tile carries the headline number, one comparison arrow versus the last matured period, and one plain sentence answering "so what" in the client's language. No dense charts. An account manager should be able to assemble it in any document tool without a designer.
Worked example month
Round numbers, as an illustration, for a coffee store's April report.
-
Cohort repeat rate at 90 days: 40% for customers acquired in January. "Up from 35% for the now-matured December cohort. The revised welcome flow is converting more first-time buyers into repeat buyers."
-
Median days to second order: 28. "Down from 31 in the previous cohort. The day-21 replenishment reminder is pulling reorders forward."
-
Opener repeat rate: 55% for the house blend, 30% for the seasonal sampler. "We recommend shifting acquisition spend toward the blend."
-
Late for reorder: 700 customers past the 30-day median on the blend. "Built as a win-back audience for this week's email."
-
Repeat revenue share: 48% of April revenue from returning customers, up from 44% in March. "Growth is coming from the existing base, not only from acquisition."
The February cohort is 60 days into its window at 26% and is labelled in progress, not compared.

Traps
-
The blended returning customer rate. It mixes every acquisition month and falls during any acquisition push even when retention improves. The returning customer rate article explains why. Report cohorts.
-
Immature cohorts. A low 90-day rate reported on day 40 is not a finding.
-
Claiming organic reorders. If customers were already reordering on a cadence, the campaign did not cause it. Compare with a hold-out or with the prior period's baseline.
-
Changing definitions. The moment a formula moves, the trend is gone.
Next steps
Build the page for one client from their last twelve months of orders before rolling it out. Write down each definition so every account manager computes the same thing. Give the report its own slot at the top of the monthly call, separate from ads and creative.
If you want the five numbers, the opener table and the late-for-reorder lists produced for a client store in 48 hours, the 48-hour analysis does exactly that.
FAQ
How often should I send it?
Monthly, on a fixed date, with the same window boundaries every time. Update internally as often as you like, but lock the client view once a month.
What if the client is small?
Use quarterly cohorts so each has enough customers, lean on median days to second order and the late-for-reorder counts, and say plainly that small numbers move.
Where do NPS and survey data fit?
As context next to the five numbers, not instead of them. If satisfaction drops in the same month the cohort rate softens, say so.
Can I include channel data?
In an appendix. The front page is customer behaviour from order history. Channels are how you moved it.
How does Affinsy fit an existing stack?
It reads the same order export by CSV, webhook or API, computes the cohort tables, product roles, reorder cadence and RFM segments, and exports the audiences. The report itself stays in whatever tool you present from.