eCommerce GrowthMarketing OperationsAnalytics

How to Measure True Profit, Not ROAS

First published Oct 12, 2026Updated October 12, 2026
Valentin Radu
Valentin Radu
Founder & CEO, Omniconvert
Published: Oct 12, 2026Updated: Oct 12, 2026
Reviewed by Cristina Stefanova, Head of Content
An overhead flat-lay on pale ledger paper of five different printed documents, each from a different system and each rubber-stamped with one cost term, beside a brass rule and an ink pad
Quick Answer
Measuring True Profit is defined as assembling one number per order from costs that live in five different systems, then reading it across a cohort rather than a day. The formula is not the hard part and never was: revenue, minus cost of goods, minus the discount given, minus fulfilment and service, minus acquisition cost. The hard part is that each term sits somewhere else and arrives at a different speed. Cost of goods lives in a spreadsheet somebody updates quarterly. Discount is in the order record but not always separated from price. Fulfilment is on a carrier invoice that lands weeks later. Service cost is almost never allocated per order at all. Acquisition cost is in the ad platforms, attributed by rules you did not write. Build the number from proxies where you must, label every proxy, and reconcile against finance monthly.
Key Takeaways
  • The formula is easy. The assembly across five systems is the actual work.
  • An explicit, labelled proxy beats a missing term. A silent proxy is worse than both.
  • Allocate service cost per category at minimum. Zero is a decision, not a default.
  • Reconcile to the finance number monthly and keep the variance, not the argument.
  • Read it per cohort over two purchase cycles. Daily True Profit is mostly noise.

Last updated: October 2026

True Profit is the contribution a customer relationship produces after the cost of goods, the discount given, the cost of acquiring it and the cost of servicing it, read across the relationship rather than on one order. The argument for steering by it rather than by ROAS is settled, and it has been made here already in Why ROAS Is the Wrong North Star. What is not settled, in most companies, is the far duller question of how you actually produce the number. Omniconvert has measured commercial behaviour across the CROBenchmark dataset of 7,000+ websites in 15+ industries, against 248+ audit criteria, over 13 years in eCommerce, and the obstacle is consistently the same: eCommerce managers spend around three hours a day assembling data rather than deciding with it. True Profit is an assembly problem wearing the costume of a formula, and this article is about the assembly.

An assembly problem, not a formula problem

The formula is five terms and takes a minute to write. Each term lives in a different system, is maintained by a different person, and arrives at a different speed. That is the whole difficulty, and it is why teams that agree on the definition still do not have the number a year later.

Write the formula down and it looks finished. Revenue, minus cost of goods, minus discount, minus fulfilment and service, minus acquisition cost. Five terms, no arithmetic worth discussing.

Now ask where each one is. Cost of goods is in a spreadsheet, maintained by whoever does purchasing, accurate as of some point in the past. Discount is in the order record, sometimes as its own field and sometimes folded into the price. Fulfilment is on a carrier invoice that arrives three to six weeks after the order. Service cost exists in aggregate in a support tool and is allocated to orders nowhere at all. Acquisition cost is in the advertising platforms, already attributed to orders by rules somebody else designed.

Five systems, five owners, five different lags. The number is not hard to define and it is genuinely hard to produce, and conflating those two things is why this work stalls. A team that spends its first month agreeing the definition has spent a month on the easy part.

There is a second, organisational reason it stalls. Four of the five terms belong to somebody other than the person who wants the number, and none of those four people has asked for it.

Where the five terms actually live

Cost of goods in purchasing, discount in the order record, fulfilment on a lagged carrier invoice, service cost nowhere, acquisition in the ad platforms. Each has a characteristic failure: blending, folding, lag, omission and borrowed attribution. Knowing the failure is most of the fix.

Taking them in the order they cause trouble.

Cost of goods: the blending failure. The usual version is one blended cost across a product, or worse across a category. Blending hides exactly the differences that matter, because the point of this number is to tell one variant apart from another. Pin a landed unit cost per variant, and record the date it became valid, since a cost from eighteen months ago applied to today's orders is an error that compounds silently.

Discount: the folding failure. Where a promotion is applied as a lower price rather than captured as a discount field, promotional cost disappears into weak margin and becomes invisible. It then looks like a product problem rather than a pricing decision. Separating the two is usually a configuration change rather than a project, and it is the cheapest item on this list.

Fulfilment: the lag failure. The real cost is on an invoice that lands weeks later. The temptation is to use an estimate permanently, which is tolerable, and the better practice is to backfill from the invoice when it arrives so that historical months firm up over time. A number that improves in accuracy as it ages is not a flaw; it is how every financial system works.

Service: the omission failure. Nobody allocates this and everybody leaves it at zero, which is a decision disguised as a default. Zero systematically flatters the categories that generate the most support contacts and the most returns, which are frequently the categories a True Profit exercise is meant to expose.

Acquisition: the borrowed-attribution failure. Taking a per-order acquisition cost from an advertising platform means adopting that platform's attribution model inside your profit number. The figure then moves when the model changes, for reasons unconnected to your profitability. The alternative is in the next section but one.

Source: Omniconvert, the five True Profit terms with where each lives, how each fails, and the acceptable proxy
Term Where it lives Characteristic failure Acceptable labelled proxy
Cost of goods A purchasing spreadsheet Blended across variants Category average, dated
Discount The order record Folded into the price List price minus paid price
Fulfilment A carrier invoice, lagged Estimated and never backfilled Last quarter's cost per parcel
Service and returns Nowhere, per order Left at zero by default Cost per contact by category
Acquisition The advertising platforms Platform attribution borrowed Period spend over cohort size
All five Five systems, five owners Treated as a formula question Assembly, labelled and reconciled

The last row is the argument of this article in one line. Every proxy in the right-hand column is defensible. None of them is defensible unlabelled.

Proxies, and the one rule for using them

Use a proxy wherever a real cost is unavailable, and record its basis and its date beside the figure it replaces. An omitted cost becomes zero, which is the one value certain to be wrong. An unlabelled proxy is worse than either, because its discovery discredits every other term at once.

The instinct when a cost is unavailable is to wait for it, and waiting is how this work dies. The alternative is to proceed on an explicit estimate, and the discipline that makes that safe is labelling.

A labelled proxy carries three things: the value, the basis on which it was derived, and the date it was set. Fulfilment at a fixed amount per parcel, from last quarter's carrier invoices, set in July. Anybody reading the resulting number can see precisely how much of it is measured and how much is estimated, and can decide whether that is good enough for the decision in front of them.

An unlabelled proxy fails differently and much worse. Somebody eventually discovers that a term was an assumption, and the discovery does not merely discount that term. It discredits the whole figure, because a reader who finds one hidden estimate reasonably assumes there are others. This is how a True Profit programme loses an argument with finance and never gets the budget back.

One practical note on precision. A proxy accurate to within a reasonable range is almost always sufficient, because the decisions this number informs are directional: which products to promote, which cohorts to acquire more of, which category is quietly unprofitable. Precision to two decimal places on a term you estimated is false comfort and slows the work down.

Per cohort, not per order

Assign acquisition cost to the customers acquired in a period rather than to individual orders. Per-order attribution imports the advertising platform's model into your profit figure and makes it move for reasons unrelated to profitability. Cohort assignment is coarser and vastly more stable.

This is the decision that most often separates a True Profit figure that survives from one that is quietly abandoned.

Per-order acquisition cost sounds more rigorous and is less so. To assign spend to an order you must decide which touchpoint earned it, and that decision is made by an attribution model you did not build and cannot audit. When the model is updated, as it periodically is, your profit figures change retrospectively. Explaining that to a finance team once is survivable. Twice is fatal.

Cohort assignment avoids the entire question. Take total acquisition spend in a month and the customers first acquired in that month, and carry that cost against the cohort. Then read the cohort's contribution forward across the period in which a second purchase would normally occur. No attribution decision is required anywhere in that chain.

It is coarser, and the coarseness is in the right place. The questions this number should answer are whether a cohort pays back and how a channel's cohorts compare, and both are cohort-level questions. Google's own documentation on attribution models is clear that different models allocate the same conversion differently, which is precisely the instability you are declining to inherit. For the wider framing of how this fits other growth measures, see CRO, creative & AI visibility tie into one growth system.

Reconciling with finance, monthly

Compare the sum of your per-order figures with the finance contribution line every month, and record the variance rather than resolving it rhetorically. This is what converts a marketing-owned number into one that can direct a budget, and it is the step most programmes skip.

A profit number produced by a growth team has an authority problem, and reconciliation is the only cure for it.

The mechanism is simple and slightly uncomfortable. Each month, sum your per-order True Profit across all orders and set it beside the contribution line in the management accounts. The two will differ. Write down by how much and why: timing differences on fulfilment invoices, returns not yet processed, costs finance includes that you do not, proxies still in place.

Doing this yourself, before anyone asks, is the entire trick. A variance you surface and explain is a sign of rigour. The same variance discovered by a finance team in a meeting is a sign that the number cannot be trusted, and the difference between those two outcomes is who raised it.

Expect the gap to be large at first and to narrow over two or three months as the obvious discrepancies get fixed. A persistent, stable, explained variance is a perfectly good end state. What is not acceptable is a variance nobody has measured, which is the normal condition of a True Profit figure in its first year.

Bain & Company's long-standing finding with Reichheld, that a five percent improvement in retention can raise profits by twenty-five to ninety-five percent, is the reason this reconciliation is worth the trouble: a number that includes retention is the only one that can see that effect, and it will only be allowed to direct spend if finance recognises it. The broader market context is in the state of DTC growth in 2026.

What to do this month

Five actions, in order: pin cost of goods per variant with a date, separate discount from price, set labelled proxies for fulfilment and service, switch acquisition to cohort assignment, and run the first reconciliation before anybody asks for it.
  • Pin cost of goods per variant, with a date. Per variant, not per product, and dated. If only a category average is available, use it and label it as a proxy.
  • Separate discount from price. A configuration change in most order systems, and the cheapest improvement available to this number.
  • Set labelled proxies for fulfilment and service. Cost per parcel from last quarter's invoices; cost per contact allocated across six categories. Both with a basis and a date.
  • Switch acquisition to cohort assignment. Period spend over customers first acquired in that period. Stop assigning spend to individual orders.
  • Run the reconciliation and show it. Sum your orders, set the total beside the finance contribution line, write down the variance and its reasons, and take it to finance yourself.

Where these five terms sit in five systems and have to be assembled by hand every month before anybody can decide anything, that assembly is what Nexus by Omniconvert exists to remove: the AI for eCommerce growth engine unifies commerce data, prioritises experiments by True Profit, and generates campaigns and creative you approve before they go live. The measurement work above is what makes that prioritisation mean anything, which is why it comes first.

FAQ: measuring True Profit

What is the formula for True Profit?

Revenue, minus cost of goods, minus the discount given, minus fulfilment and service cost, minus acquisition cost. The formula has never been the difficulty. Each of those five terms is held in a different system, maintained by a different person, and arrives at a different speed, so the real work is assembly and reconciliation rather than arithmetic. A team that writes the formula and stops has produced a definition, not a measurement.

What should you do when a cost is missing?

Use a proxy and label it. A fulfilment cost estimated from an average, marked as an estimate with its basis and date recorded, is far better than leaving the term out, because an omitted cost silently becomes zero and zero is the one value guaranteed to be wrong. What destroys trust in the number is an unlabelled proxy: a figure someone later discovers was an assumption, which then discredits every other term alongside it.

How do you handle service and support cost?

Allocate it by category using contact volume or return rate, at minimum. Almost nobody allocates it per order and almost everybody leaves it at zero, which systematically flatters exactly the categories that generate the most support work and the most returns. A crude allocation across six categories, based on last quarter's contact counts, is enough to change a product-level decision and takes an afternoon to produce.

Should acquisition cost be assigned per order?

No, assign it per cohort. Per-order assignment requires an attribution decision for every order, which imports every weakness of your platform's attribution model directly into your profit figure and makes the result unstable for reasons that have nothing to do with profitability. Spend in a period against the customers acquired in that period is coarser, far more robust, and sufficient for the budget decisions the number exists to inform.

How often should True Profit be read?

Monthly for the business figure and per cohort over two purchase cycles for decisions about acquisition. A daily True Profit is mostly noise, because fulfilment invoices lag, returns arrive later still, and second purchases have not happened yet. Teams that build a daily version usually end up distrusting it within a quarter, and the distrust attaches to the concept rather than to the cadence.

What makes the number credible inside a company?

A monthly reconciliation against the finance contribution line, with the variance recorded rather than explained away. The figure has to survive a conversation with the people who own the statutory numbers, and the fastest way to that is to show them the gap yourself, every month, with the reasons for it. A marketing-owned profit number that has never been reconciled will lose its first argument with finance and will not direct a budget again.

The bottom line

Nobody abandons True Profit because they disagree with it. They abandon it because the number was never produced, and the number was never produced because the work is unglamorous plumbing across five systems owned by four people who did not ask for it. So treat it as plumbing. Pin a dated landed cost per variant. Separate the discount from the price. Put a labelled proxy where fulfilment and service costs should be, with a basis and a date beside each, and accept that the figure firms up as invoices arrive. Assign acquisition cost to cohorts, not orders, so your profit figure stops moving when somebody else changes an attribution model. Then reconcile to the finance contribution line monthly and carry the variance yourself, before anyone asks. Do those five things and you will have a number that is partly estimated, honestly labelled, and good enough to move a budget. Wait for the exact version and you will have a definition for another year.