diagnosis
Why is my ROAS dropping? Check outside the ad account first
ROAS has three inputs and two of them live on your website. A checklist for a ROAS drop, from tracking and Shopify to stock, offer and margin.
ROAS often falls for a reason outside the ad account: tracking, attribution, the website, the offer, stock, the season or your margin. If CPM and click-through rate moved, suspect the ads; if they held and returns fell anyway, the cause sits after the click or in the counting.
If Ads Manager says ROAS fell and Shopify says sales didn’t, believe Shopify. One bad day is noise and three in a row are a problem, as our Framework puts it, so change nothing while you diagnose. Steps 1 to 3 come first, and step 3 tells you which of the rest you need.
Why the cause is often outside the ad account
Per click, ROAS = conversion rate × average order value ÷ cost per click. Cost per click is set in the ad account, while conversion rate and order value are set on your website. Split cost per click into cost per impression ÷ click-through rate and you have four inputs, two on each side.
Say 2% of the people who click buy, the average order is $80 and a click costs $0.80. Each click is worth $1.60, so ROAS is 2.0x. If a theme update takes conversion to 1.5% and nothing changes in the ad account, ROAS falls to 1.5x while every ad metric looks the same.Reading the symptoms
| What you see | Likely cause | Go to |
|---|---|---|
| Platform ROAS and Shopify disagree | Tracking, attribution or non-ad revenue | Steps 1 and 2 |
| Both down, ad metrics steady | Site, offer or stock | Steps 4 to 6 |
| CPM up, click-through steady | Auction or season | Step 7 |
| Click-through down on older ads | Creative fatigue | Step 9 |
| Slow slide, spend up | The cost of buying more | Steps 8 and 10 |
| Slow slide, same ads for months | Creative fatigue | Step 9 |
1. Check that sales are still being counted
Compare the purchases Meta and Google recorded with Shopify orders for the same days. If tracked purchases fell sharply while orders held, it’s tracking. Fix it before anything else, because every later number depends on it.
The usual causes are on the website: a theme change or app uninstall that removed code, a checkout change, a new cookie banner, or the Conversions API (Meta’s server-side connection) disconnecting. Shopify also upgraded the Thank you page of every store that missed its 26 August 2026 deadline, so a purchase tag pasted into the old page needs replacing.
On Shopify, set the Facebook & Instagram channel’s data sharing to Maximum, and check in Events Manager that the pixel and Conversions API both send Purchase and are deduplicated. We hold Purchase event match quality, Meta’s score for how well your customer details match orders to people, to 8 or better, the floor 700 Miles Publishing cleared at 9.1 out of 10. On Google, turn on the Google & YouTube app’s option that sends hashed customer details with conversions, and count Purchase as every conversion with no duplicate tags. Our tracking work covers this.
On Glass Flooring Systems, a lead-gen account, moving a form into a cross-origin iframe (a form hosted on another site, which the page’s tag can’t see into) took Meta’s CompleteRegistration from 8.7 a day to 0.0 a day for nineteen days. Once the counting was rebuilt, attributed leads went from 29 in July to 74 in August while total leads from every source held at 126 then 130. Demand hadn’t moved. The counting had.
2. Check whether the business dropped or only the dashboard
Divide total Shopify revenue by total ad spend across every platform, for the drop and for an equal window before it. That’s blended ROAS, or MER, and no platform can inflate it. If blended held while platform ROAS fell, it’s a reporting problem. If both fell, the drop is real. If the platforms held and Shopify fell, it isn’t the ads.
Meta’s default attribution setting is 7-day click, 1-day view and 1-day engagement, and Google’s data-driven model spreads credit across the ads a buyer touched, so both can claim one order. On Loose Leaf Tea Market, Meta reported 2.23 times what the store’s own order records credited it with.
Then split it three ways. In Ads Manager’s Compare attribution settings, put 1-day click beside 7-day click: if only 7-day fell, recent sales haven’t been credited yet. In Shopify, split new from returning customers, because falling repeat revenue drags blended down while the platforms look fine. In Google, split brand search from the rest: on Aaron Basha a 9.16x account drew 87.0% of its value from brand-name searches, and everything else returned 1.62x.
3. Split the drop: which input moved?
Pull CPM and click-through rate from the ad accounts, and conversion rate and order value from Shopify, against the window before the drop. Then follow what moved:
- Conversion rate or order value down, ad metrics steady: steps 4 to 6, and hold off on new creative.
- CPM up, click-through rate steady: step 7.
- Click-through rate down, CPM steady: step 9, now.
- Both moved: step 9, then step 7, the order our Framework uses when each new customer costs more.
If ROAS slid over weeks
Compare against a window from before the slide began and the same weeks last year, not last month, which is already part of the slide. The slow causes are spend creeping up (steps 8 and 10), the same ads running for months (step 9), discounts dragging order value (step 5) and tracking decaying bit by bit (step 1).
4. Check site conversion, by device and by funnel step
In Shopify’s analytics, compare conversion rate now with the weeks before the drop began, by device and landing page, filtered by UTM source to your paid traffic. Read the funnel: sessions, added to cart, reached checkout, purchased. Then go through checkout on your own phone. Mobile falling alone means something broke on mobile: a pop-up, load time, a layout break, a missing express checkout.
On Southern Slumber, site conversion had fallen from above 2% to below 1%, with a Shopify theme change the suspected trigger. Meta’s funnel events later showed only 20.9% of add-to-carts reached checkout, against a benchmark near 50%, while checkout itself completed at 43.9%, so the loss sat in the step before checkout. Within a month we told them to cut ad spend to fund the site fixes.
On Flavortown, the site relaunched in the same weeks we rebuilt the Meta account, pixel and catalog from zero and took the learning reset, and account ROAS fell from 2.3x before that relaunch to about 1.3x by late October. Two causes stacked, and the ad account couldn’t split them. The page data could: site-wide conversion sat below 1%, against 2% to 4% on product pages. Compare your top product pages’ conversion rate with the site-wide rate.
5. Check the offer and order value
Compare this period’s offer with the last one’s. Did a sale end, a code change, the free-shipping threshold move, a bundle disappear, a price go up, or the mix shift toward cheaper products? If order value fell while conversion held, more spend won’t fix it.
On Southern Slumber the minicart quoted free shipping at $49 in one place and $29 in another, and three separate 15% discount codes were live at once. On Flavortown the same 10-piece stainless set sold for $139 on Amazon against $199 on the brand’s own site. And check that your ads promise what checkout charges.
6. Check stock and the product feed
In Shopify, pull sales by product variant. A best-selling variant whose sales drop to zero while its page still gets sessions is a stockout, and every ad pointing there is wasted. Meta catalog ads need the same check in Commerce Manager.
On Google, open Merchant Center: disapprovals, out-of-stock products, a stale feed, prices that differ from the site. If Shopping fell while Search held, suspect the feed before the bids. On Aaron Basha, 40.5% of the items in Merchant Center could not enter an auction and 531 pointed at dead pages. The dead links came from the feed’s primary source, a hand-maintained Google Sheet that couldn’t see a Shopify deletion.
7. Check the calendar and the auction
Choose the comparison window before you read any number: the same weeks last year rather than last month, never a window with a sale in it, and long enough for your order volume. On Aaron Basha, two single days were 62.8% of a month’s value, and without them 9.16x reads 3.41x, so that account is judged on 60 to 90 day windows.
If everything fell on one date, check the calendar for holidays, events and competitor sales. Rising CPM with steady click-through rate points to the auction, and if Meta’s CPM spikes while Google’s cost per purchase holds, it’s Meta’s auction, not your site. If it’s seasonal, hold steady: Google says Smart Bidding already manages seasonal events.
The Fitzroy, a Toronto formalwear rental business that runs on an event calendar, saw Google spend fall from $3,000 in June to $2,150 in July while cost per click rose about 30% and clicks fell from roughly 4,200 to about 2,000. Headlines and descriptions were ruled out, which left auction pressure: more advertisers bidding on the same keywords.
8. Check what changed inside the ad account
Open the change history in Meta and Google and look first for changes nobody on your team made. On Aaron Basha, Google’s auto-applied recommendations had pulled 11 keywords on 4 August, including the exact-match brand term, and the brand campaign had served $0 on a stale disapproval while a reseller ran 10% off on brand searches. On Loose Leaf Tea Market, Meta’s Health and Wellness enforcement in March 2026 collapsed spend 82% and purchases 93%, and purchases falling faster than spend is a ROAS drop. So check Meta’s Account Quality page, disapprovals on your top spenders and Google’s auto-applied recommendations.
Then read your team’s edits. If spend went up, part of the drop is the cost of buying more, so go to step 10. On Meta, an ad set leaves learning after about 50 results in the week after its last significant edit, and editing during learning resets it. Bundle your edits and change one thing at a time, so you know what moved the number.
9. Check for creative fatigue
Look ad by ad. It’s fatigue when specific older ads show rising frequency and CPM and a click-through rate sliding for weeks rather than days, while fresh creative holds up. If new ads fall as hard as old ones, go back to step 7. Read hook rate, the share of viewers who watch past the opening seconds, by concept too: ad-level frequency can look normal while the same people have seen one idea in many ads.
Before you decide fresh creative isn’t holding up, check that it delivered. On CHUUG, 286 of 824 active ads had spent under £5 in 30 days, held back by a Page cap of about 1,000 ads that quietly stops new ads delivering. If it is fatigue, brief new hooks (the opening line or shot), angles (the reason to buy you lead with) and formats.
10. Judge the new ROAS against break-even, not last month
ROAS tends to rise when spend falls and fall when spend rises, so the question is whether the new number still makes money at the volume you’re buying.
With made-up numbers: a $100 product with $35 of product cost and $10 of shipping keeps $55, a 55% margin before ads and payment fees. Break-even ROAS is 1 ÷ 0.55, about 1.82x, and each ad dollar earns margin × ROAS − 1: $0.65 at 3.0x and $0.32 at 2.4x, so going from 3.0x to 2.4x pays only if spend more than doubles. A steady 2.0x earns $0.10 and turns into a loss once shipping passes $15.On CHUUG, the 1.74x break-even in the system had never been measured: order-level records put it at 1.61x, and re-costed shipping in August 2026 took it to 1.83x blended. On Natural Earth Paint, Meta was returning 1.6 in August 2024 and nobody knew the break-even, later modelled at 1.2 on product cost alone and 1.8 with operating costs in, a stricter bar than the formula above.
When this checklist doesn’t fit
If you sell leads, your CRM replaces Shopify as the reference. If every drop gets answered with “new creative” and nobody shows you the store numbers, read the questions I’d put to any agency. A falling ROAS reported as another good week is an accountability problem, not a market one.
Still can’t name the cause? Take your notes to whoever runs your ads, or to us. Our strategy call is for brands doing at least $50,000 a month in revenue and spending at least $5,000 a month on ads. You get a straight answer on whether we can help.
How this was made: drafted with AI help from Growth Mate’s working playbooks and case records. Every figure links to the page it comes from, except the made-up worked examples, which say so.
Questions founders ask
- Why is my ROAS so low?
- ROAS moves when one of three inputs moves: what a click costs, how many people who click go on to buy, or how much they spend per order. Two of those live on your website, not in the ad account. Check that tracking still counts sales and that Shopify revenue fell too, then see which input moved. Rising click costs point at the auction or tired ads; steady click costs with fewer buyers point at the site, the offer or stock.
- Is 2.3 ROAS good?
- It depends on your break-even, and break-even comes from your margin, not from the platform. Divide 1 by your contribution margin after product cost, shipping and fees, and you have the ROAS where a first order stops losing money. A 2.3 ROAS is good when your break-even sits below it and a loss when it sits above it. Which costs you count matters: Natural Earth Paint modelled its break-even at 1.2 on product cost alone and 1.8 once operating costs went in.
- Why are my ads getting clicks but not converting?
- If click-through rate and cost per click held while purchases fell, the problem is after the click. Check conversion rate by device and by funnel step in Shopify (sessions, added to cart, reached checkout, purchased), then go through checkout on your own phone. On Southern Slumber, site conversion had fallen below 1%, and Meta's funnel events showed only 20.9% of add-to-carts reached checkout.
- Is there a problem with Meta ads today?
- Sometimes. Meta lists outages on its status page for business products. A platform problem shows up as the whole account falling on one date, with fresh ads hit as hard as old ones and nothing changed on your side. If only some campaigns or some ads fell, look at those first.
- Why are my Meta ads not performing well?
- First check that they really are underperforming. Compare Ads Manager with Shopify orders for the same days, because Ads Manager counts only attributed events and its numbers can move with tracking alone. If the store fell too, check which number moved. Rising CPM or falling click-through rate points at the auction or tired ads, while steady ad metrics with fewer buyers point at the site, the offer or stock.
Sources
- Meta's default attribution setting is 7-day click, 1-day view and 1-day engagement: facebook.com
- Ad sets exit Meta's learning phase after about 50 results in the week after the last significant edit, and editing during learning resets it: facebook.com
- Meta's list of significant edits that send an ad set back into the learning phase: facebook.com
- Ads Manager shows only events attributed to people who were shown the ad, after deduplication: facebook.com
- Meta's help page on event match quality: facebook.com
- Meta's status page for its business products: metastatus.com
- Shopify's Facebook & Instagram channel sets the customer data sharing level, up to Maximum, under Settings, Data sharing settings: help.shopify.com
- 26 August 2026 was the deadline to upgrade Shopify's Thank you and Order status pages, stores not upgraded by then were upgraded automatically, and incompatible scripts or pixels have to be replaced: help.shopify.com
- Google's steps for conversion tracking in the Google & YouTube app on Shopify, including the setting under Google Ads settings that sends hashed customer data with conversions: support.google.com
- Google describes counting every conversion as the choice for sales and one conversion per click as the choice for leads: support.google.com
- Data-driven is the default attribution model for most Google Ads conversion actions: support.google.com
- Smart Bidding already manages seasonal events; seasonality adjustments suit short events of one to seven days: support.google.com
- Site conversion fell from above 2% to below 1% with a theme change the suspected trigger; Meta's funnel events later showed 20.9% of add-to-carts reaching checkout and checkout completing at 43.9%; two free-shipping thresholds and three 15% codes: growth-mate.com
- A new Meta account, pixel and catalog were built from zero as the site relaunched; ROAS went from 2.3x to about 1.3x; site-wide conversion below 1% against 2% to 4% on product pages; $139 on Amazon against $199 on the brand's site: growth-mate.com
- Google spend fell from $3,000 to $2,150 as cost per click rose about 30% and clicks fell from roughly 4,200 to about 2,000; ad copy was ruled out, leaving auction pressure: growth-mate.com
- Meta reported 2.23 times the revenue the store's own records credited it with; Health and Wellness enforcement collapsed spend 82% and purchases 93%: growth-mate.com
- A 9.16x Google account drew 87.0% of its value from brand searches; two days were 62.8% of a month's value; 40.5% of Merchant Center items could not enter an auction and 531 linked to dead pages; auto-apply pulled 11 keywords and the brand campaign served $0 on a stale disapproval: growth-mate.com
- 286 of 824 active ads had spent under £5 in 30 days under a Page cap of about 1,000 ads; break-even 1.74x assumed, 1.61x measured, 1.83x after shipping was re-costed: growth-mate.com
- Meta returned 1.6 in August 2024 against a modelled break-even of 1.2 on COGS alone and 1.8 with operating cost in: growth-mate.com
- Meta's CompleteRegistration fell from 8.7 a day to 0.0 a day after a form swap; attributed leads went from 29 to 74 while total leads held at 126 then 130: growth-mate.com
- Purchase event match quality 9.1 out of 10 against a house floor of 8: growth-mate.com
