How to read a cohort without a data team
“Are these customers worth anything after the first order?”

A campaign that returns 2.8 on first orders and never sees those customers again is usually worse than one returning 1.9 whose customers come back twice. Platform reporting cannot tell them apart, because it stops watching the moment the pixel fires. Cohort analysis is how you tell them apart, and it does not require a warehouse.
What a cohort actually is
A cohort is a group of customers defined by when they first bought, followed forward in time. The point is not the total revenue — it is the shape of the curve. Two channels can deliver identical first-month revenue and diverge completely by month four.
Building one in a spreadsheet
- 1Export every order for the last 12 months: order id, customer id or email, order date, order value.
- 2For each customer, find their first order date. That month is their cohort.
- 3For each order, compute months-since-first = (order month) − (cohort month).
- 4Pivot: cohort month down the rows, months-since-first across the columns, sum of order value in the cells.
- 5Divide each row by the number of customers in that cohort. You now have revenue per customer per month.
- 6Make the columns cumulative. That is your LTV curve.
Gross profit per customer, by month since first order. Cumulative after six months: 127. A big first month and nothing after it — this channel must clear break-even on day one, because there is no day two.
Reading the curve
| What you see | What it means | What to do |
|---|---|---|
| Steep first month, flat after | One-time buyers. The first order is the whole relationship. | Judge that channel on first-order profit alone. It must clear break-even on day one. |
| Modest first month, steady climb | A repeat business. Acquisition can run thinner than it looks. | Raise the acceptable acquisition cost to the payback horizon you can finance. |
| Curve flattens then lifts at month 6–12 | Seasonal or replenishment cycle. | Do not judge before a full cycle has run. Six-month windows will mislead you. |
| Recent cohorts below older ones at the same age | Acquisition quality is falling as you scale. | The channel is saturating. This shows up in cohorts months before it shows up in ROAS. |
Attaching cohorts to channels
The useful version splits each cohort by where the customer came from. That requires knowing the acquisition source of the first order — which is where most spreadsheets stop, because the platform's own reporting does not survive the export.
If you have UTM parameters stored on the order, use them, with one caveat: UTMs record the last click before purchase, not the ad that created the customer. For a first order those are often the same thing. For anything else they are not.
cumulative gross profit per customer at month N ÷ acquisition cost per customer
DKK 940 cumulative gross profit by month 6 against DKK 610 to acquire = 1.54. Whether that is good depends on whether you can fund six months of it.
Where the spreadsheet runs out
You can get a long way with the above. What it cannot do is tell you which specific ad created a customer who touched three channels before buying, keep working when a customer orders under a different email, or update without you rebuilding it every month. Those are the reasons attribution systems exist — but do the spreadsheet version first. It will tell you whether the answer would even change your decisions.
In short
- ✓A cohort is customers grouped by first purchase, followed forward.
- ✓Use gross profit in the cells, not revenue.
- ✓The shape matters more than the total — flat after month one means judge on day one.
- ✓Falling recent cohorts is the earliest reliable signal of saturation.
- ✓Payback horizon is limited by what you can finance, not by what is profitable.
Where this method runs out
Everything above works in a spreadsheet. Keeping it current, and matching every order back to the ad that actually caused it, is the part that does not. That is what Kepra does — and the demo runs on sample data with no signup, so you can judge it before believing any of this.
Open the demo →Read next
Break-even ROAS: the only number that says an ad is working
Most advertisers judge ads against a ROAS target someone guessed. Here is how to derive yours from gross margin in one line, and why a 3.0 target can be either reckless or timid depending on what you sell.
Why Meta and Google both claim the same sale
Add up the conversions your platforms report and you will find more sales than you made. Here is exactly where the double-counting comes from, and what to do about it without buying anything.