How to work out DTC marketing spend, step by step
Get your gross margin and first-order sales from Shopify, and add the repeat sales a new customer brings inside your payback window. Turn that into the most you can pay per new customer. Then price today's new customers, tell Google Ads what one adds, and raise spend in tested steps.
By Joris van Huët, Founder & CEOUpdated 8 min read
Run the numbers for your store: the free profit margin and markup calculator.
Usually in eight steps. Get your gross margin and first-order value from Shopify. Add the repeat sales a new customer brings inside a payback window you choose. Turn that into the most you can pay for one new customer. Then compare it with today's cost per new customer, and raise spend only while the next ones stay under it.
You need Shopify admin with product costs filled in for your best sellers, access to your ad accounts and an hour with a spreadsheet. The output is one number, the most a new customer is worth to you, and a budget built on it.
Step by step
- Record your gross margin. Shopify reports profit only for products with a cost recorded when they sold. Fill in costs for your best sellers first, then read gross margin: net sales minus cost, divided by net sales. Path: Shopify admin > Analytics > Reports > Category filter > Profit Margin > Gross profit by product.
- Pull first-order sales for one cohort. Customer cohort analysis groups customers by the date of their first order. With net sales as the metric, the third column shows each cohort's first orders. Switch the metric to number of customers to get the cohort's size. Path: Shopify admin > Analytics > Reports > Category filter > Customers > Customer cohort analysis > Metric.
- Add the repeat sales inside your payback window. Pick the window your cash can fund, then add that cohort's month columns inside it. Divide first-order plus window sales by the cohort's size, and multiply by your gross margin. That is the most you can pay for one new customer. Path: Shopify admin > Analytics > Reports > Customer cohort analysis > Intervals menu.
- Count last month's new customers. Shopify counts a first-time customer as one who placed their first order with your store. Group by month, so the count lines up with your ad invoices. Path: Shopify admin > Analytics > Reports > Category filter > Customers > New customers over time > Group by > Month.
- Add up last month's ad spend. Take the cost from every ad account for the same calendar month, then divide it by step 4's count. Meta's Amount spent is the approximate total spent on a campaign, ad set or ad during its schedule. Path: Google Ads > Campaigns table > Total Cost; Meta Ads Manager > Amount spent.
- Tell Google Ads what a new customer adds. Set up the customer acquisition goal. Enter as its value the repeat sales a new customer brings inside your window. Google's starting guidance is 2x a regular customer, and its recommended value comes from your past average order value. Path: Google Ads > Goals > Summary > Customer acquisition panel > Set Up.
- Read cost per new customer by campaign. Once the goal is on, add the New customers and Customer Acquisition Cost (CAC) columns. They only fill for campaigns that optimise for purchases. Google's CAC is the ad spend allocated to new customers, divided by the unique new customers a campaign acquired. Path: Google Ads > Campaigns table > Columns, then Segment > New vs. returning customers.
- Raise spend in steps and price each step. Add one step of budget and hold everything else still. Once the slow buyers have landed, divide the extra spend by the extra new customers, and keep stepping while that stays under step 3's number. Path: Shopify admin > Analytics > Reports > New customers over time > Group by > Week.
A worked example
Round, invented numbers, for illustration.
| For illustration | Value |
|---|---|
| Gross margin | 40% |
| First-order net sales per new customer | €60 |
| Repeat net sales per new customer, months 1 to 3 | €30 |
| Most you can pay per new customer ((€60 + €30) × 40%) | €36 |
| Last month's ad spend | €12,000 |
| Last month's new customers | 400 |
| Cost per new customer today | €30 |
| Step tried: extra spend, extra new customers | €3,000 and 60 |
| Cost per extra new customer | €50 |
The 40% margin matches one store's Break-even sheet, where break-even ROAS is 2.5x because 1 divided by 0.40 is 2.5. For illustration, a €60 first order at that margin leaves €24 of gross profit. In this worked example, a ceiling set on the first order alone is €24, the same as asking that order for 2.5x.
For illustration, €30 of repeat sales in months 1 to 3 adds €12 of gross profit, so the ceiling rises to €36. That is why a brand with repeat buyers can outbid one without them on the same first order.
For illustration, last month's €12,000 of spend came with 400 new customers, or €30 each. In the worked example that sits under €36, so there is room on paper. Paper is where the trouble starts.
For illustration, a step of €3,000 that brings 60 extra new customers costs €50 per extra customer. In the worked example that step fails, because €50 is well over €36. For illustration, a smaller step of €1,500 that brings 45 extra costs about €33 each, and passes.
Timing decides when you can read a step. In one store's Journeys sheet, journeys with 2 to 3 touches took 12.5 days to buy. Those with 4 to 9 touches took 16.9 days in the same Journeys sheet. If yours look similar, read a step's new customers for about three weeks after it starts, not in its first week.
What to check when the numbers look wrong
- The cohort's month columns are empty. The cohort is too young to have reordered, so use an older one. Shopify's projections only appear once 24 months of data are available.
- The margin looks too good. Products sold without a recorded cost are left out of profit reports. For resold products, cost per item leaves out taxes and shipping, so take those off yourself.
- Google Ads and Shopify disagree on who is new. Google's auto-detection calls a customer new after 540 days without a purchase. Shopify calls a customer returning once their order history holds an order.
- Many Google conversions show as Unknown. Google can't always tell new from existing customers, for example because of iOS limits or personalisation settings. Count new customers in Shopify, and use Google's split for direction only.
- New customers jumped while spend stood still. A sale, a press mention or the season did it. Compare with the same weeks last year before you credit the budget.
- Each step costs more than the last. That is the curve doing its job. Stop where the cost of the extra customers crosses your ceiling, not where the average does.
What to do this week
- Write your ceiling on one line. In Shopify admin, open Analytics, then Reports, then Customer cohort analysis. Take a cohort at least three months old and work out first-order plus repeat sales per customer, times your margin. Pass: one euro figure, dated. Fail: missing costs make the margin unreadable, so add a cost per item to your best sellers first.
- Set the acquisition goal in Google Ads. Go to Summary in the Goals menu, then Set Up under Customer acquisition, and enter your own value. Pass: the goal carries your number, not the recommended one. Fail: there is no Purchase conversion goal, which every setting but New Customer Only needs, so fix tracking first.
- Book one budget step. Pick the start date, the step size and the cost per extra new customer that would make you stop. Pass: all three are written down before the money moves. Fail: the step starts with no stop rule, which is how a test quietly becomes the new budget.
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: Profit reports (Shopify Help Center); Customers reports (Shopify Help Center); Step 2 of 5: Configure your lifecycle goals (Google Ads Help); Measure your lifecycle goals campaigns (Google Ads Help); About customer lifecycle goals (Google Ads Help); Amount spent (Meta Business Help Center)
Related answers
Frequently asked questions
Where do I see first-order sales in Shopify?
In the Customer cohort analysis report, under Analytics, then Reports, in the Customers category. With net sales as the metric, the third column shows each cohort's first orders. Switch the metric to number of customers to get the size of each cohort.Can Google Ads report cost per new customer?
Yes, once a customer acquisition goal is on and the campaign optimises for purchases. Its CAC column divides the ad spend allocated to new customers by the unique new customers a campaign acquired. Under auto-detection, Google treats someone as new after 540 days without a purchase.What extra value should I give new customers in Google Ads?
Start from your own cohort data: the repeat sales a new customer adds inside your payback window. Google's setup guidance suggests 2x a regular customer as a starting point. Its recommended value is based on your past average order value, which says nothing about repeats.
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.
- ConversionConversion is a specific, desired action a user takes in response to a marketing message, such as a purchase or a sign-up.
- Customer acquisitionCustomer acquisition attracts new customers to a business. For e-commerce, this means driving the right traffic to the website.
- Customer Acquisition Cost (CAC)Customer Acquisition Cost (CAC) is the cost to convince a consumer to buy a product or service. It measures marketing campaign effectiveness.
- Google AdsGoogle Ads is an online advertising platform where advertisers bid to display ads, service offerings, and product listings.
- Profit MarginProfit margin measures profitability, calculated as net income divided by revenue and expressed as a percentage.
- Repeat Purchase RateRepeat Purchase Rate is the percentage of customers who have made more than one purchase. It indicates customer loyalty and satisfaction.