How to calculate LTV to CAC on Shopify, step by step
Pick a monthly cohort of first-time customers old enough for your window. Turn its net sales inside the window into gross profit per customer. Divide that month's acquisition spend by the same headcount, then divide the first number by the second.
By Joris van Huët, Founder & CEOUpdated 7 min read
Run the numbers for your store: the free LTV:CAC ratio calculator.
Usually in seven steps. Pick a cohort of first-time customers in Shopify's cohort report that is old enough for your window. Add their net sales over that window, turn them into gross profit and divide by the cohort's size. Then divide the acquisition spend from the month they arrived by the same headcount, and put one over the other.
You need Shopify admin, a cost per item on your best sellers, access to every ad account and a spreadsheet. The output is one ratio per monthly cohort, and then a short row of them to compare.
Step by step
- Pick the window and a cohort old enough for it. Decide how many months you can wait for a new customer to pay back. Then pick a monthly cohort that has lived through all of them. Shopify's cohort report puts customers in groups by the month of their first order. Path: Shopify admin > Analytics > Reports > Category filter > Customers > Customer cohort analysis > Intervals menu > Months.
- Count the cohort. Set the metric to number of customers. The first-orders column then gives the headcount, since everyone in the cohort placed a first order that month. Path: Customer cohort analysis > Metric menu > Number of customers.
- Add the cohort's net sales inside the window. Switch the metric to net sales. Add the first-orders column to the period columns up to the end of your window. Period 0 holds repeat orders placed in the same month as the first one. Path: Customer cohort analysis > Metric menu > Net sales.
- Turn the sales into LTV. Multiply the window's net sales by your gross margin, then divide by the headcount. Shopify works out gross margin as net sales minus cost, divided by net sales, and only for products with a cost recorded. Path: Shopify admin > Analytics > Reports > Category filter > Profit Margin > Gross profit by product.
- Add up the cohort month's acquisition spend. Take every ad account's spend for the same calendar month, plus any agency or creator fees for winning new customers. Google's Cost column is the total spend for all interactions, and Meta's Amount spent is the approximate total. Path: Google Ads > Campaigns > Columns icon > Modify columns > Cost; Meta Ads Manager > Columns > Customize columns > Amount spent.
- Divide spend by the headcount, then LTV by CAC. CAC is the month's acquisition spend divided by the cohort's first-time customers. Shopify's campaign report works it out the same way, campaign by campaign, for the customers it attributes. Path: Shopify admin > Growth > View channel report > channel name > campaign name.
- Repeat for nearby cohorts, then split by channel. One cohort can be a fluke, such as a sale month, so set several side by side. Then split each one by the first order's marketing channel, knowing the split is an attribution choice. Path: Customer cohort analysis > Comparison menu; Cohort definition menu > First order > Marketing channel.
A worked example
Round, invented numbers, for illustration.
| For illustration: the March cohort | Value |
|---|---|
| First-time customers in March | 250 |
| Their net sales in their first 12 months | €37,500 |
| Net sales per customer | €150 |
| Gross margin | 50% |
| LTV: gross profit per customer, 12 months | €75 |
| Acquisition spend in March | €12,500 |
| CAC (€12,500 / 250) | €50 |
| LTV to CAC (€75 / €50) | 1.5 |
For illustration, each March customer returned €75 of gross profit in a year, against €50 to win them. In the worked example, that is a ratio of 1.5: they paid back, with something left toward overheads.
For illustration, the same cohort on revenue would read 3.0, because €150 divided by €50 is 3. In the worked example, a 50% margin means revenue doubles every LTV figure, and the ratio with it.
Margin moves the answer more than anything else here. For illustration, at a 40% margin the same sales give an LTV of €60 and a ratio of 1.2. That 40% is the margin row on one store's Break-even sheet, where 1 divided by 0.40 gives a break-even ROAS of 2.5x. In the worked example, ten points of margin cost the cohort a fifth of its ratio.
Now split the cohort by the first order's marketing channel. For illustration, say 110 of the 250 customers arrived through Direct. Direct carries no ad bill, so in the worked example all €12,500 lands on the other 140 customers. For illustration, that puts paid CAC near €89. If the paid customers' LTV is also €75, their ratio is about 0.84.
The blended ratio says the paid customers pay back. The split says they don't. Neither says whether the ads caused them.
How big can a Direct row get? On one store's Channels sheet, Direct holds 57.7% of revenue under first click, the same as under last click. If your first-click split looks like that, more than half of your revenue sits with a channel that has no budget line. Test before you cut the paid channels that split makes look bad.
What to check when the numbers look wrong
- The cohort's later columns are blank. The cohort is younger than your window. Pick an older month, or shorten the window and write the new one beside the ratio.
- The first-order margin looks thin. Discounts come off net sales. In Shopify's own example, a T-shirt with a 50% margin at full price shows a 33% margin when sold at 25% off. Read margin from the profit report, not from the product page.
- Customer totals run higher than cohort sales. Shopify's customer lists show a total spent that includes taxes and shipping. Use net sales from the cohort report for LTV instead.
- Shopify's campaign CAC differs from yours. Shopify divides by first-time customers attributed to the campaign. You divide by every first-time customer that month, so yours usually comes out lower.
- One cohort looks far better than its neighbours. Check that month for a sale, a launch or a press mention before you trust it.
- Spend and new customers fall in different months. Ads bought late in a month win some customers the next. Read several cohorts together rather than judging one month's spend on one month's buyers.
What to do this week
- Run one cohort end to end. In Shopify, open Customer cohort analysis, set Intervals to months and pick a cohort that is a year old. Write down its headcount and its net sales across that first year. Pass: one LTV in gross profit, with the window written beside it. Fail: no cohort is that old yet, so use a shorter window and label the ratio with it.
- Put the month's spend in one cell. For the same month, add Google Ads' Cost, Meta's Amount spent and any other account or fee that bought new customers. Pass: one total, with each source listed. Fail: an account is missing or covers different dates, so fix that before you divide.
- Divide, then repeat for the next cohort. Work out CAC and the ratio, then do the same for the month after. Pass: both ratios sit above 1 and close together. Fail: one sits below 1, so check its margin, window and spend month before you cut anything.
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: Customers reports (Shopify Help Center); Profit reports (Shopify Help Center); Measuring marketing performance (Shopify Help Center); About columns in your statistics table (Google Ads Help); Add or remove columns in your statistics table (Google Ads Help); Customize columns in Meta Ads Manager (Meta Business Help Center); Amount spent (Meta Business Help Center)
Related answers
Frequently asked questions
Where does Shopify show customer lifetime value?
Not as one number. Customer cohort analysis shows amount spent per customer by first-order month, with projections once a cohort has 24 months of data. Customer lists show each buyer's total spent, which includes taxes and shipping, so convert to gross profit before you use it.Should CAC include agency and creator fees?
Yes, when the work exists to win new customers. Shopify's own CAC divides the total spent on advertising and sales by first-time customers. Leave out costs that serve existing customers, such as retention email, or your CAC carries costs that never won anyone.How often should I recalculate LTV to CAC?
Monthly, as each new cohort completes your window, and after any change to prices, margin or channel mix. One cohort can mislead, so read the last few side by side before you move a budget.
Go deeper: Causal attribution, explained.
Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.
Keep reading
Terms in this article
- AnalyticsAnalytics is the systematic computational analysis of data. It reveals customer behavior and measures campaign performance.
- AttributionAttribution identifies user actions that contribute to a desired outcome and assigns value to each. It reveals which marketing touchpoints drive conversions.
- CausalityCausality is the relationship where one event directly causes another, essential for identifying specific actions that drive desired outcomes in marketing.
- Google AdsGoogle Ads is an online advertising platform where advertisers bid to display ads, service offerings, and product listings.
- Product PageProduct Page is a webpage dedicated to a single product. It includes images, descriptions, pricing, and purchase options.
- Profit MarginProfit margin measures profitability, calculated as net income divided by revenue and expressed as a percentage.
- RevenueRevenue is the total income generated by the sale of goods or services related to a company's primary operations.
- ShopifyShopify is an ecommerce platform for creating online stores and selling products. Attribution modeling shows which marketing channels drive traffic and conversions within Shopify.