Skip to content

POAS vs ROAS: Attribution When Tariffs Eat Your Margin

Tariff-driven COGS inflation means two campaigns with identical ROAS can produce opposite profit outcomes. POAS puts contribution margin inside the measurement, and the budget ranking flips.

Three platforms, three answers, one budget to defend. Your GA4 export already holds the answer, and the first finding is free and never leaves your browser. Get your first finding free

By , Founder & CEOUpdated 8 min read

Run the numbers for your store: the free break-even ROAS calculator, or the free contribution margin calculator.

ROAS ranks campaigns by revenue. POAS ranks them by the contribution margin that revenue leaves behind, and in 2026 that gap changes real budget decisions.

Why did 2026 make revenue a bad proxy for profit?

For most of the last decade, revenue was a decent stand-in for value. Margins across a typical catalog sat in a fairly narrow band, so maximizing attributed revenue roughly maximized profit.

Tariffs broke that assumption. Through 2025 and into 2026, import duties raised landed costs across common DTC categories, and the hit is uneven. Same store, same cart size, completely different economics.

Ad platforms have not adjusted. Left alone, budget flows to whatever sells, not whatever earns. You see it in the account as a slow margin bleed: blended ROAS looks stable while contribution per order quietly falls.

Smart bidding makes this worse, not better. Target ROAS strategies chase conversion value, so they will happily shift budget toward a tariff-hit product line that converts well, because the algorithm's objective is revenue within your efficiency target. Nothing in the feedback loop tells it the order barely contributed.

POAS, profit on ad spend, closes that gap. It divides the contribution margin from attributed orders by the ad spend that generated them. A POAS above 1.0 means each euro of spend returns more than a euro of contribution before overhead. Below 1.0, the campaign destroys value no matter how pretty the ROAS looks.

How do you compute contribution margin per order cohort?

Contribution margin per order is what remains after every cost that scales with each order:

  • Net revenue after discounts
  • Minus landed COGS, including the tariff and duty lines
  • Minus pick, pack, and any shipping subsidy
  • Minus a provision for returns and refunds
  • Minus any affiliate marketing commission or coupon cost attached to the order

That last line matters more than most teams expect. If a meaningful share of your orders carries a coupon code or an affiliate commission, part of your margin is leaking into channels that may not have caused the sale at all. Our coupon and affiliate incrementality audit walks through how to test that before you restructure payouts.

The word cohort is doing real work here. Do not apply a blended store margin to every campaign. Group orders by the campaign or channel that drove them and compute margin from the SKU mix that campaign actually sells.

Here is an illustrative margin stack on a single €100 order, July 2026:

Margin stack line itemAmount (EUR)
Order value€100.00
Discount (10% code)-€10.00
Landed COGS incl. tariff line-€38.00
Payment processing (2.5%)-€2.25
Pick, pack, shipping subsidy-€7.50
Returns provision (8%)-€7.20
Contribution margin€35.05 (about 35%)

A nominally healthy product ends up contributing 35 cents per revenue euro once the tariff-adjusted COGS line lands. That is the number your ad spend has to be measured against.

Same campaigns, opposite decision: a worked example

This is the part that surprises people. Below is an illustrative home goods brand, one month of data from April 2026, four campaigns, all figures in EUR.

CampaignRevenueSpendROASCohort marginContributionPOASRank by ROASRank by POAS
A. Prospecting, cookware€40,000€10,0004.055%€22,0002.2042
B. Prospecting, small appliances€45,000€11,0004.118%€8,1000.7434
C. Retargeting€30,000€6,0005.030%€9,0001.5013
D. Branded search€25,000€5,2004.848%€12,0002.3121

Ranked by ROAS, the decision looks obvious: scale C and D, keep B, cut A. Ranked by POAS, the decision inverts. D and A are the profit engines, C is marginal, and B loses 26 cents of contribution on every euro spent despite a 4.1 ROAS. The campaign ROAS tells you to cut first is the second-best profit producer in the account.

B is the tariff story in miniature. It sells well because the products are popular, but every order carries a thin 18% cohort margin after the new duty lines. Revenue-based bidding keeps feeding it because revenue is all the platform sees.

Blended, the account still looks fine: €140,000 of revenue on €32,200 of spend, a 4.35 ROAS, and €51,100 of contribution, a blended POAS of 1.59. Blended numbers hide that B is underwater.

One more layer. POAS still trusts your attribution model. It assumes the credited orders actually happened because of the ads. Incrementality tells you whether that is true. Say a holdout test finds that only 40% of retargeting campaign C's attributed conversions were genuinely incremental. A 5.0 ROAS campaign that looked safe is now clearly value-destroying, and its incremental ROAS tells the same story on the revenue side. POAS answers what an order is worth; incrementality answers whether you caused it. You need both.

Operationally, the re-ranking means moving budget, not just admiring a new metric. In this example the obvious move is shifting B's €11,000 toward A and D while B's products get repriced, renegotiated, or dropped from paid promotion. Blended POAS, tracked month over month, then becomes the account's health metric: if it rises while spend holds, the mix is genuinely improving rather than just selling more.

Why can't platform pixels see margin?

A purchase pixel fires an event with an order value, and that value is revenue. The pixel never receives your landed cost, tariff lines, return rates, or per-SKU margin, because those live in your ERP, your Shopify cost-per-item fields, or finance's spreadsheet.

You can feed a profit figure back as a custom conversion value, and some teams do. That helps the bidding algorithm chase better orders, but it does nothing for measurement honesty. The platform still grades its own homework: it decides which conversions to claim, then values them with your margin data. The attribution model stays self-interested even when the value field is accurate.

There is also a structural reason margin-aware bidding is not enough. SKU mix varies by campaign, season, and discount depth, so the margin signal drifting into the platform is always a lagging average. This is why POAS belongs in your measurement layer, not just your bid strategy. Compute it outside the platforms, from order data and cost data you control.

How does this change the budget conversation with finance?

Your CFO does not think in ROAS. They think in contribution euros, payback windows, and what happens to cash if a tariff line moves again.

Pair margin data with causal inference and the conversation changes. A causal read estimates the counterfactual, what would have sold anyway, and hands you an incremental share per channel. Multiply attributed revenue by that share, apply cohort margin, and you arrive at incremental contribution per channel.

We put together a full framework for that meeting in The CFO Budget-Defense Kit, including how to present ranges honestly when the CFO asks why your number differs from the platform's.

If you want a top-down cross-check, marketing mix modeling can also run on margin rather than revenue.

Getting the causal layer does not require a pixel, a data team, or an annual contract. You can see the full pricing breakdown and run your first read this week.

Key takeaways

  • ROAS measures revenue efficiency; POAS measures profit efficiency. With 2026 tariff-driven COGS inflation, the two rankings can point in opposite directions on the same account.
  • Compute contribution margin per order cohort using the SKU mix each campaign actually sells. Blended store margin hides thin-margin disasters.
  • Any POAS below 1.0 destroys value regardless of ROAS. In the worked example, a 4.1 ROAS campaign returned €0.74 of contribution per euro spent.
  • Platform pixels cannot see margin, and platforms grade their own homework. Keep POAS in a measurement layer you control.
  • Pair POAS with incrementality. Incremental contribution per channel is the number your CFO can actually budget against.

Further reading

Frequently asked questions

  • What does POAS stand for?
    POAS stands for profit on ad spend. It divides the contribution margin generated by attributed orders by the ad spend that generated them, instead of dividing revenue by spend the way ROAS does. A POAS above 1.0 means each euro of advertising returns more than a euro of contribution before fixed overhead, so the campaign adds value rather than just volume.
  • How is POAS different from ROAS?
    ROAS divides attributed revenue by ad spend and treats every euro of revenue as equal. POAS divides contribution margin by ad spend, so it accounts for COGS, tariffs, shipping, fees, returns, and discounts. Two campaigns with identical ROAS can have very different POAS if their SKU mixes carry different margins, which is common after tariff-driven cost inflation.
  • What costs go into contribution margin per order?
    Start with net revenue after discounts. Subtract landed COGS including tariff and duty lines, payment processing fees, pick and pack costs, any shipping subsidy, a provision for returns and refunds, and any affiliate commission or coupon cost on the order. What remains is the contribution margin your ad spend has to be measured against.
  • Can Google or Meta optimize toward profit instead of revenue?
    Partially. Both platforms accept custom conversion values, so you can pass a profit estimate instead of revenue and let value-based bidding chase it. That improves bidding but not measurement, because the platform still decides which conversions to claim. For an honest POAS figure, compute it outside the platform from order and cost data you control.
  • What is a good POAS?
    Anything above 1.0 means the campaign returns more contribution than it costs, before fixed overhead. Many practitioners treat 1.3 to 1.5 as the working floor for paid acquisition, leaving room for overhead and measurement error, and 2.0 or higher as healthy. The right threshold depends on your overhead structure and how much you trust your attribution.
  • Do I need POAS if my margins are similar across products?
    If every SKU sits within a few margin points, ROAS and POAS will rank campaigns almost identically, and ROAS is a fine proxy. POAS earns its keep when margins vary, which tariff-driven cost inflation has made the norm in most catalogs. Check your per-cohort margins first; if the spread is wide, revenue-based optimization is actively misleading you.

Go deeper: Causal attribution, explained.

Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.

Have an audience of ecommerce operators? Earn 20% recurring commission by recommending the €99 read.

Keep reading

Terms in this article

Browse the full glossary

Your platforms guess.
We run the math.

Upload a GA4 export and see what each channel caused, next to last-click, in 1–2 minutes. The read is yours to keep.

The free finding runs in your browser. Your file never leaves it. The full read is €99, refundable within 30 days, no questions asked. Prices exclude VAT.