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.8means €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 counts | Ratio 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 basis | Spend is mostly CPC-priced; revenue is attributed via Criteo’s 30-day click + 7-day view default. The card divides one by the other. |
| Currency | Single advertiser-account currency in numerator and denominator. ROAS is dimensionless; FX doesn’t apply. |
| Conversion attribution | 30-day post-click + 7-day post-view default, configurable. Generous attribution inflates the numerator. |
| Attribution window | 30D click + 7D view. Materially generous vs Meta’s default 7D click + 1D view. |
| Bot / invalid traffic | Filtered 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 card | Severe. 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 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: 6 to 10× depending on mix. |
| Time window | 30D 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}} |
| Roles | owner, 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.| Campaign | Spend (€) | Attributed revenue (€) | ROAS | vsP (prior 30D) |
|---|---|---|---|---|
| Lower-funnel retargeting (PDP visitors, 30d) | 14,200 | 138,500 | 9.8× | 10.4× last period |
| Mid-funnel consideration (basket abandoners) | 6,800 | 51,200 | 7.5× | 7.1× last period |
| Commerce Media (publisher prospecting) | 4,400 | 12,400 | 2.8× | 3.1× last period |
| Sponsored product (retail media) | 1,600 | 7,800 | 4.9× | 4.6× last period |
| Account blended (this card) | €27,000 | €209,900 | 7.8× | 8.1× last period |
- 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.
- 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.
- 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.”
- 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.
- 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.
- 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.
- 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:| Card | Why pair it with Criteo ROAS | What the combination tells you |
|---|---|---|
| Total Spend | The denominator. | A ROAS rise driven by spend cut is not the same as a ROAS rise driven by revenue lift. |
| Total Revenue | The numerator. | Spots the over-claim relative to commerce-platform truth. |
| Wasted Spend | Drag on the denominator. | Pausing zero-conversion line items mechanically lifts ROAS. |
| Conversion Lag | Critical for retargeting ROAS reads. | Today’s ROAS is structurally low; settle is at day 8. |
| Conversion Rate Trend | The conversion engine that drives revenue. | If CR fell, ROAS will follow within days. |
| Spend by Campaign | Per-line-item ROAS distribution. | Blended ROAS hides huge variance, retargeting at 10× and prospecting at 2×. |
| GA4 Source ROAS | Last-click reconciliation. | Quantifies Criteo’s view-through over-claim. |
| Shopify / BC / Adobe Total Revenue | Commerce-platform UTM-tagged Criteo revenue. | Truth-side ROAS for finance reporting. |
| Meta ROAS | Cross-platform peer. | Different attribution, different audience; compare incremental ROAS only, not headline. |
| Google Ads ROAS | Different 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:
| Reason | Direction | Why |
|---|---|---|
| View-through lookback settle | Ours lower for recent days | Criteo’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 mismatch | Either direction | If the merchant changed attribution settings mid-window, historical days are restated by Criteo. Our card pulls fresh on each refresh. |
| Time zone | Boundary days off | Criteo 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 outages | Ours lower if CAPI is down | CAPI failures collapse the numerator; spend (denominator) keeps flowing. ROAS reads artificially low until the feed is restored. |
| Currency | None expected | ROAS is dimensionless. |
| Spend post-credit adjustments | Ours marginally lower | Criteo’s IVT and catalogue-rejection credits restate spend downward; the corrected spend (lower) lifts ROAS slightly. |
| Source | Expected relationship | What causes legitimate divergence |
|---|---|---|
facebook_ads.fac_roas | NOT 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_roas | NOT 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_roas | Cross-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 ROAS | Commerce-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_source | GA4 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:- 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.
- 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.
- Audience saturation (15% of cases). Frequency cap rising, click-through rate falling. Refresh creative; widen audience.
- 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.
- Conversions API outage (5% of cases). Server-side feed broken; iOS conversions disappear; ROAS reads artificially low until restored.
- Seasonal cliff (5% of cases). Post-Cyber-Week, post-Easter weeks routinely drop 20 to 35% on retargeting.