Return on ad spend, the single number paid-acquisition leads check first. Below 2× = unprofitable for most DTC margins.
At a glance
Return on ad spend, the headline efficiency number for paid acquisition. conversions_value ÷ ad_spend. A 4× ROAS means £1 of ad spend produced £4 of measured revenue. Below 2× is unprofitable for most DTC brands once you factor in COGS, fulfilment, and overhead.
| The formula | metrics.conversions_value ÷ (metrics.cost_micros ÷ 1,000,000). cost_micros is in account-currency micros (Google’s API quirk, divide by 1M to get currency units); conversions_value is already in currency units. The result is a unitless ratio. |
| What “spend” means | Gross media cost, before any agency markup or platform rebates. This is the figure you’re billed for. |
| What “conversions value” means | Revenue attributed to conversions tracked in your Google Ads account. NOT order revenue from the commerce platform, the two often differ. See Reconciling below for why. |
| Conversion attribution model | Whatever you’ve configured in Google Ads. Default for new accounts is Data-driven attribution (DDA). Older accounts default to Last click. Cross-channel attribution typically uses 30-day click + 1-day view, but is account-configurable. The model affects conversions_value directly: switch from Last-click to DDA and ROAS can move 15-25% overnight. |
| View-through conversions | Excluded from the primary conversions and conversions_value metrics. Google Ads splits “primary conversions” (counted in ROAS) from “all conversions” (which includes view-through). This card uses primary conversions, the conservative view. |
| Bot / invalid traffic | Google’s Invalid Click Filter removes detected bots and IVT before reporting. Cost and clicks are pre-filtered. Some IVT slips through, particularly on Search Partners and Display, expect a 2, 5% drag on ROAS from undetected non-human clicks. |
| Currency | Account currency (single, set at Google Ads account creation). Multi-currency advertisers should run separate accounts per currency, or accept the conversion-currency-mismatch noise. |
| Cross-account aggregation (MCC) | This card is per-customer-account. For an MCC manager view summed across child accounts, use Google Ads ROAS by Account (when present). |
| Time window | T/7D/30D vsP (default 30D vs the prior 30D). Real-time updates with up to 4-hour ingestion lag. |
| Alert trigger | < 2.0 OR drop > 25% vsP, whichever fires first. Drives sentiment_key: roas. |
| Roles | owner, marketing, finance |
Calculation
Calculated automatically from your Google Ads 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 UK fashion brand running Google Ads (Performance Max + Branded Search). The 30-day window covers 14 Mar 26 to 12 Apr 26.| Campaign | Spend | Conversions | Conv. value (Google’s view) | Campaign ROAS |
|---|---|---|---|---|
| Branded Search | £4,200 | 412 | £62,400 | 14.86× |
| Performance Max (PMax) | £18,400 | 482 | £74,200 | 4.03× |
| Shopping (legacy) | £3,600 | 88 | £8,400 | 2.33× |
| Display Remarketing | £1,200 | 14 | £2,100 | 1.75× |
| Total (this card) | £27,400 | 996 | £147,100 | 5.37× |
- The headline 5.37× hides huge per-campaign variance. Branded Search at 14.86× is largely free revenue (people searching your brand name were buying anyway). Display Remarketing at 1.75× is unprofitable. The Hero ROAS card is useful as a directional read but Google Ads ROAS by Campaign is what drives daily decisions.
- Branded Search inflates everything. If you exclude branded keywords, the “true acquisition” ROAS drops to about 3.4×. Most agencies reporting ROAS to clients quietly include branded; for honest reads exclude it.
- Shopify-side revenue might be £150-180k for the same window. The £147k Google-attributed conversions value is GA4-fed, so it inherits the GA4 tracking gap (10, 25%). Real ROAS, comparing ad spend to commerce-platform attributed revenue, is probably 6, 7×, depending on multi-touch attribution. Don’t quote the Google number to the CFO without the gap caveat.
- The 30-day prior window had Spend £24,800, ROAS 5.62×. Both spend and ROAS rose modestly; that’s healthy expansion (more spend, ROAS held). A spend rise with ROAS falling is the warning shape: you’re scaling into less-efficient inventory.
- ROAS up + spend up = healthy scaling.
- ROAS flat + spend down = budget cut without channel deterioration.
- ROAS up + spend down = pulled back wisely from low-quality inventory.
- ROAS down + spend up = scaling beyond the efficient frontier (most common cause of an alert).
- ROAS down + spend flat = something changed in attribution, conversions, or competitive landscape. Investigate first, don’t immediately cut spend.
Sibling cards merchants should reference together
| Card | Why pair it with ROAS |
|---|---|
| Google Ads Spend | The denominator. ROAS up + spend up is healthy scaling; ROAS up + spend down is unhealthy retreat. |
| Google Ads Conversions Value | The numerator. Tells you whether ROAS moved on cost-side or revenue-side. |
| Google Ads ROAS by Campaign | Headline ROAS hides per-campaign variance. Open this card before making decisions. |
| Google Ads ROAS Trend | Daily series. ROAS is volatile day-to-day; the 7-day rolling is the useful read. |
| Google Ads CPA | Cost per acquisition. ROAS-blind CPA can mislead because cheap conversions can also be tiny conversions. |
| Google Ads CTR | Click-through rate. CTR drops often precede ROAS drops by 1, 2 weeks (creative fatigue). |
| Google Ads Clicks vs Conversions | The broken-tracking canary. Clicks rising while conversions stagnate signals tag-fire failure. ROAS will look like it dropped, but the cause is measurement, not performance. |
| GA4 Revenue by Channel | The independent attribution check on Google Ads’ self-reported conversions_value. |
| Shopify Total Revenue | The truth side. Real ROAS for the business uses commerce-platform revenue, not Google’s measured value. |
Reconciling against the vendor’s own dashboard
Where to look in Google Ads: Google Ads → Campaigns → Columns → Conv. value / cost. The headline figure should match this card to within 1, 2% (sub-percent drift comes from real-time event-ingestion lag, both views catch up on the next sync). Other Google Ads views that look like the same number but aren’t:- Reports → Predefined → Performance: same number but different breakdown.
- All conversions / Value: includes view-through conversions. This card uses primary conversions only.
- Search Lost IS (rank): a separate metric, not ROAS.
| Reason | Direction of divergence |
|---|---|
| Real-time event-ingestion lag. Google Ads conversions can ingest with 1, 4-hour delay (longer for cross-device). Vortex IQ reads the snapshot. | Marginal on the most recent 24h |
| Attribution window changes. If the merchant changed the attribution model mid-window, Google Ads UI shows the current model retroactively; Vortex IQ does the same. No drift. | None |
| Currency. Both this card and Google Ads UI use account currency; consistent. | None |
conversions_value Google Ads reports is whatever the conversion-tracking pixel sent. That value flows from your tag setup:
- If the pixel sends order revenue with tax, ROAS is on a tax-inclusive basis.
- If the pixel sends only first-purchase value (a common cap to prevent loyalty programs inflating ROAS), ROAS understates returning-customer revenue.
- If the pixel sends modelled value (Google’s enhanced conversions modelling), ROAS includes some Google-imputed revenue.
shopify.total_revenue attributed to Google Ads sources by Google Ads spend. The two figures should be within 30%; bigger gaps usually mean (a) commerce-platform attribution disagrees with Google Ads attribution (different windows, different last-touch logic) or (b) the conversion pixel is misconfigured.
Cross-connector reconciliation:
This card is Google-Ads only. There is no direct counterpart on other connectors, but the closest reconciliations are:
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
google_analytics.ga_revenue_trend | GA4 revenue × (Google Ads channel share) ≈ Google Ads conversions_value | GA4 attributes per session; Google Ads attributes per ad click. Different attribution timing. |
shopify.total_revenue | (Google Ads conversions_value) ≤ Shopify Total Revenue | The Google number is a subset of total revenue (only paid-acquisition orders). |
| Klaviyo Email-Attributed Revenue | No direct relationship | Different channels, different attribution windows. Don’t compare. |
Known limitations / merchant FAQs
My ROAS is 6× and Google Ads says I’m profitable, but my P&L disagrees. Google’sconversions_value is gross revenue from purchases attributed to ad clicks. Your P&L profitability also factors in: COGS (typically 30, 50% of revenue), fulfilment cost (5, 15%), payment processing (~3%), returns (5, 15%), and overhead. A 6× ROAS on 60% gross margin and 10% returns gives you a contribution margin of roughly 1.4×, marginally profitable. The rule of thumb: divide ROAS by 2 to get a rough “true contribution multiple” for typical DTC margins.
Why is my Branded Search ROAS so high (15×+)?
People searching for your exact brand name were going to buy anyway. Branded Search captures ~70, 90% of that intent for relatively cheap clicks. Branded ROAS is a poor measure of paid-acquisition health, you’re not really acquiring those customers, you’re paying Google to defend them. The “true acquisition” ROAS is the ROAS on non-branded campaigns only.
My ROAS dropped 30% overnight, what should I check first?
In order of likelihood: (1) Conversion-tracking regression. Check Clicks vs Conversions, if clicks held but conversions cratered, the tag broke. (2) Attribution-model change. Check Google Ads → Tools → Attribution; someone may have switched models. (3) Promo-period rollover. ROAS during a 30%-off campaign rolls into “normal” the day after; sales attribution catches up unevenly. (4) Competitive bidding. Check CPC trend for sudden spikes (a competitor entered the auction). (5) Broken landing page. If your AOV dropped sharply, your conversion path is broken.
Should I optimise for ROAS or for Spend × ROAS (revenue)?
Depends on your phase. If you’re profitability-constrained (need to break even on each marketing dollar), optimise for ROAS. If you’re growth-focused with profitable unit economics, optimise for absolute conversion volume; ROAS will naturally compress as you scale into less-efficient inventory but total profit grows. The right answer is rarely “highest ROAS”; usually it’s “highest ROAS subject to spending the budget”.
My Performance Max campaign claims 8× ROAS but I can’t see which ads or audiences are working, why?
PMax is intentionally opaque, Google’s optimiser shifts spend across Search, Display, YouTube, Discover, and Gmail without exposing the per-channel mix. The 8× ROAS is the headline; the breakdown is unavailable. This is one of the trade-offs you accept with PMax. Use Google Ads PMax Diagnostics when available, or run separate non-PMax campaigns alongside for visibility.
Can I trust the “today” ROAS?
Less than the rolling 7-day. ROAS for today is built from incomplete data, conversions take 1, 4 hours to ingest, and view-through windows accumulate over multiple days. The 7-day rolling average is the most actionable. Don’t restructure campaigns based on a single day’s ROAS.
My multi-currency setup, how does ROAS work?
Google Ads accounts are single-currency by design. Multi-currency advertisers run separate accounts per currency. Each account reports ROAS in its own currency. This card is per-account.
Why is my GA4 channel revenue lower than the Google Ads conversions_value?
Three reasons: (1) Google Ads counts conversions on click-through within the attribution window (default 30-day click + 1-day view); GA4 typically uses last-non-direct click which can credit a different channel for the same conversion. (2) Google Ads applies enhanced conversions modelling to fill in tracking gaps; GA4 reports raw measurements (with optional Consent Mode v2 modelling). (3) Different sampling and aggregation. Google Ads is usually higher than GA4 by 10, 20%. Both are subsets of the actual commerce-platform revenue.