Skip to content

How do I calculate LTV to CAC?

LTV to CAC is the gross profit a new customer brings in a set window, divided by the cost of winning one. Use profit, not revenue, count only first-time customers in the cost, and read anything under 1 as a loss inside that window.

By , Founder & CEOUpdated 7 min read

Run the numbers for your store: the free LTV:CAC ratio calculator.

Take the gross profit an average new customer brings in a set window, such as their first year. Divide it by what you spent to win each new customer. Count profit, not revenue, and only new customers in the cost. If the result is under 1, each new customer costs more than they return in that window.

Written as sums, with every input taken over the same window:

  • LTV: a cohort's net sales inside the window, divided by its first-time customers, times your gross margin.
  • CAC: the acquisition spend for the month they arrived, divided by the same first-time customers.
  • LTV to CAC: LTV divided by CAC.

Shopify uses the same shape for cost. Its campaign report defines CAC as the total amount spent on advertising and sales divided by first-time customers attributed to the campaign. Its profit reports set gross margin as net sales minus cost, divided by net sales.

The division takes a minute. The arguments are about the inputs, starting with which channel won each customer.

What one store's data shows

One store's anonymised GA4 export, 1 January 2024 to 21 August 2026. It holds shares of revenue only: no ad spend, no order counts.

What the export showsShare of revenueSource cell
Direct, in last click, first click and touched views57.7%Channels sheet, Direct row
Paid Social, in all three views0.0%Channels sheet, Paid Social row
All channels in the touched view, added up110.4%Channels sheet, Touched column total

Split LTV to CAC by channel and you first need a rule for who won each customer. That rule is an attribution choice, and this export shows how much rides on it.

First click is the natural rule for "who won the customer". GA4's own acquisition reports work that way, with dimensions that describe how you initially acquired the user. On that store's Channels sheet, Direct holds 57.7% of revenue under first click, as it does under last click and touched.

Direct has no media bill. Give a row most of the revenue and none of the spend, and its ratio stops meaning anything. The paid channels then carry all the cost on less of the revenue, so each paid ratio looks worse than it may be.

Paid Social sits at 0.0% in all three views on the same Channels sheet. The export holds no spend, so it can't say whether paid social ran. If it did, an LTV built on GA4 credit gives it nothing, and its ratio is zero whatever it brought in.

The touched view on that store's Channels sheet adds up to 110.4%, because a journey that met two channels counts in both. Channel LTVs built that way add up to more revenue than the store took, so their ratios can't be averaged back into one.

What the export cannot show: spend, customers, repeat orders or margin. So it gives no LTV, no CAC and no ratio for that store. It does show that a per-channel ratio inherits its attribution view. In one store, more than half the revenue sits in a row with no budget.

Why does the usual LTV to CAC answer mislead?

The usual answer multiplies average order value by purchase frequency and a customer lifespan, then divides by spend per new customer. Four fixes make it usable.

Profit, not revenue. LTV on revenue counts money that goes straight back out for the goods. The overstatement is one divided by your margin. One store's Break-even sheet does that sum for a 40% margin: 1 divided by 0.40 is 2.5. For illustration, at that margin a revenue-based ratio reads 2.5 times the profit-based one.

A window you have seen, not a lifetime you guess. A young store has months of data, not lifetimes. Shopify's Customer cohort analysis shows what each group of first-time buyers spent in the months after their first order. Its projections switch on only with 24 months of a cohort's data behind them, and Shopify warns they aren't a guarantee of future sales.

New customers only in the cost. Divide all spend by all buyers and every reorder makes acquisition look cheaper. Shopify counts a first-time customer as one who placed their first order with your store. Use that count, not the ad platforms' conversions.

No borrowed target. A target ratio from another business ignores your overheads and your cash. Above 1 means a customer repaid their cost inside the window. How far above you need depends on what gross profit must still pay for.

Should you work out LTV to CAC per channel?

Yes, if you treat the split as a view rather than a fact. Shopify can define cohorts by the marketing channel of the first order. Its channel performance report shows new customers by channel, based on last click, first click, or last non-direct click.

GA4's User lifetime exploration shows lifetime value by the medium that was responsible for their first visit. It counts revenue, not profit, and it counts every user. Google notes that most users are non-purchasers, so filter to purchasers before you read an average.

Each of these is still credit, not cause. Shopify even resets a visitor's first interaction after 30 days without a purchase, so a slow buyer's real first channel can vanish.

To learn whether a channel's customers needed the ads at all, you need a control group. That is the difference between lift and attribution.

What to do this week

  1. Check what your LTV number is made of. Find where your LTV figure comes from and note two things: revenue or gross profit, and over how many months. Pass: gross profit over a stated window. Fail: revenue or "lifetime", so take your margin from the Profit Margin category under Analytics, then Reports, in Shopify, and redo it.
  2. Recount CAC on first-time customers. In Shopify, open Analytics, then Reports, filter the Category to Customers and open New vs returning customers. Group by month and divide last month's acquisition spend by the first-time row only. Pass: the result is close to the CAC you use. Fail: it is much higher, so returning buyers were padding your denominator.
  3. Compare two channels' cohorts and name the rule. In Customer cohort analysis, use the Cohort definition menu's first order filter to pick one marketing channel, then another. Compare amount spent per customer after the same number of months. Pass: you can name the attribution rule behind each cohort. Fail: most customers sit in Direct or an unattributed row, so the split can't carry a budget call yet.

Check the homework. Your GA4 Attribution paths export already holds the evidence. Causality Engine reads that one file and shows what each channel caused next to what last-click gave it, in 1 to 2 minutes, for €99 once (excluding VAT), refundable within 30 days. Check the homework

Sources, 1 October 2026: Measuring marketing performance (Shopify Help Center); Profit reports (Shopify Help Center); Customers reports (Shopify Help Center); Marketing reports (Shopify Help Center); User acquisition report (Analytics Help); User lifetime exploration (Analytics Help)

Frequently asked questions

  • What is a good LTV to CAC ratio?
    One above 1 on gross profit, inside a window your cash can carry. How far above depends on the overheads gross profit must still cover and how sure you are of repeat orders. Treat a fixed target from another business as a guess, not a rule.
  • Should I use gross margin or contribution margin for LTV?
    Use the most complete margin you can measure per order, and use it every time. Gross margin takes off product cost. Contribution margin usually also takes off shipping, payment fees and returns, which makes the ratio stricter. Switching between them from one month to the next breaks the trend.
  • Does a healthy LTV to CAC mean my ads work?
    No. The ratio compares what new customers returned with what you spent, but some of them would have come anyway. It can look healthy while the ads add little. A holdout or lift test shows how many of those customers the spend actually added.

Go deeper: Causal attribution, explained.

Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.

Keep reading

Terms in this article

Browse the full glossary

Your platforms guess.
We run the math.

Upload a GA4 export and see what each channel caused, next to last-click, in 1–2 minutes. The read is yours to keep.

Free, in your browser: your file is not uploaded. The full read is €99, refundable within 30 days. Prices exclude VAT.
Or book a 30-min call.