Skip to content

How to calculate customer acquisition cost, step by step

Usually in eight steps. Pull a calendar month of spend from each ad account and add the costs none of them shows. Count that month's first-time customers in Shopify and divide for a paid and a fully loaded CAC. Then split both halves by country.

By , Founder & CEOUpdated 8 min read

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

Usually in eight steps. Pull one calendar month of spend from each ad account, add the costs no ad account shows and count that month's first-time customers in Shopify. Divide for a paid and a fully loaded CAC. Then split spend and new customers by country, and check how many first orders used a welcome code.

You need Shopify admin, your ad accounts and a spreadsheet. Before you start, write the recipe at the top of the sheet. It names one calendar month, the costs that count and Shopify's first-time customer as the definition of new. The steps below keep both halves of the sum to that recipe.

Step by step

  1. Pull the month's Google Ads spend. Set the date range to last calendar month before you read anything. The default Campaigns view shows the last 30 days, which rarely matches a calendar month. Read the total at the bottom of the table. Path: Google Ads > Campaigns icon > Campaigns drop-down > Campaigns > date range.
  2. Pull the month's Meta spend once it settles. Ads Manager's spend figure is an estimate while results are processed. Wait a couple of days after month end, then check it against the charges in Billing. Path: Meta Ads Manager > Account Overview, then Ads Manager > Billing.
  3. Add the costs no ad account shows. Agency retainers, creative production and creator fees count when they exist to win new customers. Keep them for a second, fully loaded figure, so the paid CAC stays comparable month to month. Path: your bookkeeping export for the same calendar month.
  4. Count the month's first-time customers. Shopify counts a first-time customer as one who placed their first order with your store. Group the report by month and take the first-time row. Path: Shopify admin > Analytics > Reports > Category filter > Customers > New vs returning customers > Group by > Month.
  5. Divide twice, and label both. Paid CAC is the ad spend from steps 1 and 2, divided by step 4. Fully loaded CAC adds step 3 to the top line. Keep last month's two figures beside this month's, so a change of recipe can't pass for a change in cost. Path: two cells in your sheet, each with its label beside it.
  6. Split the new customers by country. Shopify's Customers by location report counts new customers by region. It places each one at their most recent shipping location. Path: Shopify admin > Analytics > Reports > Category filter > Customers > Customers by location.
  7. Split the spend by the same countries. In Meta, select your campaigns, click the Breakdown icon, choose By delivery and pick Country. In Google Ads, open the Matched locations report. Path: Meta Ads Manager > Breakdown icon > By delivery > Country. In Google Ads: Campaigns > Insights & reports > When and where your ads showed > Matched locations.
  8. Check how many first orders used a welcome code. A cheap CAC bought with a deep discount can buy a different kind of customer. The Sales by discount codes report groups sales by discount name and counts the orders each one touched. Path: Shopify admin > Analytics > Reports > Category filter > Sales > Sales by discount codes.

Why split by country rather than by channel? A country split needs no attribution model. Shopify knows where each new customer ships to, and each ad platform knows where it spent. Nobody has to decide which channel won the customer. It has limits: it works where campaigns target each country on their own, and shoppers who cross the border blur it a little.

A worked example

For illustration, with round numbers made up for the example. Say a store sells in the Netherlands and Belgium and runs Google Ads and Meta in both.

For illustrationNetherlandsBelgiumTotal
Google Ads spend€5,000€2,000€7,000
Meta spend€6,000€3,000€9,000
Agency fee, not split€2,000
First-time customers300100400
Paid CACabout €37€50€40

For illustration, €16,000 of ad spend over 400 first-time customers gives a paid CAC of €40. In this worked example, adding the €2,000 agency fee gives a fully loaded CAC of €45. Both are right, as long as each carries its label.

The country split tells a sharper story. For illustration, the Netherlands' €11,000 won 300 new customers, about €37 each. In this worked example, Belgium's €5,000 won 100, so €50 each. A higher CAC there could mean weaker ads, a less known brand or a dearer auction. The split shows where to look, not why.

In the worked example, is €50 too much? The yardstick is one store's Break-even sheet: at a 40% margin, break-even ROAS is 2.5x, which is 1 divided by 0.40. Read as CAC, a first order must be 2.5 times the CAC to pay it back at that margin. In this worked example, Belgian first orders would need to average €125, and Dutch ones about €92.

Now the channel view, for contrast. One store's Channels sheet puts Direct at 57.7% of revenue in all three views. If your Direct row looks like that, a channel split leaves more than half the revenue with no channel to charge. The country split sidesteps that question entirely.

Step 8 adds the last caveat. For illustration, say 240 of the 400 first orders used the welcome code. In this worked example, the €40 CAC then partly bought discount hunters. Their later orders decide whether it was cheap.

What to check when the numbers look wrong

  • Last month's spend changed after you wrote it down. Meta's figure was still an estimate. Re-read it a few days after month end and keep the settled number.
  • The CAC jumped in a month when nothing changed. Check the date ranges first. Google's Campaigns page opens on a rolling window, not on last month.
  • New customers in a country look too low. Shopify places them at their most recent shipping location. Gifts shipped abroad and customers who moved land in another row.
  • Country spend doesn't add up to the account total. Look for campaigns that target several countries at once. Read their Matched locations rows instead of splitting by guesswork.
  • Meta and Google both claim the same new customer. That is fine here. The country split charges each euro to where it ran and counts each customer once, in Shopify.
  • One country's CAC is far below the rest. Look for spend outside your ad accounts there, such as creators or press. Then check that ads aimed at a neighbour didn't spill across the border.

What to do this week

  1. Re-pull last month's Google Ads spend with the calendar month set. Pass: the total matches the spend you used for last month's CAC. Fail: it differs, because the page opened on a rolling window, so correct last month's figure.
  2. Run Customers by location for last month. Pass: new customers split cleanly across the countries you advertise in. Fail: a large share sits in countries you never target, so check where your ads and shipping really reach.
  3. Open Sales by discount codes for last month. Pass: you can say how many first orders used the welcome code. Fail: regulars use the same code, so give new customers a code of their own before next month.

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: Account, campaign, and ad group performance (Google Ads Help); Why amount spent is different in ad account spending limit, Meta Ads Manager and billing history (Meta Business Help Center); Customers reports (Shopify Help Center); Navigate to breakdowns in Meta Ads Manager to understand ad performance (Meta Business Help Center); View matched locations and distance reports (Google Ads Help); Sales reports (Shopify Help Center); All channels performance report (Google Analytics Help); Analytics dimensions and metrics (Google Analytics Help).

Frequently asked questions

  • Which Shopify report counts first-time customers?
    New vs returning customers, in the Customers category under Analytics, then Reports. Group it by month and read the first-time row. Shopify counts a first-time customer as someone who placed their first order with your store.
  • Can GA4 calculate CAC for me?
    Not directly. Its Cost per key event divides ad cost by every selected key event, so with purchases it includes repeat orders. GA4 counts First time purchasers as GA4 users, not Shopify customers, so count new customers in Shopify and divide there.
  • How do I work out CAC for each country I sell in?
    Divide each country's ad spend by its first-time customers. Meta breaks spend down by country, and Google Ads shows it in the Matched locations report. Shopify's Customers by location report counts new customers by their latest shipping address.

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.