Skip to content
Insights

David Gonzalez-Cameron · July 16, 2026 · Patterns · 11 min read

Revenue is not a proxy for the health of your business

A record month tells you money came in. It does not tell you what the revenue cost, whether it stayed, or whether it will happen again. From the operator's seat, the two numbers that answer what revenue cannot: contribution margin and Forward CLV.

"We just had a record sales month. Everything is working."

The fastest way to change the temperature on a call with a founder is to ask one follow-up question: what did the contribution margin per order look like on those record sales? In other words, what did the revenue cost you?

Usually, silence. Sometimes a guess. Almost never a number.

That silence is the subject of this post. Revenue is not a vanity metric. It is real money moving through the business, and you cannot build anything without it. But somewhere along the way, ecommerce operators started treating top-line revenue as a proxy for health. The number in the pitch. The Slack celebration. It is the first big number on the screen when you log in to Shopify, so it is the easiest one to latch onto.

The problem is simple: revenue tells you money came in. It does not tell you what it cost to get it, whether it stayed, or whether it will happen again.

After enough years running growth and operations inside consumer brands, I look at two numbers before anything else. Contribution margin, CM2 specifically, which is what a sale actually earns after discounts, returns, cost of goods, advertising, fulfillment, and processing. And Forward CLV, which is the profit a customer is predicted to generate from this point on. One tells me what happened. One tells me what will happen. Revenue tells me neither.

Three things revenue cannot tell you

The cost of the revenue. A dollar of revenue at 70% gross margin and a dollar at 30% gross margin look identical on the top line. Add shipping, payment processing, and the ad spend that generated the order, and two identical revenue dollars can land anywhere from solidly profitable to actively destructive. Revenue has no memory of what it cost.

Returns. Revenue is booked at checkout. Returns show up weeks later, after you have paid to acquire the customer, pick, pack, ship, and process, and often after you have paid again to restock or write off the item. A brand doing $10M in gross revenue with a 25% return rate is not a $10M brand. It is a $7.5M brand that paid full logistics freight on the missing $2.5M. Returns quietly destroy customer cohorts that looked healthy at checkout. If you want to price this on your own book, the Returns Self-Audit walks through it customer by customer.

New versus returning revenue. $500K a month built on repeat purchases from existing customers is a fundamentally different business from $500K built on first orders bought with paid traffic and a welcome discount. Same top line. Completely different cost structure, durability, and future. Across the customer bases we score, a second purchase multiplies a customer's expected value five to nine times. Two revenue dollars, wildly different futures.

Where revenue turns into insight

If revenue is the headline, the story is in the line items underneath it. The descent looks like this:

Step What you subtract What it tells you
Gross revenue → Net revenue Returns, refunds, discounts The first honest number
Net revenue → Gross margin Landed cost of goods Whether the product is viable
Gross margin → CM1 Pick, pack, ship, packaging, processing Whether the order is viable
CM1 → CM2 Variable marketing and acquisition Whether acquisition is viable
CM2 → CM3 Semi-variable costs: retainers, tools, support, platform fees Operating contribution before fixed overhead
THE DESCENT · PER $100 OF GROSS REVENUE · ILLUSTRATIVE $100 $86 $52 $38 $22 $15 GROSS NET GM CM1 CM2 CM3 MOST OPERATORS CAN QUOTE THE FIRST BAR. THE BUSINESS LIVES IN THE FIFTH.
An illustrative $100 of gross revenue descending the ladder. The record month is the first bar; whether the month was any good is the cyan one.

Brands calculate these differently at the edges. Some put agency retainers in CM2, some in CM3. The labels matter less than the discipline: separate variable from fixed, and know how much profit your variable dollars are actually driving.

CM2 is the number I anchor on. It is what a sale contributed after ad spend, and it is the cleanest read on whether your unit economics work at all. Most operators can quote their revenue instantly, their gross margin roughly, and their CM2 not at all. That gap is where businesses get surprised. Volume that arrives with worse margin, heavier discounting, or more returns is not growth. It is revenue you rented.

One refinement worth the effort: run the descent separately for new and returning customers. A healthy repeat base can hide a broken acquisition engine for months.

Two customers, same revenue, wildly different value

Here is where the top-line illusion gets expensive. The numbers below are illustrative, rounded to make the mechanics visible, but the pattern appears in nearly every customer base I have analyzed.

Customer A and Customer B each spend $600 a year with your brand. On the revenue leaderboard, they are identical twins.

Customer A Customer B
Orders 3 at $200, full price 6 at $100, every one on a promo code
Products High-margin hero product Low-margin accessory line
Returns None 2 of 6 orders
Contribution per order ~$90 Low single digits
Annual contribution ~$270 ~$20, negative on a bad year
SAME SCALE, ONE AXIS · ILLUSTRATIVE GROSS REVENUE $600 $600 A B ANNUAL CONTRIBUTION $270 $20 A B IDENTICAL TWINS ON THE LEADERBOARD. 13× APART ON THE P&L.
Both customers, drawn to one scale. Revenue cannot tell them apart; contribution barely admits they are the same species.

Same $600 of gross revenue. One customer is worth roughly thirteen times the other in actual profit. And the gap widens going forward: Customer A's full-price, no-return pattern predicts durable value, while Customer B's promo dependence predicts more of the same.

Now the uncomfortable question: which one is in your VIP segment? If you segment by revenue or order count, which is what RFM buckets and most email platform tiers do, Customer B might outrank Customer A. Six orders beat three. So your best offers, your loyalty perks, and your retention budget flow to the customer who costs you money, funded by the margin of the one who does not.

Your best customer by revenue is not your best customer. Cost of goods, discounts, and returns decide who your best customer is. Revenue just decides who looks like it.

The strongest objection

"We track cohorts."

Cohorts are better than nothing and worse than you think. A cohort is an average, and averages flatten distributions. Inside any acquisition cohort, customer value is heavily skewed: a small subset of customers is worth many multiples of the rest. When you report that the March cohort has a six-month CLV of $180, you are describing a group where almost nobody is worth $180. A few customers are worth $900. Most are worth $60. The average describes a customer who does not exist.

Managing to that average costs you three ways. You misallocate by segment, underspending on customers who would respond to more investment and overspending on those who never will. You have no customer-level P&L, so a cohort view cannot tell you that a specific customer is unprofitable after returns and discounts. And you cannot answer the only question that matters: which specific customers should I keep investing in? A cohort average has no answer. A per-customer Forward CLV does.

The best operators treat the customer base as their largest asset, and each customer as a position in it. Like any portfolio manager, the job is to deploy capital toward appreciating assets and cut investment in depreciating ones. You do not need to work on Wall Street to apply the discipline.

The treadmill: buying revenue instead of building leverage

This is where the revenue obsession stops being a reporting problem and becomes a structural one.

Most brands acquire the majority of their customers on Meta, and Meta optimizes for whatever you feed it. Feed it "purchase" as the conversion event, which is the default, and the machine treats every conversion as equal. The $600 promo-dependent serial returner and the $600 full-price loyalist send the exact same signal back to the platform. So Meta does what Meta does: it finds you more of whoever converts cheapest. That is usually the discount-responsive, low-margin buyer, because they are the easiest to convert.

The result is a treadmill. You buy revenue this month to replace the revenue that did not repeat from last month. Top line grows, ad spend grows faster, contribution per new customer erodes, and none of it compounds. Then an inventory purchase, a tax bill, and a January return wave arrive in the same quarter, and the record year turns into a cash crunch. You should not have to subscribe to your own revenue and pay a platform tax to keep growing.

The way off the treadmill is to change what the machine optimizes for: pass predicted customer value back to the platform instead of raw purchases, so the algorithm hunts for buyers who look like your best customers instead of your cheapest ones. Same budget, different target, compounding instead of renting. It requires conversion volume and a way to score customers at or near purchase, which is why almost nobody does it, and it holds whether you build that feedback loop yourself or run it with a partner. The principle stands either way: tell the platform what kind of customer you want, or pay for shoppers who will never pay you back.

A big month can still be a bad month

One more illusion, this time on the time axis. Two illustrative months:

November February
Revenue $2M, best month ever $1M, dashboard looks sleepy
Pricing 30% sitewide sale Nearly all full price
Customers Discount-acquired, skewing one-and-done Mostly repeat, near-zero acquisition cost
Returns January wave still off the books Low
Contribution Roughly breakeven after returns land Healthy CM2, more actual profit than November

November also pulled December demand forward from customers who would have paid full price, and the customer base it bought was low quality. Revenue said November won. The P&L says February did, while making the future book of business better instead of worse. If your board slide, your team's targets, and your own scoreboard are keyed to the top line, you will keep engineering for November.

What to anchor on instead

None of this means ignore revenue. It is directionally useful. It just cannot stand in for questions it was never built to answer.

Two numbers, two directions in time. CM2 is the backward-looking truth: know it per order, per SKU, per channel, and per customer. If you cannot compute contribution at the customer level, every best-customer list you have is a guess. Forward CLV is the forward-looking truth: not historical spend, but predicted future profit per customer, margin-adjusted and returns-adjusted. It tells you who to invest in, who to serve cheaply, what a new customer from each channel is actually worth, and whether your acquisition math holds.

Start smaller than a model if you have to. This week, pull your top 50 customers by revenue, then re-rank them by contribution after cost of goods, discounts, and returns. Compare the two lists. The overlap will make you uncomfortable, and the exercise is harder than it sounds. Sit with why that is. Running it across every customer, with the forward half included, is exactly what the free diagnostic does.

Revenue is the score of the game. Contribution is whether you are winning. Forward CLV is whether you will keep winning. Check all three before you celebrate.

Get the next verdict when it ships.

New insights, when there’s one worth sending. Email only, unsubscribe anytime.


Growth, P&L & retention

David Gonzalez-Cameron

David has scaled consumer brands from launch past eight figures and built the growth engine behind an $8.5M Series A. At Tacet he turns what the model finds into revenue inside the tools your team already runs. Nothing here ships without a method behind it.

Run your numbers.

Six numbers you already know, on your own Shopify and Klaviyo data, no obligation. We score the forward value of every customer and walk you through where it concentrates, and where it leaks.

Read-only access · No deck required · You keep the analysis either way