← All posts
Strategy

How to Cut Customer Acquisition Cost Without Cutting Budget

A pet products brand was spending $62 to acquire a customer with a 90-day LTV of $48. At those numbers, every paid customer was a $14 loss. The founder had been optimising for volume — more orders, lower CPCs — without checking whether the unit economics worked. The fix wasn't lower CPMs. It was $12,000 in monthly spend cut from campaigns that were acquiring customers below their break-even, without the volume to compensate.

What's actually inside your CAC

Most Shopify brands calculate CAC as: total ad spend ÷ number of orders. That's a start, but it misses the costs that sit between the click and the actual acquisition.

A more accurate CAC includes:

  • Ad spend (what you paid Meta and Google)
  • Agency or management fees (pro-rated per order)
  • Platform fees (Shopify transaction fee 0.5–2%, Shopify Payments 2.9% + $0.30)
  • Fulfillment cost on that first order
  • Refund/return rate applied as a cost per acquired customer

For the pet brand: $28 blended CPO from Meta, $4.80 management fee, $6.20 platform and payment fees, $9.40 fulfillment, $13.60 in returns (9.3% return rate × AOV). Real CAC: $62. Revenue per acquired customer in the first 90 days: $48.

The Meta dashboard showed 2.8 ROAS. The P&L showed a loss on every customer. The gap came from fulfillment and return costs that never appeared in the ad platform report.

The 3 places CAC leaks without showing up in Meta

Leak 1: High-spend campaigns with above-average return rates. Return rate varies by product and by traffic source. A campaign targeting broad audiences might drive strong CTR but attract buyers who return at 14% vs. the store average of 7%. The ROAS looks acceptable; the actual revenue retained after returns is not. Meta shows revenue at order value. It doesn't show revenue at post-return value.

Leak 2: Campaigns targeting low-LTV customer segments. Not all customers are equal. A brand selling consumables to first-time buyers at $38 AOV looks fine on CAC. If those buyers never repurchase, the lifetime math fails. Campaigns targeting price-sensitive audiences with heavy discount angles consistently acquire customers who don't come back — which means the only way to maintain revenue is continuous new acquisition at full CAC forever.

Leak 3: Budget split between campaigns with wildly different true CPOs. Account-level ROAS averaging hides campaigns running at 1.4 ROAS alongside campaigns at 4.1 ROAS. The blended number looks acceptable. The low-performer is quietly costing $40 per order that's barely profitable. It continues running because the account-level number doesn't expose it.

How the pet brand found and cut the waste

The audit took 22 minutes. Three filters run in Meta Ads Manager, last 90 days:

  1. Sorted by spend descending, checked Shopify return rate per campaign using UTM filtering. Two campaigns — targeting broad fashion-adjacent pet audiences — had 14.6% and 16.2% return rates vs. the store's 9.3% baseline. Combined spend: $5,800/month. Net revenue after returns: unprofitable.
  1. Compared 90-day LTV of customers acquired via each campaign (pulled from Shopify customer data by UTM source and tagged by first order date). The two broad-audience campaigns were acquiring customers with average 90-day LTV of $31. The niche-audience campaigns (pet health, breed-specific interests) were acquiring customers with 90-day LTV of $72.
  1. Identified $6,200 in spend (from the earlier meta account audit) on ad sets with zero purchases. Combined with the two high-return campaigns: $12,000/month redirected from losing spend to the three niche campaigns that were actually profitable.

Result: total ad spend unchanged. Orders dropped 11% in month 1 (expected — fewer customers, better ones). CAC: $62 → $39. 90-day LTV: $48 → $71. Profitable for the first time in 4 months.

The 20-minute CAC audit to run today

Pull these 4 numbers for your last 30 days:

  1. True CPO by campaign — ad spend ÷ orders for each campaign in Meta
  2. Return rate by campaign — filter Shopify orders by UTM campaign, calculate returns/orders per source
  3. 90-day LTV by acquisition campaign — compare customers acquired via each campaign, average 90-day revenue (requires UTM tagging from day one)
  4. Blended contribution margin — for each campaign: CPO + fulfillment + platform fees + returns. If that sum exceeds your average 90-day LTV, the campaign is losing money.

Any campaign where true cost of acquisition (including fulfillment, fees, and returns) exceeds 90-day LTV is a leak. Pause it. Reallocate to the campaigns where the math works.

The number you want is not the lowest CPO — it's the campaign with the widest gap between true CAC and 90-day LTV. That's where to put more budget.