CPC vs CPM vs CPA: an ad metrics glossary without fluff
CPC vs CPM vs CPA, plus CPL and ROMI: what each metric means, how they connect in one formula and one hypothetical campaign counted five ways.
CPC vs CPM vs CPA is a question about what you pay for: a click, a thousand impressions or an action. All three describe the same campaign from different points of the funnel, and each one alone can mislead you. A cheap click says nothing about whether anyone bought.
My position: you don't need to pick a favorite metric. You need to see the chain from impression to sale and know which link is broken. Before you decide “our CPC went up, the campaign is bad,” count one step further.
In Gauss, AI will help you work through this chain. Coming in the next version: short insights for yesterday, the last 7 or 30 days, or any period you choose. They cover what changed in traffic, conversions and the customer's path through the site, why it matters for revenue, and what to check. If you import ad spend, the insights will also cover cost per lead and ROMI. The numbers are calculated by code; the model only writes the insight and links to the report where you can see the fact.
The glossary
| Metric | What it means | Formula |
|---|---|---|
| CPM | Cost per thousand impressions | spend / impressions × 1,000 |
| CTR | Share of impressions that became clicks | clicks / impressions |
| CPC | Cost per click | spend / clicks |
| CR | Share of clicks that became a lead or order | conversions / clicks |
| CPL | Cost per lead (form, call, message) | spend / leads |
| CPA | Cost per action or acquisition | spend / target actions |
| ROMI | Return on marketing investment | (profit from sales − spend) / spend |
A note on CPA: some teams use it for any target action, others only for a paying customer. Both are fine. Agree inside the team which one you mean, or you'll compare a $25 lead with a $125 customer and think one channel is five times better.
Platforms let you pay by different models. In Google Ads display campaigns, for example, the help center lists manual CPC bidding, viewable CPM bidding and Target CPA, where the system tries to get as many conversions as possible at the cost per action you set. What you pay for and what you measure are two separate decisions: you can buy impressions and still judge the campaign by CPL.
One campaign, five metrics
Say Daniel runs an online English school and launches one campaign for a free trial lesson. The numbers are hypothetical.
| Input | Value |
|---|---|
| Spend | $2,000 |
| Impressions | 400,000 |
| Clicks | 3,200 |
| Trial lesson requests (leads) | 80 |
| Paid students | 16 |
| Average first payment | $450 |
| Gross margin | 50% |
Now count it five ways.
CPM = 2,000 / 400,000 × 1,000 = $5.00
CPC = 2,000 / 3,200 = $0.63
CPL = 2,000 / 80 = $25
CPA = 2,000 / 16 = $125 per paying student
ROMI = (16 × 450 × 0.5 − 2,000) / 2,000 = 80%The in-between ratios: CTR is 3,200 / 400,000 = 0.8%, the click-to-lead rate is 80 / 3,200 = 2.5%, the lead-to-student rate is 16 / 80 = 20%.
These metrics are one chain:
CPC = CPM / (1,000 × CTR) → 5 / 8 = $0.63
CPL = CPC / CR → 0.63 / 0.025 = $25
CPA = CPL / lead-to-sale rate → 25 / 0.2 = $125This is the most useful formula in this article. When one metric gets worse, you can see which ratio caused it.
Cheaper click, pricier lead
Daniel's colleague suggests a second campaign with a broader audience. The click there is cheaper: $0.40 instead of $0.63. Hypothetical numbers again.
| Campaign A | Campaign B | |
|---|---|---|
| CPC | $0.63 | $0.40 |
| Click-to-lead rate | 2.5% | 1.0% |
| CPL | $25 | $40 |
| Lead-to-student rate | 20% | 15% |
| CPA per student | $125 | $267 |
Campaign B wins on CPC and loses on everything that matters. A broad audience clicks out of curiosity, leaves fewer requests and those requests convert worse. If Daniel looked only at the click price, he'd move the budget the wrong way.
The reverse happens too. A campaign with an expensive click can bring the cheapest customers, because it reaches people who are already searching for a course. So compare campaigns by the last metric you can measure reliably: CPL if you only see leads, CPA if you see sales.
Which model to pay by
CPM fits when you need reach: a new brand, a local event, a reminder to people who already know you. You take the risk on whether people click.
CPC fits when you need visits and can judge the site's conversion yourself. You take the risk on whether visitors convert.
CPA or pay-per-conversion shifts the risk to the platform, but only for the action it can see. In Yandex Direct, for example, the “Maximum conversions with pay per conversion” strategy charges for each target action on the site (the page is in Russian). If that action is a form submission, you pay for every form, including spam and people who never answer the phone.
That's the main trap of paying per action: the platform optimizes for what you counted. Count the cheap thing and you'll get a lot of it.
Common mistakes
- Comparing CPC across channels. Search and social bring different people at different stages. Compare by CPL or CPA.
- CPA without a definition. One person means a lead, another a customer, and the report becomes useless.
- Ignoring the lead-to-sale rate. CPL looks great, sales don't grow. The problem is lead quality, not price.
- ROMI on revenue instead of profit. $7,200 revenue on $2,000 spend looks like 260%. On a 50% margin it's 80%. Both numbers are real, but only one tells you if you earned money.
- Optimizing for a goal that's too easy. A click on a phone number or a page view as the “conversion” trains the algorithm to bring people who do exactly that and nothing more.
How this looks in Gauss
Gauss shows the part of the chain that happens on your site: visits by source and UTM campaign, goals by URL or event and the conversion rate as a share of visitors. Forms and contact clicks are tracked as goals automatically. If you send generate_lead or purchase with value through gtag or dataLayer, the GA4 adapter picks them up and you see conversion value by channel and campaign.
Coming in the next version: CSV import of ad spend (date, utm_source, utm_medium, utm_campaign, spend, currency), which will show CPL and ROMI per campaign next to the conversions.
What to do in the next hour
- Take one active campaign and write down spend, impressions, clicks, leads and sales for the last 30 days.
- Count CPM, CPC, CPL and CPA with the formulas above.
- Find the weakest ratio: CTR, click-to-lead or lead-to-sale.
- Agree with your team what “CPA” means in your reports and write it at the top of the report.
- Check which goal your automated bidding optimizes for. If it's a cheap action, consider switching to a deeper one.
Related reading:
- CTR: what a good click-through rate tells you
- Low quality leads: 6 signs you're paying for junk
- CAC payback period: when a customer pays off
The bottom line
Every metric in this glossary is honest about its own piece of the funnel. Trouble starts when one piece is taken for the whole picture. CPC is about the ad, CPL is about the ad and the site, CPA is about the ad, the site and sales.
Count all three at least once a month, even by hand. It takes ten minutes and saves you from the most expensive decision in advertising: moving money toward cheap clicks.
Your task: count CPL and CPA for your largest campaign today and write down which one you use to judge it. Gauss counts the campaign's leads and purchases on its own, with no setup. To get CPL and CPA, divide the spend from your ad account by those numbers. Coming in the next version, Gauss will calculate CPL and ROMI automatically once you import your spend.
Want to see which channels actually bring you customers? Try Gauss →