Diagnosing When Meta-Reported ROAS Diverges From Blended POAS After Margin-Value Cutover

A field diagnostic for reconciling Meta's in-platform ROAS (now effectively POAS) against warehouse blended POAS — and deciding whether the gap is attribution loss or genuine auction drift.
Quick answer
After a margin-value cutover, Meta's reported ROAS is measuring POAS but still suffers iOS under-reporting, modeled-conversion inflation, and CAPI dedupe drift. Compare it to warehouse blended POAS over a 7-day window: if the gap is under ~10% it's attribution noise, 10-20% usually means modeled conversions or margin-feed lag, and above 20% points to real auction drift or a broken value feed.
Meta-Reported ROAS vs Blended POAS Divergence Diagnostic
A reconciliation procedure that decomposes the gap between Meta's in-platform ROAS number and warehouse blended POAS after switching Meta's conversion value from revenue to margin.
Once you push margin (not revenue) as the conversion value into Meta's Purchase event, the platform's "ROAS" column is arithmetically profit-on-ad-spend — but the number is still built from Meta's attribution model, modeled conversions, and deduplicated CAPI events, none of which your warehouse sees. Blended POAS, computed from order-level margin against total paid spend in your warehouse, is the truth line. The diagnostic tells you which of the two to act on, and separates three distinct causes of divergence: attribution loss (iOS opt-outs, modeled conversions), value-feed problems (margin lag, CAPI dedupe failures, refund blindness), and real auction drift (Meta actually buying worse traffic).
The failure mode this page fixes: you switch Meta's conversion value from revenue to margin, celebrate a cleaner bidding signal, and two weeks later the CFO asks why Meta's dashboard shows a 2.4 POAS while the warehouse shows 1.7. Both numbers are correct. They measure different things.
Why the two numbers disagree
Meta's reported POAS is a modeled attribution number: it counts conversions Meta claims credit for, values them using the margin figure you pushed in, and divides by spend on the Meta platform only. It sees the events that made it through iOS 14+ opt-outs, plus a modeled top-up for the ones it inferred.
Warehouse blended POAS is a full-population number: every order's realised margin from Shopify or your ERP, divided by every euro of paid spend across Meta, Google, TikTok and the rest. Different numerator, different denominator, different attribution logic — a persistent gap is the default state, not a bug.
Don't chase parity
A stable 10-15% gap between Meta reported POAS and warehouse blended POAS is normal after margin cutover. Chasing zero divergence usually means you're either over-crediting Meta in the warehouse view or blinding yourself to modeled-conversion inflation on the platform side.
How to read Meta's reported number
Once margin is your conversion value, treat Meta's "Purchase ROAS" column as reported POAS and log it daily against spend at ad-set level. See reading Meta's reported ROAS as POAS after margin cutover for the interpretation shift — the arithmetic is unchanged, but the decision thresholds are not.
Isolate two contamination sources before you trust it. First, modeled conversions: on low-volume campaigns Meta backfills events with modeled ones, which systematically inflates reported POAS. Second, CAPI + Pixel deduplication failures, which can double-count a subset of purchases and silently push the number 5-15% too high.
How to compute the warehouse counterpart
Pull order-level margin (revenue minus COGS minus discounts minus payment fees minus expected returns) for the same window Meta reports on, joined to Meta's click and view-through attribution export via order ID or hashed email. Aggregate to campaign or ad-set. This is your Meta-attributed warehouse POAS — the like-for-like comparison.
Then compute blended POAS: sum of realised margin across all orders divided by total paid spend across every channel. This is the number your MER and finance conversations should anchor on. Meta's reported POAS is a bidding signal; blended POAS is the P&L.
The refund blind spot
Meta never sees refunds. If your category runs 8-15% returns (apparel, footwear), Meta's reported POAS is structurally overstated by roughly that percentage. Subtract expected returns from margin in your warehouse view — see the return-adjusted POAS spoke for the deduction schedule.
Decision tree: attribution loss or auction drift?
Run the gap through four checks in order. (1) Margin feed lag: did COGS update in the last 7 days? Meta POAS trails warehouse POAS for 3-7 days after a COGS refresh — wait it out. (2) CAPI dedupe health: check event match quality and duplicate rate in Events Manager; anything above 3% duplicates explains most of the gap on its own.
(3) Modeled-conversion share: if a campaign has fewer than ~50 weekly conversions, modeled events dominate and reported POAS is unreliable. (4) Only after ruling out 1-3, treat the residual as either iOS opt-out under-reporting (Meta under-crediting itself) or genuine auction drift (Meta buying worse traffic). Isolating iOS under-reporting from auction drift is the follow-on procedure.
The 15% escalation threshold
A rolling 7-day gap above 15% between Meta reported POAS and warehouse-computed Meta POAS is the operational trigger to stop trusting Meta's bidding signal and switch to manual bid caps or a warehouse-fed conversion API. Below 15%, keep bidding to POAS on Meta and log the variance weekly.
The weekly variance review
Bake the reconciliation into a fixed weekly ritual — same day, same window, same aggregation level. The reconciling Meta POAS to warehouse blended POAS weekly variance review spoke details the exact table layout: campaign, spend, Meta reported POAS, warehouse Meta-attributed POAS, blended POAS, absolute gap, gap trend.
Which number you act on depends on campaign type. Prospecting with high volume: trust Meta's reported POAS for bid decisions, cross-check weekly. Retargeting and branded: trust warehouse — Meta's modeled conversions and dedupe issues dominate at low volume. When to trust Meta POAS vs warehouse POAS by campaign type is the operational rule book.
Frequently asked questions
Arithmetically yes — the column labelled "Purchase ROAS" is now (attributed margin) / (Meta spend), which is POAS by definition. But it's still filtered through Meta's attribution model, modeled conversions and CAPI dedupe, so it will not match warehouse-computed POAS even in a perfect setup.
A rolling 7-day gap of 5-15% is expected and stable. Under 5% usually means you're double-counting somewhere (dedupe failure or attributing warehouse orders to Meta too generously). Above 15% is the escalation threshold — see the 15% divergence rule.
Four common causes, in order of frequency: modeled conversions on low-volume campaigns, CAPI + Pixel duplicate events, no refund subtraction in Meta's view, and Meta over-attributing view-through conversions. Rule out the first three before assuming attribution inflation.
Almost always iOS opt-out under-reporting: Meta genuinely can't see conversions that opted out of ATT, so it under-credits itself. A secondary cause is margin feed lag — if you updated COGS recently, Meta trails the warehouse for 3-7 days while it catches up.
You can only bid to what Meta sees, so the practical answer is Meta's reported POAS with a calibration offset derived from the weekly warehouse reconciliation. If Meta consistently reports 15% high, set your target POAS 15% above your true profit-breakeven target.
The framework is identical but the failure modes are different. Google's Smart Bidding sees more conversions via consented first-party signals, so modeled-conversion inflation is smaller, but offline conversion uploads introduce their own lag. The reconciliation ritual transfers directly.
Weekly at ad-set level for active accounts, plus an immediate ad-hoc run after any COGS update, CAPI change, or pixel deploy. Daily reconciliation adds noise without signal — 7-day rolling windows smooth out weekend and modeled-conversion volatility.
Meta-attributed warehouse POAS uses Meta's click/view attribution on warehouse margin data — the like-for-like comparison to Meta's reported number. Blended POAS divides total realised margin by total paid spend across every channel — the P&L number used alongside MER (Marketing Efficiency Ratio).
Push gross margin (revenue minus COGS minus discounts) as the conversion value, then subtract an expected-returns percentage in your warehouse reconciliation. Trying to bake returns into the pushed value creates a lag problem, because Meta needs the value at conversion time — before returns are known.
When the 7-day gap exceeds 15% for two consecutive weeks and you've ruled out margin feed lag, CAPI dedupe, and modeled conversions. At that point, switch the campaign to manual bid caps informed by warehouse POAS, or migrate its conversion signal to a server-side, warehouse-fed CAPI stream.
Track CAC, channels, and funnel conversion in one place
Metricuno connects ad spend, funnel events, and revenue so you can see CAC by channel, cohort, and campaign — without stitching together five tools.