Metrics & KPIs

CPA

By the AdFlint research team · Last reviewed July 2026

Ad spend divided by the number of conversions, showing the average cost of each conversion the platform counted in that reporting window.

It answers what a conversion costs, but only for conversions the platform saw and claimed. Attribution windows, view-through counting, and duplicate events all move it while nothing in the account changes. The most common misreading is comparing the figure across platforms as though each measured the same thing; Google and Meta credit conversions under different rules and different lookback settings.

Key takeaways

  • CPA is a function of the conversion definition and attribution window underneath it - a widened window or a looser conversion action can lower reported CPA without any real performance change.
  • iOS tracking limits since Apple's App Tracking Transparency changes mean pixel-only CPA on Meta can overstate true cost per result; layering in the Conversions API narrows the gap.
  • Under Target CPA or Target ROAS bidding, reported CPA is the direct output of that target, so a CPA running above target signals the algorithm cannot find enough conversions at that price yet, not a separate problem to chase.
  • Do not compare CPA across Google Ads and Meta at face value; different conversion counting rules and attribution windows mean the same dollar figure can represent different underlying realities.

In practice.

CPA is only as trustworthy as the conversion definition and attribution window sitting underneath it, which is why the same campaign can report two different CPAs depending on which report you pull. On Google Ads, CPA is calculated using the conversion action's configured counting method (one per click versus every conversion) and its attribution window, and Smart Bidding strategies like Target CPA optimize toward whatever that conversion action counts, not toward some platform-agnostic notion of a sale. On Meta, CPA (commonly shown as cost per result) is built on the pixel or Conversions API event you chose as the optimization event, using Meta's own default 7-day click / 1-day view attribution window unless you changed it, and since Apple's iOS App Tracking Transparency changes, pixel-only tracking on iOS traffic systematically undercounts real conversions, which pushes reported CPA higher than the true figure without anything in the account actually getting worse.

CPA interacts closely with bid strategy, attribution window, and conversion action setup. Under Target CPA or Target ROAS, the number you see in the report is the actual result of that target, not a separate independent metric - if the reported CPA is running above your target, the algorithm is telling you (through its bidding behavior) that it cannot reliably find enough conversions at that price with current volume, creative, and audience. Widening the attribution window, in either platform, will generally lower reported CPA by crediting more conversions to the same spend, which is a legitimate methodology change but not a real performance improvement, and it is worth knowing whenever a CPA suddenly improves and nobody changed the campaign itself.

CPA matters most once a campaign has real, if modest, conversion volume - enough that a handful of conversions landing or not landing on a given day does not swing the average wildly. It matters least, and is actively misleading, in a campaign's first days of learning phase, where the algorithm is still exploring and CPA can spike or crater based on a small sample, and on any campaign with fewer than roughly 15-30 conversions a month, where the number is closer to noise than signal.

The most common mistake is comparing CPA across Google Ads and Meta as though both platforms measured the same event the same way. A $40 CPA on Google Search and a $40 CPA on Meta Feed are not directly comparable because the underlying attribution windows, conversion counting rules, and the quality of intent behind a search click versus a scroll-stopping feed ad differ substantially. The second common mistake is chasing a target CPA down aggressively on a thin-data campaign, which typically produces volume collapse - the algorithm restricts spend to only the cheapest-looking conversions it can find rather than actually hitting the lower cost at scale.

In reporting, always check which conversion action is driving the number before reacting to a CPA change. A CPA report is only as meaningful as its conversion definition: a campaign counting both add-to-cart and purchase as conversions, or counting every conversion rather than one per click, will show a systematically lower CPA than an identically performing campaign counting purchases only, and neither number is wrong, they are just answering different questions. When CPA moves, check the conversion action, the attribution window, and total conversion volume before assuming the campaign's actual efficiency changed.

Worked example

Same campaign, two different CPA numbers

Suppose a subscription box service spends $2,000 in a month on a Meta campaign optimizing for purchases, and the ads manager reports 50 purchases at a $40 CPA using the default 7-day click / 1-day view attribution window. The founder pulls a separate report using a 1-day click-only window to compare against a different channel and sees only 34 purchases attributed in that same period, for a $58.82 CPA.

Nothing about the campaign changed between the two numbers - the same $2,000 bought the same clicks and the same actual purchases happened. The difference is entirely the attribution window: the 7-day window credits purchases that happened several days after a click the shorter window does not count. Neither number is fraudulent, but treating either one as the single true CPA without noting which window produced it will make the campaign look better or worse than a fair comparison against another channel using different settings warrants.

Run the numbers yourself

Cost Per Acquisition Calculator

Calculate cost per acquisition, break-even CPA, ROAS, revenue, and profit from ad spend and conversions.

Open the free calculator

CPA compared with

The settings this gets confused with, and how to tell them apart.

Common questions.

Why did my CPA jump right after I launched a new campaign?

New campaigns typically go through a learning phase where the algorithm is still exploring audiences and placements with limited data, which produces volatile and often elevated CPA in the first several days. Most platforms recommend waiting until the campaign clears roughly 15-30 conversions before judging CPA as a stable signal.

Why is my Meta CPA higher than what my own sales data shows?

iOS privacy changes since Apple's App Tracking Transparency rollout mean pixel-only tracking undercounts real conversions on iOS traffic, so Meta's reported CPA on pixel-based attribution can run higher than the true cost per sale. Connecting the Conversions API alongside the pixel typically closes most of that gap by recovering server-side conversion events the pixel alone misses.

Should I lower my Target CPA if the campaign is under-spending?

Under-spending on a Target CPA campaign usually means the target is set too low for the algorithm to find enough qualifying conversions, so raising the target - not lowering it - is typically the fix that unlocks more volume. Lowering it further tends to restrict delivery even more.

What is a good CPA benchmark for my industry?

There is no universal benchmark worth trusting, because CPA depends entirely on your margins, average order value, and sales cycle, not on what any other business in your category reports. The number that matters is whether your CPA sits comfortably below what a conversion is actually worth to your business after costs.

You should not need to know this to advertise.

AdFlint handles the settings for you, inside the Google and Meta accounts you already own.

Try AdFlint free