CPA Formula: How to Calculate Cost per Acquisition

Cost per acquisition formula with a lead-gen example by campaign, the Excel formula, cost per lead vs cost per sale, and how to set a target CPA.

Summary

CPA = Ad spend ÷ Acquisitions, where an acquisition is whatever action you define: a lead, a trial, a sale. A solar installer that spent $47,000 and signed 45 contracts has a CPA of $1,044.44 per contract, even though its cost per lead is only $58.39.

On this page
  1. Cost per acquisition (CPA) formula
  2. How to calculate cost per acquisition (CPA) in Excel and Google Sheets
  3. Worked example
  4. How to interpret cost per acquisition (CPA)
  5. Common mistakes
  6. Calculate cost per acquisition (CPA) with Better Analyst
  7. Further reading
  8. FAQ

Cost per acquisition (CPA) formula

Formula
CPA = Total ad spend ÷ Number of acquisitions (the defined conversion action)
  • Ad spend: Media cost for the campaigns and period being measured.
  • Acquisitions: Count of the specific action you are paying for: leads, booked calls, signed contracts or purchases. Name it every time you report CPA.

How to calculate cost per acquisition (CPA) in Excel and Google Sheets

Excel, using the cells in the worked example below:

Excel
=SUM(B2:B4)/SUM(D2:D4)

Worked example

A residential solar installer runs three lead sources and wants cost per lead and cost per signed contract to reallocate next quarter's budget.

Last quarter by lead source (table starts in cell A1)
Lead sourceSpendLeadsSigned contracts
Google Search$22,40032028
Meta lead forms$15,60041013
Local radio$9,000754
  1. Total spend = $47,000; total leads = 805; total contracts = 45.
  2. CPA per signed contract = 47,000 ÷ 45 = $1,044.44.
  3. Cost per lead = 47,000 ÷ 805 = $58.39. Meta looks cheapest per lead ($38.05).
  4. Per contract (=B2/D2 filled down): Google $800, Meta $1,200, radio $2,250. Meta's cheaper leads close at 3.2% versus Google's 8.8%.

Result: $1,044.44 CPA per signed contract

How to interpret cost per acquisition (CPA)

CPA is only as useful as the action it counts. Cost per lead rewards cheap, low-quality leads; cost per sale or signed contract reflects what the business needs. Set a target CPA from economics: the gross profit of an average sale (or the lifetime value of a customer) caps what you can pay. If an installed system yields $4,000 of gross profit, a $1,044 CPA leaves room, while radio at $2,250 per contract is borderline once sales salaries are added.

Common mistakes

  • Optimising campaigns on cost per lead when lead quality varies by source. Track CPA to the revenue event.
  • Changing the conversion definition mid-quarter, which makes CPA trends meaningless.
  • Attributing contracts with long sales cycles to the month they closed, while spend sits in earlier months.
  • Excluding the cost of handling leads. Sales time spent on poor leads is real cost; that's what fully loaded CAC captures.

Calculate cost per acquisition (CPA) with Better Analyst

Connect your data or upload a spreadsheet, then ask in plain English. Better Analyst writes and runs the calculation and shows the steps, so you can check the number.

  • “Calculate cost per lead and cost per signed contract by source for last quarter.”
  • “Which campaigns have a cost per lead below average but a cost per sale above average?”
  • “Set up a weekly report of CPA by channel sent to Slack every Monday.”

Usually calculated from: Google Sheets, Airtable, Google Analytics, Google BigQuery, PostgreSQL.

Try Better Analyst free

Further reading

Frequently asked questions

What is the difference between CPA and CPL?
CPL (cost per lead) divides spend by leads. CPA divides spend by whatever acquisition you define, often a sale. In the example CPL is $58.39 and CPA per contract is $1,044.44.
How do I set a target CPA?
Start from the gross profit of one acquisition (or customer lifetime value), then decide how much of it you're willing to spend to acquire it. Many teams target a CPA well below that ceiling to leave room for sales costs and profit.
How do I calculate CPA in Excel?
Divide spend by acquisitions: =B2/D2 for one row, =SUM(B2:B4)/SUM(D2:D4) for the total. Use IFERROR to handle rows with zero acquisitions.