Here's the direct answer: your ROAS dropped today for one of five reasons — your tracking broke, the auction got more expensive, a specific ad or ad set decayed, your website funnel leaked, or your product mix shifted. The fastest way to find which one is to check them in that exact order, because each layer can fake the symptoms of the ones below it.
Most advice for a ROAS drop is a pile of possibilities: check fatigue, check CPMs, check targeting, check creative. All true, none ordered. So merchants check them in random order, find something that looks off, and "fix" a thing that wasn't the cause.
We watch Shopify brands run this diagnosis every morning through DataDrew — some literally ask it daily, as a habit. This is the sequence that actually isolates the cause, usually in about 15 minutes.
TL;DR
- Layer 0 first: split branded from non-branded ROAS. Branded search and retargeting routinely run several times the ROAS of cold prospecting; the blend hides which one moved.
- Then check in order: tracking → auction → ads → site → product mix. Each layer can masquerade as the next.
- The most expensive self-inflicted cause: auction overlap. In one account we audited, two ad sets reaching the same audience paid 44% more per thousand impressions to outbid each other.
- "I changed nothing" is almost never true — Meta re-enters learning on small edits, and your site, stock, and competitors change without telling you.
- If sessions are steady but conversion rate fell, the problem is on your site, not in your ads.
- Grade the day on Shopify revenue, not platform-reported revenue — platform numbers overcount by 30–100% and lag by 24–72 hours.
- One bad day is noise. The same layer failing three days running is a trend.
- Every check ends in a decision: hold, shift, or pause — the table below says which.
Layer 0: Split Branded From Non-Branded Before You Diagnose Anything
Blended ROAS mixes two businesses. Branded search, retargeting and existing-customer campaigns reach people who already knew you; cold prospecting reaches people who didn't. Branded campaigns commonly report ROAS in the double digits while non-branded prospecting sits near or below breakeven — and that's normal, not a problem. The problem is reading them as one number: a 15% fall in the blend can be a small dip in branded demand, a collapse in cold performance, or a budget shift between the two, and the blended figure looks identical in all three cases.
Before you touch the five layers below:
- Tag every campaign branded or non-branded. Google: brand terms vs generic. Meta: retargeting and customer-list audiences vs prospecting. Do it once; it takes 20 minutes.
- Read two ROAS numbers every morning, not one. If only branded moved, look at brand demand and whether a competitor started bidding on your name. If non-branded moved, run the five layers on the cold campaigns only.
- Know the floor you're grading against. The ROAS a first order needs to clear depends on how fast customers come back. A supplements brand whose customers reorder every ~45 days can run cold campaigns below first-order breakeven because the second order lands inside the quarter; an apparel brand with a 12-month repurchase window can't. Two brands can see the same 1.4x cold ROAS and only one of them has a problem. If you haven't set your floor from your second-order rate and days-to-second-order, do that first — the rest of this framework only tells you what moved, not whether it matters.
Layer 1: Can You Trust Today's Numbers at All?
Before diagnosing performance, verify the measurement. Attribution and tracking problems are the most common false alarm — the ads are fine, the reporting is broken.
- Reporting lag. Meta's attributed conversions for today are always incomplete; purchases attributed to a click can land up to 7 days later. A "bad" morning ROAS often self-corrects by tomorrow. Compare the same hours yesterday, not the full day.
- Pixel and event health. In Events Manager, confirm Purchase events are firing at normal volume. A theme update, a new app, or a consent-banner change can silently kill events.
- Platform incidents. Check Meta's and Shopify's status pages before touching anything. An ads-reporting outage looks identical to a performance collapse.
- The cross-check that settles it: does Shopify's order count agree? If Shopify shows normal revenue while Meta shows cratered ROAS, you have a tracking problem, not an ads problem.
The honest caveat: this sequence assumes you can see all five layers from one place. Most brands can't. Meta, Google, Shopify and GA4 disagree with each other by design — different attribution windows, different time zones, different definitions of a conversion — and platform numbers lag by 24–72 hours. Reconciling those sources, not the analysis itself, is usually the slowest part of the morning. Two rules keep it workable: grade the day on Shopify orders and treat every other source as a diagnostic, not a scoreboard; and pull every source at the same fixed time each day, so the lag is at least consistent day to day.
If the numbers check out, move down a layer.
Layer 2: Did the Auction Get More Expensive?
Same ads, same audience, worse ROAS — often the market moved, not you.
- CPM vs your 7-day average. A CPM spike with steady click-through rate means you're paying more for the same attention: seasonal auction pressure, a competitor's launch, or the start of a big promo period.
- Learning phase resets. Edited a budget more than ~20%? Swapped a creative? Duplicated an ad set? Meta re-enters learning and performance goes volatile for days. This is the top answer to "my CPA doubled overnight and I changed nothing" — a small edit counted as a big change.
- Auction overlap — your ads bidding against each other. Multiple ad sets reaching the same audience compete in the same auction and inflate each other's costs. In one account we audited, two overlapping ad sets were paying 44% more per thousand impressions to outbid themselves. Check Meta's auction-overlap insights or compare audience definitions across active ad sets.
- Frequency. Cold-audience frequency above ~3.5 with CTR sliding 15%+ is fatigue territory — the auction charges you more because engagement predicts poorly. (If this is the diagnosis, the fix is creative, not budget — see our guide to creative fatigue signals and thresholds.)
Layer 3: Which Ad Actually Moved?
Account-level ROAS is an average that hides the culprit. Break the drop down.
- Sort ads by yesterday-vs-trailing-7-day spend and ROAS. A drop is usually concentrated in one or two ads, not spread evenly.
- If a previously winning ad decayed: fatigue, comment-section problems, or a landing page it points to changed. A winning ad that stops working has about five impostor causes besides fatigue — check them before killing it.
- If a new ad is dragging the account: it's buying cheap, low-intent reach that dilutes blended ROAS. Judge it on its own cohort, not the account average.
- No single ad moved, but everything slid a little? That's Layer 2 (auction) or Layer 4 (site) behaving like an ads problem.
Layer 4: Sessions Steady but Conversions Fell? It's Your Site
This is the layer almost every "ROAS dropped" article skips — and it's where we see some of the most expensive misdiagnoses.
The tell: traffic held, conversion rate fell. Ads did their job delivering the click; the site stopped converting it. Walk the funnel in order:
- Sessions — normal? Then stop blaming targeting.
- Add-to-cart rate — fell? Look at product pages: price changes, sold-out variants, a broken image gallery, a new app slowing the page.
- Checkout rate — fell? Test checkout on your phone right now. Payment-gateway hiccups, shipping-rate errors, and discount codes that expired mid-campaign live here.
A real example: one apparel brand we work with saw revenue dip sharply between 1pm and 3pm and assumed ads were dying. The RCA traced it to a site change shipped that same morning — new color swatches on product pages had broken add-to-cart behavior for a slice of mobile users. The ads never changed. The rollback fixed "ad performance."
If sessions fell and conversion held, it's upstream (delivery, budget caps, ad disapprovals). If both fell, check layers 2 and 3 again.
Layer 5: Did Your Product Mix Shift?
Ads sell products. When the products move, ROAS moves — and nothing in Ads Manager will tell you.
- Stockouts on hero SKUs. Ads pointing at out-of-stock or low-stock products keep spending while conversion evaporates. Cross-reference today's top-spending ads against current inventory.
- Product-level movement. Compare yesterday's top-10 products by revenue against the trailing week. A hero product dipping 30% drags blended ROAS down even when every ad is "fine."
- Promo boundaries. The days right after a sale ends are structurally worse — you pulled demand forward. Compare against the same day last week, not the sale you just ran.
The 15-Minute Daily RCA, in One Table (With the Decision)
| # | Check | Where | Red flag | Do this now |
|---|---|---|---|---|
| 0 | Branded vs non-branded ROAS | Campaign tags | Only the blend moved → read each separately | Diagnose the one that moved. Never cut branded to "fix" a cold-traffic problem. |
| 1 | Shopify revenue vs platform revenue | Shopify admin vs Ads Manager | They disagree → tracking issue | Hold. Fix tracking first; don't move budget on numbers you can't trust. |
| 2 | Purchase events firing | Meta Events Manager | Volume drop → pixel issue | Hold. Repair events, re-check in 24h. Ads are probably fine. |
| 3 | CPM vs 7-day avg | Ads Manager | +25%+ with flat CTR → auction | Hold, or trim 10–20% on the weakest cold ad sets. Don't add budget into an expensive auction. |
| 4 | Learning-phase status | Ad set delivery column | "Learning" on old ad sets → recent edit | Hold 3–5 days. No further edits until learning exits. |
| 5 | Audience overlap | Ad set audiences | Same audience, 2+ ad sets → self-bidding | Shift. Consolidate overlapping ad sets; move budget to the survivor. |
| 6 | Ad-level ROAS spread | Sort by spend, yesterday vs 7d | 1–2 ads own the drop → creative | Shift. Pause the decayed ad, move its budget to the next-best, run a swap test. |
| 7 | Sessions → ATC → checkout | Shopify analytics | Steady sessions, falling CVR → site | Pause cold spend until the fix ships; keep retargeting. Every click bought now converts at the broken rate. |
| 8 | Top-10 product movement | Product analytics | Hero SKU dip or stockout → mix | Pause ads pointing at out-of-stock SKUs; shift to in-stock heroes. |
The decision column follows one rule: never add budget into a layer you haven't cleared. Hold while you can't trust the numbers or the auction is resetting. Shift when the cause is inside your account. Pause cold spend when the cause is on your site or your shelf, because ads can't fix either. A CMO who finds the problem is Layer 4 doesn't need a meeting — she needs cold campaigns paused until the deploy is rolled back, and a note to turn them back on.
One pass through this table beats an hour of staring at Ads Manager. And grade the final verdict on blended ROAS from Shopify revenue — platform-reported ROAS can't be trusted as an absolute number.
When One Bad Day Becomes a Real Problem
A single red day is usually noise — attribution lag, a slow news day, weather. The rule we've seen work: investigate daily, act on three-day trends. If the same layer flags three days running (MER below breakeven for 2+ weeks is the cut threshold in our budget cut-or-feed framework), that's when you change spend.
Automating the Daily RCA
Every check above is a query against data you already have — Shopify orders, Meta and Google performance, site analytics, inventory. That's why the brands who do this daily don't do it by hand: they ask Drew, DataDrew's AI analyst, "why is revenue down today?" and get the full five-layer RCA — product movement, ad-level breakdown, funnel metrics, and a verdict — in one answer. Several run it as a scheduled morning alert: if yesterday landed 20% below the 7-day average, the root-cause report is waiting before they've opened Ads Manager.
FAQ
Why is my ROAS down but nothing changed?
Something changed — just not by your hand. The most common invisible changes: attribution still filling in (today always looks worse), a budget/creative edit resetting the learning phase, auction costs rising, or a site/app update breaking part of the funnel.
How long should I wait before reacting to a ROAS drop?
Diagnose immediately; act on trends. One day is noise. The same cause showing up 3+ consecutive days — or MER below breakeven for two weeks — justifies moving budget.
Should I pause ads when ROAS drops?
Only when the cause is outside the ad account. If tracking, the auction, or a learning-phase reset is the cause, hold. If one ad decayed or ad sets are overlapping, shift budget within the account. Pause cold spend only when the site stopped converting or the hero product is out of stock — that's the one case where every extra click is wasted.
Why does my branded ROAS look great while overall ROAS is falling?
Because they measure different customers. Branded campaigns capture demand you already created, so their ROAS is structurally high; non-branded prospecting is where a drop usually lives. Split them, diagnose the one that moved, and never cut branded spend to "fix" a cold-traffic problem.
Should I judge ROAS from Meta or from Shopify?
Shopify. Platform-reported revenue overcounts (both platforms claim the same orders) and lags. Blended ROAS = total Shopify revenue ÷ total ad spend is the number that can't lie to you.