Home Docs How It Works How MarginOS calculates channel LTGP:CAC

How MarginOS calculates channel LTGP:CAC

Last updated: August 5, 2026 By Aron Baczoni

Quick Reference

Inputs

A connected store with order history; recorded ad spend for the channel, since a channel with no spend has no acquisition cost; customers whose first-ever order the channel won; product cost data, because the profit side is Gross Profit (CM1) rather than revenue.

Outputs

A profit-per-acquisition-dollar multiple per acquisition channel, shown as the “90‑day profit : CAC” column in the Growth Engine, as a 90-day trailing figure independent of the date range you are viewing, and N/A where there is no cohort or no acquisition cost.

Outcomes

Rank acquisition channels by what their customers are actually worth after costs, spot channels that look affordable only because organic profit was folded in, and tell a genuinely unprofitable channel apart from one that simply has no data yet.

Channel LTGP:CAC answers one question: for every $1 you spend acquiring a customer through a channel, how many dollars of gross profit do that channel’s customers actually generate in their first 90 days? A channel at 2.4 returns $2.40 of profit per $1 of acquisition cost within 90 days. MarginOS computes it per channel from your real orders — not from an average order value multiplied by an assumed margin.

What MarginOS calls this on screen

In the Growth Engine’s channel table the column is labelled “90‑day profit : CAC”, not “LTGP:CAC”. The label is deliberately plain-language; the number behind it is the LTGP:CAC ratio. Both names refer to the same calculation on the same orders.

For what counts as a healthy ratio and how the target varies by channel and margin profile, see LTGP:CAC ratio benchmarks. This article covers how MarginOS computes the number on your own orders, and how to read it when it disagrees with your spreadsheet.

Before you start

  • Your store must be connected, so MarginOS has the orders that make up the profit side.
  • The channel needs recorded ad spend. A channel with no spend has no acquisition cost, so it has no ratio — see the organic question below.
  • The channel needs customers whose first order it won. A channel you launched last week may not have a cohort yet.
  • Costs matter here. The profit side is Gross Profit (CM1), so missing product costs will understate the ratio. Check Data Trust first if a channel looks implausible.

How to read it in MarginOS

  1. Open the Growth Engine and stay on the Money View channel table.
  2. Find the 90‑day profit : CAC column. Each row is one acquisition channel.
  3. Read it alongside the Role and Recommendation chips in the same row — those already fold this ratio together with returns and attribution confidence, so you are not weighing it alone.
  4. Compare channels against each other before comparing any of them to a target. Relative ranking is the decision you can act on today.

What goes into the ratio

Side What MarginOS uses Where it comes from
Profit (numerator) The average gross profit a channel’s customers produce in their first 90 days Your orders, priced with real per-order CM1 — product cost, fulfillment, payment fees, refunds and returns handling
Cost (denominator) The channel’s acquisition cost per new customer over the trailing 90 days Connected ad platform spend for that channel, divided by the new customers it acquired
Who counts as the channel’s customer Customers whose first-ever order was credited to that channel The same attribution rule the whole Money View table uses
Which orders count Paid, partially paid, partially refunded and refunded orders that were not cancelled and not test orders Your store’s order records

How MarginOS calculates it

The shape of the calculation is ordinary: profit per customer ÷ cost per customer. Four choices inside it are what make the MarginOS number differ from a spreadsheet, and each one exists to stop a specific way the shorthand flatters you.

A customer belongs to one channel, permanently

A customer is assigned to the channel that won their first-ever order, and they stay there. Every later order they place — including orders that arrive through email, search or direct — keeps counting toward the channel that originally acquired them. That is the point: you are measuring what an acquisition channel is worth, and its value is everything the customer goes on to buy, not just the first purchase.

It also means a customer is never counted twice. When someone touches several channels before buying, exactly one channel is credited.

“First 90 days” means each customer’s own first 90 days

The profit side is not “gross profit in the last 90 calendar days.” It is each customer’s first 90 days measured from their own first order, whenever that happened. A customer who joined in March contributes their March-to-June profit; a customer who joined last month contributes theirs.

This distinction is the single largest source of disagreement with hand-built versions of this metric. Dividing all recent gross profit by recent new customers loads profit from long-standing repeat customers onto the heads of people you just acquired, which inflates the result substantially.

The channel average is weighted by customers, not by channel

A channel’s figure is its cohort’s total first-90-day profit divided by the number of customers in that cohort. It is not an average of per-customer averages, and the all-channel figure is not an average of per-channel figures. This keeps a channel with eleven customers from carrying the same weight as one with eleven thousand.

Organic customers never subsidise paid economics

Channels with no spend are excluded from the blended paid figure on both sides — they contribute neither profit nor customers to it. An organic customer did not cost you an acquisition dollar, and folding their profit into a paid ratio makes paid acquisition look affordable when it is not. Organic channels still show their own profit; they simply do not have an acquisition cost to divide by.

When the ratio is not computable, it says so

The ratio is reported as N/A rather than as a number whenever there is no honest basis for one: no cohort of customers yet, or no acquisition cost to divide by. MarginOS does not substitute a default, and it does not report an unknown as zero — zero would read as a proven break-even and would quietly argue against testing a young channel.

The reverse also holds, and matters more than it sounds. A cohort that genuinely made nothing, or lost money, is a measured result and is shown as one. It is not softened to N/A. If a channel reports a ratio below 1, that is evidence, not missing data.

A worked example

Suppose Paid Social acquired 250 new customers over the trailing 90 days at $12,500 of spend, so its acquisition cost is $50 per customer. Across every customer that channel has ever acquired, their first-90-day gross profit totals $174,000 over 1,450 customers, giving $120 of profit per customer.

The ratio is $120 ÷ $50 = 2.4. Every acquisition dollar returns $2.40 of gross profit within 90 days.

Note what the two sides are drawn from. The cost side reflects what you are spending now; the profit side is measured across the channel’s whole customer history, so it does not swing on one slow month. That asymmetry is deliberate — it keeps the ratio from lurching every time a campaign is paused — but it is why the number moves more slowly than your ad account does.

Common questions

Why doesn’t this change when I change the date range?

It is a 90‑day trailing figure by construction, and it deliberately ignores the date selector above the table. The cohort window is part of the metric’s definition, not a view setting — a “7‑day LTGP:CAC” would be measuring first-90-day profit over customers who have not had 90 days yet. For the same reason the ratio is only shown on the 30, 60 and 90 day views.

Why is a channel I’m actively spending on showing N/A?

Almost always because that spend has not produced attributable new customers yet, so there is no cohort to measure. Spend with zero acquired customers does not produce a zero ratio; it produces no ratio, and the wasted spend shows in the channel’s cost columns instead. If you expected customers, check whether the channel’s orders are being attributed where you think — see the attribution question below.

Why do my Shopify POS, marketplace and wholesale rows have no ratio?

Those business lines are excluded from acquisition economics by default and are shown for revenue and profit context only. A marketplace or POS order is not a direct-to-consumer acquisition you paid for, and mixing them in would distort both the cost and the profit side.

A customer clicked a Google ad, then bought from an email. Which channel gets the credit?

Paid Search. When a customer touches several channels before their first order, a clear paid ad click wins the credit; if there is no paid click, the last non-direct visit before the first order does. One channel is credited, so no customer is counted twice anywhere in the table.

Is this the same as LTV:CAC?

No, and the difference is the point. LTV is usually revenue-based and open-ended. This ratio is gross-profit-based and bounded at 90 days: it counts money you actually kept after product, fulfillment, payment and return costs, over a window short enough to act on. A healthy LTV:CAC built on revenue can hide a channel that is unprofitable once costs are subtracted.

My finance spreadsheet gets a very different number. Which is wrong?

Usually neither is arithmetically wrong — they are measuring different things. The two most common gaps are the cohort rule (spreadsheets typically divide all recent profit by recent new customers, which inflates the result) and the margin basis (spreadsheets typically apply one blended margin percentage to revenue rather than pricing each order’s real costs). Reconcile the profit side first; it explains most of the distance.

Related

About the author

Aron Baczoni

Aron Baczoni is the founder of MarginOS and a former decade-long veteran of Google's Ads and Global Business Operations units. His work is focused on bridging the gap between AI's promise and its practical implementation for direct-to-consumer (DTC) brands, helping them build a sustainable competitive advantage through strategic, high-ROI AI solutions.

Read Aron's story

Get Your Profit & Inventory Command Center

See your real margins in real time, not in spreadsheets.

Get your Profit & Inventory Command Center

Or email sales@marginos.com to see your real margins on your own data.