Owner money terms

What is customer acquisition cost (CAC)?

Customer acquisition cost, or CAC, is everything you spent winning new customers in a period, divided by the number of new customers you won. It counts the ads and everything wrapped around them: the agency, the hours spent quoting, the trade show stand.

By Jed Carey, Co-Founder of CoraVision ·Last updated 21 October 2026 ·Connect with Jed on LinkedIn
The sum

CAC = all spending on winning new customers ÷ new customers won

$8,500 ÷ 12 = $708

What belongs in the top line?

Anything you would stop paying for if you stopped chasing new customers. That covers ad spend on every channel, fees to an agency or a freelancer, software you use only for marketing, printing and sponsorships, and the wages (or your own hours) spent answering enquiries and quoting new work.

What stays out is the cost of serving customers you already have, and the cost of the product itself. Stock and materials belong in your gross margin. Mixing them into CAC counts the same dollar twice, once when you win the customer and again when you work out whether the job paid.

What does a new solar customer cost a Geelong installer? (example figures)

A two-person solar installer in Geelong wins 12 new households in a month. Here is what that month cost on the acquisition side.

CostAmount
Google Ads$3,200
Meta ads$1,100
Part-time consultant doing site visits and quotes$2,600
Agency fee for running the ads$900
Flyers and a stand at a local home show$700
Total, divided by 12 new customers$8,500 ÷ 12 = $708 each

Google Ads, meanwhile, reports 16 conversions for $3,200, a cost per conversion of $200. Both figures are right. They answer different questions. The $200 is what Google charged per form sent. The $708 is what the business paid, all in, for each household that signed.

With an average system at $9,000 and a 30 percent gross margin, each job leaves $2,700 before acquisition. Take off $708 and the installer keeps about $1,990 a job. Had the owner judged the month on the $200 figure, the next budget decision would have been made on a cost less than a third of the real one.

Why does the number in your ad account look so much smaller?

The ad account sees only its own spend, and only the conversions its tracking caught. It cannot see the agency invoice, the consultant's car, or the fact that four of the 16 forms were people outside the service area. That ad-only figure has its own name, cost per acquisition, and it is useful for comparing one campaign with another. CAC is the figure to set against what a customer is worth. The longer guide takes each cost line in turn, with the traps in each.

How does CoraVision use your acquisition cost?

CoraVision shows the ad-spend part of CAC on the dashboard: the Google Ads and Meta cards give the last 7 days of cost per acquisition, read from your accounts every night once they are connected. The lifetime value Cora works out from your answers in the onboarding call is the ceiling CAC has to stay under. The agency fee and the quoting hours live outside any ad account, so they are yours to add before you compare the two numbers at a weekly check-in.

This is the definition. The long version is the guide: Customer acquisition cost marketing: read CAC in context.

Questions

Should I count my own hours in CAC?

Yes, at the rate you would pay someone else to do them. An owner who spends ten hours a week quoting new work is a cost, even if no wage changes hands. Leave the hours out and your CAC looks cheaper than it is, and the day you hire someone to quote, the number jumps.

Do repeat customers go in the count?

No. CAC divides by new customers only. A returning customer who buys again was paid for the first time, so counting them again makes acquisition look cheaper than it is. Track their spending under repeat purchase rate instead.

How often should a small business work out its CAC?

Monthly if you win customers every week, quarterly if a sale takes weeks to close. A quote sent in March that lands in May makes a single month swing wildly, and a quarter smooths that out.