Skip to main content
Card class: HeroCategory: Ad Platform
First number to ping when the ad team’s morning is going to be bad.

At a glance

Real-time alert when ROAS drops sharply against a same-day-of-week baseline. The first ping when the ad team’s morning is going to be bad. Important: a ROAS drop alert is not always a real performance problem; it is often a measurement break. Read this with Conversion Drop and Clicks vs Conversions before acting.
The formulatoday.ROAS vs prior_7D_same_DOW.ROAS - 1, where ROAS = conversions_value / (cost_micros / 1,000,000). Compares today’s ROAS against the average of the same day-of-week over the prior 7 days. Alert fires if drop > 25%.
GAQL resource + metricFROM customer with segments.date. Fields: metrics.cost_micros, metrics.conversions_value.
Account currency (single by design)Account currency from customer.currency_code. Both numerator and denominator are in account currency, so ROAS is unitless and currency-comparable across accounts.
Conversion attribution model (configurable)Whatever you have set in Google Ads (Tools > Attribution). DDA is default for new accounts, Last click for older. Critical: a model switch can drop ROAS 15-25% overnight, and this alert will fire spuriously. Always check Tools > Attribution before acting on the alert.
View-through inclusion (excluded by default)Uses primary conversions_value (not all-conversions value). For Display and YouTube campaigns, primary-only ROAS is materially lower than all-conversions ROAS; expect this alert to fire more often on those campaign types.
Bot / IVT filterGoogle’s Invalid Click Filter applies before reporting. Residual 2-5% IVT slips through. A bot-traffic surge inflates spend without conversions, dragging ROAS, and this alert will catch it (correctly), but the right fix is bot-filtering, not pausing campaigns.
Micros conversioncost_micros divided by 1,000,000. conversions_value is already in currency units.
Real-time vs ingestion lagReal-time alert. Runs hourly. Suppressed before 14:00 local to avoid morning-incomplete-data false positives. Conversion data has 1-4 hour ingestion lag, so today’s ROAS is incomplete until evening.
MCC aggregationPer child account. MCC managers see one alert per affected account, not summed across children.
Time windowRT (real-time). Comparison baseline is prior 7-day same-day-of-week.
Alert triggerROAS drop > 25% vs prior 7D same-DOW. Drives sentiment_key: roas.
Rolesowner, 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. Tuesday 14 Apr 26, 18:00 local. The alert fires.
DayDay of weekSpendConv. valueROASNotes
Tue 7 Apr 26Tue£880£4,4005.00xnormal
Tue (prior 7D rolling avg)Tue£870£4,3505.00xbaseline
Tue 14 Apr 26 (today)Tue£905£1,8102.00x-60% vs baseline
A common diagnostic decomposition: did spend rise, did conversions fall, did conv. value per conversion fall, or did all three?
MetricTodaySame-DOW avgDeltaReads as
Spend£905£870+4%normal
Clicks1,1241,080+4%normal
Conversions1436-61%dropped sharply
Conv. value per conv.£129£121+7%normal
Conv. rate (conv/click)1.25%3.33%-62%dropped sharply
ROAS2.00x5.00x-60%alert fires
What this scenario tells the analyst (the playbook):
  1. The alert is screaming, but spend and clicks are normal. That immediately rules out auction-side issues (CPC spike, competitor entry, budget cap kicked in). The cause is conversion-side.
  2. Step 1: Pixel check. Run a £1 test order on the brand site. Watch Tag Assistant for the conversion fire. Most common cause of a 60% ROAS drop with stable spend: a developer pushed a code change to the checkout success page yesterday and broke the Google Ads conversion tag. Fix the tag, conversions resume.
  3. Step 2: GA4 cross-check. Look at GA4 Realtime > Conversions. If GA4 also shows the drop, the conversion really broke. If GA4 looks normal, only the Google Ads pixel broke.
  4. Step 3: Commerce platform check. Look at Shopify or BigCommerce orders for the same window. If orders held normal volume, only Google’s measurement broke; revenue is fine. If orders also dropped, traffic is converting in real life too, this is a real performance issue.
  5. Step 4: Attribution model check. Tools > Attribution. If someone switched DDA -> Last click overnight, that alone drops ROAS 15-25%. Real conversions, just credited differently.
  6. Don’t pause campaigns until steps 1-4 clear. A spurious pause based on broken measurement is a worse outcome than a few hours of false-alarm ROAS, you’d kick yourself for handing share to competitors.
Other ROAS-drop patterns and what they mean:
  • Spend +30%, conversions +10%, ROAS -15%: scaling beyond efficient frontier. Expected when you raise budgets aggressively. Decision is whether the absolute revenue gain is worth the ROAS dilution.
  • Spend flat, conversions flat, conv. value per conv. -40%: discounting too hard, or AOV crashed (smaller orders). Not a tracking issue. Check promo activity.
  • Spend flat, conversions -50%, conv. value per conv. flat: classic tracking break. See playbook above.
  • Spend +50%, conversions -10%, ROAS -40%: a CPC spike (auction shift) + conversion-rate decline. Multi-cause. Check competitor activity, landing-page changes, and creative fatigue together.
  • Today is Monday after a sale ended Sunday: expected, this is the post-promo regression. Don’t act on a single-day Monday alert if the prior weekend had a sale.

Sibling cards merchants should reference together

CardWhy pair it with ROAS Drop Alert
Google Ads Conversion DropThe drilldown. If the conversion drop alert ALSO fired, the cause is conversion-side. If it didn’t, the cause is conversion-value-side (smaller orders) or spend-side (CPC spike).
Google Ads Clicks vs ConversionsThe 30-second triage. Clicks held + conversions dropped = tag break. Clicks dropped too = auction or demand.
Google Ads ROASThe headline this alert tracks. The hero card shows period totals; this alert flags day-level shifts.
Google Ads CPC AnomalyIf CPC spiked at the same time, the cause is auction-side (competitor entry, bid changes), not tracking.
Google Ads Spend AnomalyIf spend is anomalous, ROAS dropping is downstream of that. Don’t pause until you understand WHY spend moved.
Google Ads Alert: Conversion Tracking BrokenDirect diagnostic for tag-break, watches click-to-conversion ratio.
Google Ads ROAS TrendThe 90-day shape. A real performance issue shows in the trend; a one-day alert that doesn’t appear in the trend is noise.
GA4 Revenue by ChannelIndependent check. If GA4 Paid Search revenue held normal, only Google Ads’ measurement broke, revenue is fine.
Shopify Total RevenueThe truth side. Real ROAS for the business uses commerce-platform revenue. If Shopify is normal, the ROAS drop is a measurement artefact.

Reconciling against the vendor’s own dashboard

Where to look in Google Ads UI: Google Ads > Overview shows daily Conv. value / cost on the headline chart. Hover today to see the figure that tripped this alert. Google Ads > Reports > Predefined > Time > Day, with columns Cost, Conv. value, Conv. value / cost. Filter to last 14 days for the daily series. Google Ads > Tools > Conversions > Status is where pixel-fire issues surface as “No recent conversions” warnings. Always check here first when a ROAS alert fires. Google Ads > Tools > Attribution shows the current attribution model. If the model was changed recently, this alert may fire spuriously. Other Google Ads views that look like the same number but aren’t:
  • All conv. value / cost: includes view-through. A primary-only ROAS drop with all-conversions ROAS stable typically means the primary purchase pixel broke specifically.
  • Predefined > Performance: the breakdown view; shows per-campaign ROAS contribution.
  • Search Lost IS (rank/budget): a coverage metric, not ROAS.
  • Smart Bidding “Bid simulator”: shows what would happen at different ROAS targets; not the current measured ROAS.
Why our number may differ from Google Ads UI (rare):
ReasonDirection of divergence
Real-time event-ingestion lag (1-4 hour). Card runs hourly; UI updates at variable cadence.Card may flag a drop slightly earlier than Google Ads’ anomaly indicator.
Suppression window. The alert is suppressed before 14:00 local.Google Ads UI shows the partial day raw; can look like a drop even when it’s just incomplete.
Attribution-model change. If model switched mid-window, Google Ads UI re-renders all rows; this card’s same-DOW baseline does not retroactively update.Card may flag a drop where Google Ads UI shows none, until the baseline rolls forward.
Currency. Both use account currency; ROAS is unitless.None.
Why the BUSINESS metric often differs (the IMPORTANT one): A ROAS drop in Google Ads can mean any of the following, with very different responses:
  • The Google Ads conversion pixel broke but real orders held (most common; cross-check commerce platform).
  • Real demand dropped (promo ended, season turned, competitor launched a price war).
  • Attribution model shifted silently (DDA <-> Last click); Google Ads loses credit; total business revenue unchanged.
  • AOV crashed (smaller orders); ROAS drops because conversions_value/conversion fell, not because conversions fell.
  • Bot-traffic surge inflated spend without conversions (residual IVT past Google’s filter).
  • Consent Mode v2 denial rate increased; observed conversions drop, modelled conversions partly fill the gap, ROAS noise increases.
The BUSINESS question is “did real revenue drop?” That is answered by the commerce platform, not this card. Cross-connector reconciliation:
CardExpected relationshipWhat causes legitimate divergence
shopify.total_revenue (UTM-filtered to Google CPC)If this alert fires but Shopify Google-CPC revenue is normal, the ROAS drop is a measurement artefact, not a real performance issue.Pixel breakage, Consent Mode denial increase, attribution shift.
bigcommerce.total_revenueSame logic as Shopify.Same.
google_analytics.ga_revenue_by_channel (Paid Search/Shopping)GA4 should show a similar drop shape if the underlying drop is real.Different attribution windows; GA4’s last-non-direct may credit conversions Google Ads attributes elsewhere.
klaviyo.klv_total_revenueNo relationship.Different channel, different attribution. Don’t compare.

Known limitations / merchant FAQs

The alert just fired. What’s the FIRST thing I should do? Open Clicks vs Conversions. 30-second triage: if clicks held but conversions dropped, you have a tag-break, fix the pixel before doing anything else. If both clicks and conversions dropped, it’s an auction or demand issue, different fix path. ROAS dropped but I don’t see anything wrong, what now? Three checks: (1) Did someone change the attribution model in Tools > Attribution recently? Switching DDA <-> Last click can drop ROAS 15-25% by itself. (2) Did a creative refresh launch yesterday? New creative can take 7-14 days to stabilise. (3) Did a competitor enter the auction (CPC spike on key terms)? Check CPC by Campaign. Real performance shifts usually have a co-symptom you can find within 5 minutes. Why does the alert fire on Mondays after a sale? The same-DOW baseline compares Monday-to-Monday, but if last weekend had no sale and this weekend did, today’s Monday will show a drop relative to last Monday’s normal pattern. This is a known false-positive shape; expect alerts on the Monday after every promo. Document the promo schedule and skip these alerts. My ROAS drop is 28%, just over the 25% threshold, is it real? Borderline. The 25% threshold is a noise-vs-signal heuristic; 28% is in the noisy band. Wait 24 hours before acting; if the alert reasserts on day two or the drop is corroborated by Conversion Drop, treat as real. A single-day 28% drop that doesn’t recur is usually noise. Can I tighten the 25% threshold for my high-volume account? Yes, larger accounts with 100+ conversions/day have lower noise floors. A 15% threshold is reasonable for high-volume accounts. Raise this with VortexIQ support. My PMax campaign keeps triggering this alert, what gives? PMax has higher inherent ROAS volatility because Google’s optimiser shifts spend across channels (Search, Display, YouTube) without exposing the mix. A PMax ROAS drop may reflect Google reallocating spend rather than performance regression. Cross-check PMax asset-group reports inside Google Ads. PMax also has a learning phase (typically 2-4 weeks per change); ROAS swings are normal early. What if my ROAS dropped but my commerce platform shows normal orders? You have a measurement break. Real revenue is fine. Action: check the conversion pixel on the order-confirmation page (Tag Assistant in Chrome, 60 seconds). A developer pushed code somewhere that removed or broke the tag. Once fixed, conversions will start flowing again, but you typically lose 24-72 hours of attribution data. Multi-currency setup, how does this alert work? Google Ads accounts are single-currency. Each account fires its own ROAS alert independently in account currency. The 25% threshold is currency-independent (it’s a percentage drop). Does view-through inclusion affect this alert? Yes. The alert uses primary conversions_value only. Display and YouTube campaigns will trigger this alert more often than Search/Shopping because their primary-only ROAS is lower than their all-conversions ROAS, and the lower starting baseline produces more noise. For accounts heavy on Display, consider a higher threshold (35-40%). Can I trust today’s ROAS for the alert? The alert is suppressed before 14:00 local time precisely because morning data is incomplete. By 18:00 local, the day is mostly populated and the alert is reliable. Conversions take 1-4 hours to ingest, so a 09:00 alert would catch every “morning is slow” pattern as a false positive.

Tracked live in Vortex IQ Nerve Centre

ROAS Drop Alert 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 or book a demo to see this metric running on your own data.