Should I scale an ad with 2x ROAS?
Usually not yet. A 2x ROAS only makes money if you keep more than half of each sale after product cost, shipping, fees and returns. If you do, raise the ad set budget in modest steps and judge the extra sales, not the average.
By Joris van Huët, Founder & CEOUpdated 7 min read
Run the numbers for your store: the free break-even ROAS calculator.
Usually not yet. A 2x ROAS only makes money if you keep more than half of each sale after product cost, shipping, fees and returns. Below half, every euro of ads loses money, and scaling loses it faster. If you clear half, raise the budget in modest steps and check the extra sales still pay.
The usual answers pull in opposite directions. One says a ROAS of 2 doubles your money, so pour more in. The other says 2 is weak, so switch it off. Both skip the question that decides it: what does one sale leave you after costs?
What one store's data shows
One store's anonymised GA4 export, 1 January 2024 to 21 August 2026. It holds shares of revenue only: no ad spend, no order counts.
| What the export shows | Value | Source cell |
|---|---|---|
| Break-even ROAS at a 40% margin (1 divided by 0.40) | 2.5x | Break-even sheet, 40% margin row |
| Paid Social, in last click, first click and touched views | 0.0% of revenue | Channels sheet, Paid Social row |
| Direct, in last click, first click and touched views | 57.7% of revenue | Channels sheet, Direct row |
The first row is plain arithmetic, not a result anyone earned. On the Break-even sheet, a 40% margin needs 2.5x to break even, because 1 divided by 0.40 is 2.5. If your margin were the same 40%, an ad at 2x would sit below that line. For illustration, two euros of sales at a 40% margin leave 80 cents of gross profit, so each euro of ads loses 20 cents.
The second row is the strange one. On the Channels sheet, Paid Social holds 0.0% of revenue in last click, first click and touched views. Touched is the generous view, where a journey counts for every channel it passed through. So in the export, paid social visits hold 0.0% even where they only had to appear somewhere along the way.
That leaves three readings, and the export cannot choose between them. The store ran no paid social, or its ad visits arrived under labels GA4 filed elsewhere. Or those visits never sat in a journey that ended in a sale. If that store ran a social ad reporting 2x, GA4 would hold no second witness for it.
The third row shows where lost labels can end up. Direct holds 57.7% of revenue on the Channels sheet, in all three views. Google describes Direct as traffic without a clear referral source, and redirects can strip the tags off an ad link.
The export holds no spend, so it cannot say what any ad returned. It shows credit. A ROAS is a claim about credit too, made by the platform that sold you the ad.
Why is a ROAS of 2 not double your money?
Because ROAS counts revenue, and most of that revenue was never yours to keep. A sale pays for the product, the packing, the shipping, the card fee and the odd return first. Only what is left pays for the ad.
That is why the line sits at half. If you keep exactly half of each sale, two euros of sales leave the one euro the ad cost. You broke even and did the packing for free.
Margins also move, and Shopify's own help has the example. A T-shirt with a 50% margin on the product page shows 33% in Gross profit by product when sold at 25% off. For illustration, at that 33% margin a ROAS of 2 leaves 66 cents per euro of ads, a loss of 34 cents. If you advertise a discounted product, judge it on the margin the sale earned, not the one on the product page.
What happens when you raise the budget?
You never scale an ad on Meta, only the budget above it. That budget sits on the ad set, or on the campaign when Advantage+ campaign budget is on.
Meta's help says a budget change may or may not restart learning, depending on how big it is. Its own example: a move from $100 to $101 is unlikely to restart learning, while $100 to $1000 may.
A restart costs you. Meta says ad sets in learning are less stable and usually cost more per result. Meta adds that ad sets tend to leave learning after about 50 results in the week after their last significant edit.
More budget behind one ad also means more repeat views. The Delivery column flags Creative limited when cost per result climbs above your past ads, and Creative fatigue once it reaches twice as much.
So the ROAS you see describes today's budget, audience and prices. The next euro buys a different mix, and why ROAS falls when you scale spend shows what that does to the average.
What can the ROAS not tell you?
Which sales the ad caused. Meta's standard setting counts purchases within 1 or 7 days of a link click, and within 1 day of a view. The setting is usually 7-day click and 1-day view, and the default Meta attribution setting breaks it into parts.
So a buyer who saw the ad, then bought through a newsletter link the next morning, can still count toward the ROAS. If much of the ROAS rests on views, the ad may be standing next to sales rather than making them. A holdout test settles it: switch the ads off in some regions, keep them on elsewhere, and compare total sales.
It cannot see the second order either. If your buyers reorder, a first-order ROAS understates what they are worth, and a 2x on a refill product can pay later. Shopify's Customer cohort analysis groups customers by the date of their first order, so you can see who came back.
What to do this week
- Run the halfway test. In Shopify, go to Analytics, then Reports, filter the Category to Profit Margin and open Gross profit by product. Find the product in the ad: its Gross margin leaves out shipping and card fees, so take those off yourself. Pass: what is left sits clearly above half. Fail: it sits at half or below, so a ROAS of 2 earns nothing or loses money.
- Ask GA4 whether it sees the ad. In GA4, select Reports, then Acquisition, then Traffic acquisition. Switch the table to Session source / medium and search for your Meta source. Pass: the visits carry a paid medium, which GA4 files under Paid Social. Fail: they carry none or an unpaid one, so fix the ad's URL parameters before you trust either number.
- Raise one budget in one modest step. In Ads Manager, hover over the ad set, click Edit, change the budget and click Publish. Pass: after a full week the Delivery column shows neither Learning nor Creative fatigue, and the extra sales clear your line. Fail: either status appears or the extra sales fall short, so go back to the old budget.
Check the homework. Your GA4 Attribution paths export already holds the evidence. Causality Engine reads that one file and shows what each channel caused next to what last-click gave it, in 1 to 2 minutes, for €99 once (excluding VAT), refundable within 30 days. Check the homework
Sources, 1 October 2026: Profit reports (Shopify Help Center); Customers reports (Shopify Help Center); Change your budget in Meta Ads Manager (Meta Business Help Center); Significant edits and learning phase (Meta Business Help Center); About the learning phase (Meta Business Help Center); About creative fatigue recommendations in Meta Ads Manager (Meta Business Help Center); About attribution models and attribution settings (Meta Business Help Center); Traffic acquisition report (Analytics Help); Default channel group (Analytics Help); Understand (direct) / (none) traffic (Analytics Help).
Related answers
Frequently asked questions
Does a 2x ROAS mean I doubled my money?
No. It means each euro of ads came back as two euros of sales. Product cost, shipping, fees and returns come out of those two euros before you keep anything. You only doubled your money if those costs were zero.Should I duplicate a winning ad or raise its budget?
Usually raise the budget in a modest step. Meta counts adding a new ad to an ad set as a significant edit, and a new ad set starts in learning. A small budget change is less likely to restart learning than a large one.Is a 2x ROAS worth keeping if customers reorder?
It can be, if repeat orders arrive and carry their margin with no extra ad cost. Check Shopify's Customer cohort analysis for the months the ad ran. Count only the reorders you can see, not the ones you hope for.
Go deeper: Causal attribution, explained.
Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.
Keep reading
Terms in this article
- AttributionAttribution identifies user actions that contribute to a desired outcome and assigns value to each. It reveals which marketing touchpoints drive conversions.
- Attribution ModelAn Attribution Model defines how credit for conversions is assigned to marketing touchpoints. It dictates how marketing channels receive credit for sales.
- Holdout TestA holdout test is an experiment where a portion of the audience does not see a campaign. This measures the campaign's true incremental impact.
- IncrementalityIncrementality measures the true causal impact of a marketing campaign. It quantifies the additional conversions or revenue directly from that activity.
- Incrementality TestingIncrementality Testing measures the additional impact of a marketing campaign. It compares exposed and control groups to determine causal effect.
- NewsletterNewsletter is a regularly distributed email publication containing news, updates, and promotional content for subscribers.
- Product PageProduct Page is a webpage dedicated to a single product. It includes images, descriptions, pricing, and purchase options.
- Profit MarginProfit margin measures profitability, calculated as net income divided by revenue and expressed as a percentage.