Going Stellar

Home/Methods

E-commerce · Paid advertising

How to judge ad campaigns on profit, not on target CPA

To decide whether to scale, hold or cut an ad campaign, compare its cost per order with the store's breakeven CPA, not with a target CPA someone chose. Platform-reported ROAS is inflated, so CPA is the safer gate; brand search and ads on sold-out products need their own tests, because both look different in the report than in the bank account.

Updated

Why target CPA is the wrong gate for scale or cut decisions

To judge an ad campaign on profit, compare its cost per acquisition (CPA) with the store's breakeven CPA: the most one order can cost in advertising before it loses money. A target CPA is an efficiency goal that someone chose; breakeven CPA is a property of the store's prices, costs and delivery rate. We use three zones: CPA at or below 70% of breakeven means scale, CPA between that and breakeven means hold, CPA above breakeven means cut.

We learned this from our own mistake. We had set aggressive target CPAs per store and judged every campaign against them. Performance Max campaigns, which find new customers at a higher CPA, were labelled expensive while they sat well under breakeven. Re-run against breakeven, campaigns marked expensive became scale candidates, and one campaign was confirmed as a real loss.

Target CPA still has a job. On non-brand search it is a soft efficiency goal that disciplines spend. It is not a ceiling for deciding the fate of a profitable campaign.

The three zones: SCALE, HOLD, CUT

SCALE when CPA is at or below scale CPA, which is 70% of breakeven CPA. The 30% reserve absorbs errors in the inputs and the higher cost of the extra orders that extra budget buys. HOLD when CPA is between scale CPA and breakeven. CUT when CPA is above breakeven. Breakeven CPA itself is calculated separately, with VAT removed, only delivered orders counted and refused parcels charged their shipping.

Breakeven is a ceiling, not a goal. When another channel buys the same customer more cheaply, the cheaper channel deserves the next unit of budget. We scale a search channel while its CPA stays below what the same store pays per order on social; once the two meet, moving budget gains nothing. Where a store runs only one channel, breakeven is the benchmark.

Why platform-reported ROAS is inflated, and why CPA is the safer gate

ROAS (return on ad spend) is the revenue an ad platform attributes to its ads, divided by spend. The platform decides what to attribute to itself. When we compared the ROAS reported by the ad platform with the revenue analytics assigned to the same platform's channels over 30 days, the reported figure was 1.4 to 1.8 times higher across stores.

Three causes were configuration: two purchase actions counted for one order; micro-conversions such as add-to-cart or page view set as bidding goals; and a shop-app conversion action that credits the platform generously. Removing the first two lowered the inflation but did not remove it.

CPA is more robust because its numerator, spend, is counted carefully by the platform, which invoices from it. Only the denominator can be wrong, and the denominator can be checked against real orders in the store's own records. One more check matters for cash-on-delivery stores: custom order forms can bypass the native checkout, so the platform sees zero purchases while real orders arrive. Confirm that purchases are tracked at all before reading any CPA.

Four traps that reverse a verdict

1. Currency. A breakeven CPA in the home currency compared with a CPA in the ad account's own currency turned profitable campaigns into apparent losses. Convert first.

2. The long window. A 30-day average hides both recovery and saturation. One campaign judged CUT on 30 days had already recovered; another judged SCALE was saturating as we scaled it. Check the recent trend for every campaign, not only the ones marked CUT.

3. Average versus marginal. In one account a 37% increase in spend bought 12% more orders. The average CPA still sat under breakeven, yet each extra order cost more than breakeven. Before scaling further, divide the change in spend by the change in orders; if that marginal cost is above breakeven, stop, whatever the average says.

4. Conversion lag. Platforms attribute conversions late, so the last 1 to 2 days always look expensive. Our recent window runs from day −8 to day −3. On one day the platform reported a CPA above breakeven for what real orders showed was the best day in two weeks. Daily noise is large too: one store went from 55 to 111 orders a day within two weeks with no change in strategy. One day is never a signal.

Brand search: the best ROAS in the account, and often little profit

A brand search campaign bids on the store's own name. Brand search reports the best ROAS in the account because the people clicking were already looking for the store. The question for brand search is incrementality: what happens to total search, paid plus organic, when the campaign stops.

The signature of cannibalisation in Search Console is stable brand impressions, a stable organic position around 1.1 and a collapsing organic click-through rate. In one account the organic click-through rate on brand queries fell from 57.5% to 22.0% while paid brand clicks rose. When that account was suspended, the organic click-through rate rose to 74.6% within one week, and no competitor took the traffic.

Our test is to pause the brand campaign rather than lower its budget, then compare total search revenue in analytics after 5 to 7 days. In one store total search revenue stayed flat while brand spend went to zero. In another, organic did not take over and total search fell, so those brand ads were incremental and we recommended turning them back on. A third account had real competitors bidding on its name: 25.5% impression share, 63% lost to rank, an organic click-through rate that had never been high. There the brand campaign stays. Brand ads are waste only when organic click-through on the brand is high and nobody else is bidding.

Ads on out-of-stock products: what the real waste is

Ad platforms do not pause an ad when a product sells out, and nothing in our stack linked stock to ads automatically. On the tracked part of one catalogue, ads kept running a median of 2 days after a product reached zero stock, at most 15.

Zero stock in the shop is not the same as cannot be sold. Pages at zero often still convert through backorder, made-to-order or deliberate overselling, and stock can sit in a second warehouse the shop does not see. A flag on every paid visit to a zero-stock page therefore overstates the waste. The real waste is paid traffic to pages with no key events and no revenue. In our check that waste was small and concentrated, mostly duplicate product URLs left in the feed: a catalogue hygiene problem, not a budget problem.

Our first two lists of ads on sold-out products were false positives. Spend was recorded on the parent SKU while stock was tracked on its variants, and shop inventory did not match physical stock. Of about 380 advertised SKUs, 3 were sold out everywhere and set to stop selling, and the ads on all 3 had already been stopped.

Where we were wrong, and the limits of the method

Targets applied to new campaigns starved them. A low target CPA on a campaign with few conversions cut its delivery almost to nothing. We now set a target only after 15 to 30 conversions; before that the campaign maximises conversions under a budget cap.

We trusted our own verdict tool. Each of the four traps above reversed a verdict rather than nudging it, and we acted on verdicts because our own script produced them. An extreme verdict, such as a brand campaign far above breakeven, is now treated as a sign the tool is wrong until checked.

Limits: breakeven excludes fixed costs, so a portfolio of profitable campaigns can still sit inside a loss-making business. Analytics revenue is not incremental either; only a pause or a geographic test measures incrementality, and in a small account even a pause can be inconclusive.

A short checklist

Before scaling or cutting: same currency; CPA per placed order against breakeven per placed order; recent window that skips the last 2 days; marginal cost if budget rose recently; purchases actually tracked; reported orders cross-checked with the store's records. For brand search: test by pausing and read total search revenue. For sold-out products: look for pages with paid traffic, no key events and no revenue.

Questions and answers

Should I judge my ad campaigns on target CPA or on breakeven CPA?

Judge scale and cut decisions on breakeven CPA, the most one order can cost before it loses money. A target CPA is an efficiency goal; used as a gate, it labels campaigns that find new customers at a higher but still profitable CPA as too expensive. Use target CPA as a soft goal on non-brand search only.

Why is ROAS reported by Google Ads or Meta higher than real ROAS?

The platform decides which revenue to credit to its own ads. Common causes are two purchase actions counting the same order, micro-conversions like add-to-cart used as bidding goals, and generous attribution windows. In our stores the reported ROAS was 1.4 to 1.8 times higher than analytics revenue over 30 days. Check CPA against the store's real orders instead.

How do I know if a brand search campaign is cannibalising organic traffic?

In Search Console, look for stable brand impressions, a stable organic position near the top and an organic click-through rate that falls as paid brand clicks rise. Then pause the campaign rather than cutting its budget, and compare total search revenue, paid plus organic, after 5 to 7 days. If total search revenue holds, the campaign was buying clicks you already had.

What is marginal CPA and why does it matter when scaling?

Marginal CPA is the cost of the extra orders bought by extra budget: the change in spend divided by the change in orders. When a campaign saturates, marginal CPA rises much faster than average CPA. An average below breakeven can hide extra orders that each cost more than breakeven, so check the marginal figure before every budget increase.

Do ads keep running when a product goes out of stock?

Usually yes; ad platforms do not pause ads automatically when stock reaches zero. But zero stock in the shop does not always mean the product cannot be sold, because of backorders, overselling or stock held in another warehouse. Measure the real waste as paid traffic to product pages with no key events and no revenue.

How to cite this

Going Stellar (2026). How to judge ad campaigns on profit, not on target CPA. GOING STELLAR S.R.L..
https://goingstellar.ro/methods/judge-ad-campaigns-on-profit/

Read as Markdown

All methods

Contact

Tell us what is not working

Write in English or Romanian. A person reads it — usually the same person who would do the work — and answers within one business day.