> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vortexiq.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# ROAS, Google Ads

> Return on ad spend, the single number paid-acquisition leads check first. Below 2× = unprofitable for most DTC margins. How to read it, why it matters, an...

**Metrics type:** [Key Metrics](/nerve-centre/overview#metrics-types-explained)  •  **Category:** [Ad Platform](/nerve-centre/connectors#connectors-by-type)

> 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-platform 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](/nerve-centre/google_ads/gads_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×**     |

What's interesting:

1. **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 Key Metrics ROAS card is useful as a directional read but [Google Ads ROAS by Campaign](/nerve-centre/kpi-cards/google-ads/roas-by-campaign) is what drives daily decisions.
2. **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.
3. **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.**
4. **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.

Quick sanity tests:

* 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](/nerve-centre/google_ads/gads_spend)                                      | The denominator. ROAS up + spend up is healthy scaling; ROAS up + spend down is unhealthy retreat.                                                                            |
| [Google Ads Conversions Value](/nerve-centre/google_ads/gads_conversions_value)              | The numerator. Tells you whether ROAS moved on cost-side or revenue-side.                                                                                                     |
| [Google Ads ROAS by Campaign](/nerve-centre/kpi-cards/google-ads/roas-by-campaign)           | Headline ROAS hides per-campaign variance. **Open this card before making decisions.**                                                                                        |
| [Google Ads ROAS Trend](/nerve-centre/kpi-cards/google-ads/roas-trend)                       | Daily series. ROAS is volatile day-to-day; the 7-day rolling is the useful read.                                                                                              |
| [Google Ads CPA](/nerve-centre/kpi-cards/google-ads/cpa-trend)                               | Cost per acquisition. ROAS-blind CPA can mislead because cheap conversions can also be tiny conversions.                                                                      |
| [Google Ads CTR](/nerve-centre/google_ads/gads_ctr)                                          | Click-through rate. CTR drops often precede ROAS drops by 1, 2 weeks (creative fatigue).                                                                                      |
| [Google Ads Clicks vs Conversions](/nerve-centre/kpi-cards/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](/nerve-centre/kpi-cards/google-analytics/revenue-by-channel)        | The independent attribution check on Google Ads' self-reported `conversions_value`.                                                                                           |
| [Shopify Total Revenue](/nerve-centre/kpi-cards/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](https://ads.google.com/aw/overview). 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.

**Why our number may legitimately differ from Google Ads itself (rare):**

| 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                            |

**Why the BUSINESS ROAS often differs from this card (the important one):**

The `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.

For the *true business ROAS* (the one your CFO cares about), divide [`shopify.total_revenue`](/nerve-centre/kpi-cards/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`](/nerve-centre/kpi-cards/google-analytics/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`](/nerve-centre/kpi-cards/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](/nerve-centre/kpi-cards/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's `conversions_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](/nerve-centre/kpi-cards/google-ads/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](/nerve-centre/google_ads/gads_avg_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](/nerve-centre/google_ads/gads_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.

***

### Tracked live in Vortex IQ Nerve Centre

*ROAS* is one of hundreds of KPI pulses Vortex IQ tracks across Google Ads 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](https://app.vortexiq.ai/login) or [book a demo](https://www.vortexiq.ai/contact-us) to see this metric running on your own data.
