Skip to main content
Card class: HeroCategory: Ad Platform

At a glance

Return on ad spend on Criteo: SUM(metrics.salesPostView + metrics.salesPostClick) / SUM(metrics.spend) at the advertiser-account level via Criteo Management API v2025-01. Dimensionless ratio, e.g. 7.8 means €1 spent generated €7.80 of Criteo-attributed revenue. Criteo’s headline ROAS runs structurally higher than Meta or Google Ads ROAS for the same business because Criteo’s 7-day post-view attribution claims credit Meta and Google would not; expect 1.5 to 2× higher Criteo-claimed ROAS than the equivalent on other platforms.
What it countsRatio of Criteo-attributed sales (post-click + post-view) to Criteo media spend, summed across every active campaign in the window. Lower-funnel retargeting drives most of the headline number; Commerce Media and prospecting drag it down.
Cost basisSpend is mostly CPC-priced; revenue is attributed via Criteo’s 30-day click + 7-day view default. The card divides one by the other.
CurrencySingle advertiser-account currency in numerator and denominator. ROAS is dimensionless; FX doesn’t apply.
Conversion attribution30-day post-click + 7-day post-view default, configurable. Generous attribution inflates the numerator.
Attribution window30D click + 7D view. Materially generous vs Meta’s default 7D click + 1D view.
Bot / invalid trafficFiltered pre-billing on the spend side; revenue side filters fraud transactions Criteo’s models flag. <1% impact typical.
iOS 14.5+ ATT impact on the cardSevere. Pre-ATT, healthy retargeting accounts ran 10 to 14× ROAS; post-ATT the same accounts run 6 to 9× because Criteo can’t measure or target the iOS portion of the audience. The headline compresses without underlying performance changing.
Healthy band by campaign typeLower-funnel retargeting: 7 to 11×. Mid-funnel consideration: 4 to 7×. Commerce Media prospecting: 2 to 4×. Sponsored-product retail-media: 4 to 8×. Account blended: 6 to 10× depending on mix.
Time window30D vsP (default). Less noisy than 7D for ROAS reads; revenue lookback settles fully at day 8.
Alert trigger<2 (warn), <1 (critical). Warn at 2× because retargeting below 2× is structurally broken (audience match degraded, feed problem, attribution tag broken). Critical at 1× because every euro spent loses money.
Sentiment key{'type': 'gauge', 'thresholds': {'good': 4, 'warn': 2}}
Rolesowner, marketing, finance

Calculation

Calculated automatically from your Criteo data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.

Worked example

A French electronics DTC retailer running Criteo for catalogue retargeting + Commerce Media. The 30-day window is 02 Apr 26 to 01 May 26. Account currency EUR. Conversions API live for 11 months; 30-day click + 7-day view attribution.
CampaignSpend (€)Attributed revenue (€)ROASvsP (prior 30D)
Lower-funnel retargeting (PDP visitors, 30d)14,200138,5009.8×10.4× last period
Mid-funnel consideration (basket abandoners)6,80051,2007.5×7.1× last period
Commerce Media (publisher prospecting)4,40012,4002.8×3.1× last period
Sponsored product (retail media)1,6007,8004.9×4.6× last period
Account blended (this card)€27,000€209,9007.8×8.1× last period
Reading this:
  1. Blended ROAS 7.8× sits squarely in the 6 to 10× healthy band. The dip from 8.1× last period (down 4%) is within ROAS noise; do not act on it. Wait for the alert to fire (>2σ from rolling baseline) before restructuring.
  2. Lower-funnel retargeting at 9.8× is the workhorse, and it dropped from 10.4× last period. Three things to check before treating this as degradation: (a) feed-quality stable in Criteo Feed Manager? (b) bid-strategy unchanged? (c) iOS share of traffic stable? If all three are stable and ROAS continues drifting down for 14+ days, the audience is saturating and you need creative refresh or audience expansion.
  3. Commerce Media at 2.8× is normal for prospecting but it’s pulling the blended ROAS down. If finance is asking why blended ROAS isn’t 9× like retargeting, the answer is “Commerce Media is doing different work, prospecting cold audiences at 2 to 4× ROAS is the structural ceiling for that line item type.”
  4. The platform-claimed 7.8× ROAS implies €1.34 incremental revenue per €1 spend after the standard 30 to 50% over-claim discount. Discount calculation: 7.8× × 0.40 = 3.1× incremental ROAS, then subtract 1× to get marginal contribution after recovering the spend, that’s 2.1× contribution. For a board read, don’t headline 7.8×; headline 3 to 4× incremental.
  5. Compared to the same merchant’s Meta retargeting at 4.5× and Google Brand at 18× ROAS, Criteo lands between the two. This is the right ordering: Google Brand is intent-capture (highest ROAS, lowest incremental), Criteo retargeting is warm-audience re-engagement (mid ROAS, mid incremental), Meta retargeting is broader-reach with similar incremental value. Compare ROAS within attribution-model peers, never across.
When ROAS moves, the diagnostic order:
  • Drop above 20% in 7 days: feed health first (60% of cases), CAPI health second (20%), bid-strategy regression third (15%), seasonal cliff (5%).
  • Drop below 5× on retargeting line items: audience saturation or iOS / Safari ITP regression.
  • Spike above 12× on retargeting: usually audience overlap with email or first-party-list traffic; double-check audience pool definitions.
  • Steady 10% drift down over 30 days: creative fatigue. Refresh dynamic-ad creative, rotate hero SKU images, A/B test the catalogue-feed image-format options.
  • Spike or drop on a single day: attribution lookback, ignore. Wait 7 days for view-through to settle.
Quick sanity tests:
  • ROAS rising + spend rising + revenue rising = healthy expansion of the efficient frontier.
  • ROAS rising + spend falling = optimiser pulled back to the highest-ROAS auctions; volume is suffering. Expand bids or audiences.
  • ROAS falling + spend rising = scaling beyond the efficient frontier; cap budget.
  • ROAS falling + spend falling = underlying performance degraded (feed, audience, attribution); diagnose.

Sibling cards merchants should reference together

ROAS is a ratio; without the inputs and the cross-channel context, a single ROAS number is easy to misread. Pair it with these:
CardWhy pair it with Criteo ROASWhat the combination tells you
Total SpendThe denominator.A ROAS rise driven by spend cut is not the same as a ROAS rise driven by revenue lift.
Total RevenueThe numerator.Spots the over-claim relative to commerce-platform truth.
Wasted SpendDrag on the denominator.Pausing zero-conversion line items mechanically lifts ROAS.
Conversion LagCritical for retargeting ROAS reads.Today’s ROAS is structurally low; settle is at day 8.
Conversion Rate TrendThe conversion engine that drives revenue.If CR fell, ROAS will follow within days.
Spend by CampaignPer-line-item ROAS distribution.Blended ROAS hides huge variance, retargeting at 10× and prospecting at 2×.
GA4 Source ROASLast-click reconciliation.Quantifies Criteo’s view-through over-claim.
Shopify / BC / Adobe Total RevenueCommerce-platform UTM-tagged Criteo revenue.Truth-side ROAS for finance reporting.
Meta ROASCross-platform peer.Different attribution, different audience; compare incremental ROAS only, not headline.
Google Ads ROASDifferent funnel position.Google captures intent; Criteo captures consideration; non-overlapping work.

Reconciling against the vendor’s own dashboard

Where to look in Criteo’s own dashboard:
Criteo Management Centre → Reporting → Performance Report → “ROAS” (filter to the same advertiser-account and date range used in this card).
The “ROAS” column in the Performance Report is the same ratio this card computes. The Home tile shows the same headline. For the cleanest sanity check, pull the Custom Report grouped by day, and verify daily Sales / Spend matches this card’s per-day reads. Reconciliation is exact within sub-percent rounding once the 7-day view-through lookback has settled (allow 8 days). Why our number may legitimately differ from Criteo:
ReasonDirectionWhy
View-through lookback settleOurs lower for recent daysCriteo’s 7-day view-through means yesterday’s revenue (numerator) revises upward over 7 days. Today’s ROAS reads structurally low; settle is at day 8.
Attribution-window mismatchEither directionIf the merchant changed attribution settings mid-window, historical days are restated by Criteo. Our card pulls fresh on each refresh.
Time zoneBoundary days offCriteo uses advertiser-account time zone; this card uses UTC. For 30D windows the gap averages out; for “today” or “yesterday” the boundary can shift the figure.
Conversions API outagesOurs lower if CAPI is downCAPI failures collapse the numerator; spend (denominator) keeps flowing. ROAS reads artificially low until the feed is restored.
CurrencyNone expectedROAS is dimensionless.
Spend post-credit adjustmentsOurs marginally lowerCriteo’s IVT and catalogue-rejection credits restate spend downward; the corrected spend (lower) lifts ROAS slightly.
Cross-connector reconciliation: ROAS is the most-misused cross-platform metric in paid media. Criteo ROAS is not comparable to Meta ROAS or Google Ads ROAS as headline numbers.
SourceExpected relationshipWhat causes legitimate divergence
facebook_ads.fac_roasNOT directly comparable. Meta default is 7D click + 1D view; Criteo is 30D click + 7D view.Criteo will read 1.5 to 2× higher than Meta on the same business. Compare incremental ROAS (via Conversion Lift studies) for apples-to-apples.
google_ads.gads_roasNOT directly comparable. Google is intent-driven (search/shopping); Criteo is consideration-driven retargeting.Google Brand often lands at 15 to 30× ROAS; Criteo at 6 to 10×. Different funnel positions, both can be healthy.
adroll.adr_roasCross-retargeting peer.Most directly comparable retargeting platform. Criteo typically reads 1.0 to 1.3× higher than AdRoll on the same business due to deeper view-through window.
Shopify / BC / Adobe ROASCommerce-platform truth-side ROAS (UTM-tagged Criteo revenue ÷ Criteo spend).Truth-side ROAS will be 60 to 80% of Criteo-claimed; the gap is view-through over-claim. Use truth-side for finance, claimed for in-platform optimisation.
google_analytics.ga_revenue_by_sourceGA4 last-click ROAS for Criteo source/medium ÷ Criteo spend.Lower bound of true ROAS; ignores all view-through.

Known limitations / merchant FAQs

Why is my Criteo ROAS 9× when my finance team shows 4×? The classic gap. Criteo claims revenue via 30-day click + 7-day view-through; finance reconciles against commerce-platform UTM-tagged revenue (last-click only). The gap is the view-through tax plus channel-overlap credit. Both numbers are correct for their purpose: 9× is the in-platform optimisation signal Criteo’s algorithm uses; 4× is the truth-side revenue attribution your CFO should report to the board. Run a Criteo Conversion Lift test annually to calibrate your discount factor. My ROAS dropped from 10× to 6× over 30 days, what happened? On Criteo specifically, the diagnostic order is:
  1. Catalogue feed health (40% of cases). Top SKU out-of-stock, image-rejection, or price-mismatch suppression. Dynamic ads stop rendering on the highest-converting products; ROAS collapses while spend pacing holds.
  2. iOS / Safari attribution stress (25% of cases). ATT opt-in rate drifted lower or Safari ITP bumped up enforcement; less measurable conversion against the same spend.
  3. Audience saturation (15% of cases). Frequency cap rising, click-through rate falling. Refresh creative; widen audience.
  4. Bid strategy regression (10% of cases). Auto-bidder hit a CPA target and pulled back; ROAS holds but volume collapses, which can read as a ROAS issue if you don’t separate volume and rate.
  5. Conversions API outage (5% of cases). Server-side feed broken; iOS conversions disappear; ROAS reads artificially low until restored.
  6. Seasonal cliff (5% of cases). Post-Cyber-Week, post-Easter weeks routinely drop 20 to 35% on retargeting.
What’s a healthy ROAS for Criteo? Depends on the line item type. Lower-funnel retargeting: 7 to 11×. Mid-funnel consideration: 4 to 7×. Commerce Media prospecting: 2 to 4×. Sponsored-product retail-media: 4 to 8×. Account blended typically 6 to 10× depending on mix. Below 5× on retargeting is a problem; below 2× is structurally broken (audience match degraded, feed problem, or attribution tag broken). Above 14× on retargeting often means audience leakage from email or first-party-list pools. Should I scale spend on a high-ROAS line item? Yes, with two caveats. (1) Headroom check: Criteo’s audience size estimator should show at least 50% unused frequency capacity; if frequency is already at cap, more spend just inflates impressions on the same users without lifting conversion. (2) Marginal vs average: scaling typically compresses ROAS because new spend bids into less efficient inventory. Plan for 15 to 25% ROAS compression when scaling 50%+. If marginal ROAS still beats your break-even, scale; otherwise hold. My ROAS shows 0× today, what’s wrong? Most likely cause: today’s revenue hasn’t ingested yet. Criteo Management API has a 2 to 4 hour lag and the 7-day view-through lookback means today’s number is structurally low. Today’s ROAS will rise over the next 7 days as conversions backfill. Yesterday is partially reliable; the 7-day rolling and 30D vsP windows are the right reads for in-week decisions. My retargeting ROAS is 18×, am I doing something right or wrong? Probably wrong, in a specific way. Above 14× on retargeting almost always means audience overlap with first-party-list traffic (email subscribers, recent purchasers) who would convert anyway. Audit your audience pool definitions in Criteo Management Centre → Audiences. The line item is taking credit for revenue that organic / email would have driven; incrementality is probably 20 to 30% of claimed, well below normal retargeting incrementality of 30 to 55%. Tightening audience exclusions (carve out users who opened email in the last 7 days) typically drops claimed ROAS to 10 to 12× but lifts incremental ROAS by exposing only truly retargetable users. How does Commerce Yield (managed bidding) change my ROAS read? Commerce Yield optimises for ROAS against your CPA target, so it tends to push the headline number up by 15 to 30%. This is a real efficiency gain, but it comes with two trade-offs: (1) volume volatility is higher (the bidder front-loads spend on high-conversion-probability days, leading to up-and-down daily reads), and (2) the bidder may sacrifice volume to hit ROAS, leaving budget unspent if your target is too aggressive. Calibrate the CPA target against marginal ROAS, not average, to avoid this trap. Can I trust ROAS for budget allocation across Criteo and Meta? Not as headline numbers. Criteo’s claimed ROAS is structurally 1.5 to 2× higher than Meta’s on the same business due to attribution-window difference. The right cross-platform allocation read is incremental ROAS (from Conversion Lift studies on each platform) or commerce-platform truth-side ROAS (UTM-tagged revenue ÷ platform spend) which uses a single attribution model. Allocate budget on the truth-side or incremental, not on platform-claimed. Why does my Criteo ROAS spike on weekends? Two normal causes: (1) Spend caps often run lower on weekends (deliberate or by-design), so the same conversion volume against lower spend lifts ROAS. (2) Weekend shopping behaviour is more impulse-driven; conversion rates on retargeted users run 15 to 30% higher than weekdays on apparel and electronics. The lift is real but small; don’t read a single weekend’s ROAS as a structural change.

Tracked live in Vortex IQ Nerve Centre

ROAS is one of hundreds of KPI pulses Vortex IQ tracks across Criteo and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English. Start for free or book a demo to see this metric running on your own data.