How to set your Meta ads ROAS target, step by step
Work out a floor in Shopify: 1 divided by the margin left after fees and refunds. Raise it if Meta's purchase value includes tax. Check each ad set's attribution setting and the incremental column, then enter the floor as a ROAS goal and judge it weekly.
By Joris van Huët, Founder & CEOUpdated 9 min read
Run the numbers for your store: the free break-even ROAS calculator.
Usually, a Meta ads ROAS target lives in two places: a floor you work out in Shopify, and a ROAS goal in the ad set. Before you type the goal, check your margin, the purchase value Meta receives, each ad set's attribution setting and Meta's incremental column. Then judge it on weekly averages.
Open three tabs: your Shopify admin, Ads Manager and Events Manager. The menu paths below come from Shopify's and Meta's help pages, read on 1 October 2026. If a label has moved since then, search for the report name, which tends to outlive the menus.
Step by step
- Find your margin per order. Shopify's Profit margin by order report sets what customers paid against what your store paid, product costs and shipping costs included. It reports profit only for products that had a cost recorded when they sold. Menu path: Shopify admin > Analytics > Reports > Category filter > Profit Margin > Profit margin by order.
- Turn the margin into a floor. Take off payment fees and your refund share, then divide 1 by the margin that is left. Meta's bid strategy help says to set a ROAS goal at the lowest ROAS you can accept, and this floor is that number. The free break-even ROAS calculator shows the working. Menu path: none, this one is a sum.
- Check the value Meta receives. Purchase ROAS divides purchase conversion value by amount spent, and that value comes from the value your purchase event sends. On Shopify, the Facebook & Instagram app uses the order's total price, which Shopify says includes duties and taxes. Menu path: Shopify admin > Sales channels > Facebook & Instagram > Settings > Data sharing settings.
- Confirm purchases reach Events Manager. Meta says events should show within 20 minutes of being sent. Value optimisation also needs a conversion event that sends a value and a currency. Menu path: Events Manager > Data Sources > your pixel > Overview, then click Purchase.
- Raise the floor to Meta's scale. If Meta's value includes tax and your margin does not, multiply the floor by 1 plus your tax rate. Shopify's sales reports show Net sales and Tax side by side, so tax divided by net sales gives that rate. Menu path: Shopify admin > Analytics > Reports > Category filter > Sales > Total sales over time.
- Write down each ad set's attribution setting. Meta sets it per ad set: click-through counts purchases within 1 or 7 days of a link click, view-through and engage-through within 1 day. Meta says to base a ROAS goal on results within that setting. Menu path: Ads Manager > your ad set > below Conversion goals, Show more options > Attribution model.
- Add Purchase ROAS to your columns. Pick the level you judge at and save the view as a preset, so the same columns open every week. Menu path: Ads Manager > Campaigns, Ad sets or Ads > Columns dropdown > Customize columns > Purchase ROAS > Apply.
- Put incremental results beside standard ones. Meta's incremental column keeps only the conversions its models consider incremental. It shows nothing for dates before 1 April 2025. Menu path: Ads Manager > Columns: Performance dropdown > Compare attribution models > Incremental > Apply.
- Enter the goal. In the ad set, choose Maximize value of conversions as the performance goal, then ROAS goal, and type your floor as a decimal. Meta reads a goal of 1.100 as about a 110% return. With Advantage+ campaign budget, pick ROAS goal as the campaign bid strategy, then set the value in each ad set. Menu path: Ads Manager > your ad set > Performance goal > Maximize value of conversions > ROAS goal.
- Judge it weekly. Meta says day-to-day ROAS naturally fluctuates, so evaluate weekly averages and wait at least 7 days after any change. Menu path: Ads Reporting > Breakdown > Time > Week.
A worked example
Start with the floor. One store's export carries a Break-even sheet: at a 40% margin, break-even ROAS is 2.5x, because 1 divided by 0.40 is 2.5. That is arithmetic on product margin, not a ROAS the store reached, and the export holds no spend.
For illustration, say payment fees and refunds take the margin from 40% to 35%. In this worked example, the floor becomes 1 divided by 0.35, about 2.9x. Say the tax comes to 20% of net sales and Meta receives tax-inclusive totals. In this worked example, the floor on Meta's scale is about 3.4x, because 2.86 times 1.2 is 3.43.
Now the columns. Say an ad set shows a Purchase ROAS of 4.0 in its standard setting and 2.8 under the incremental model. In this worked example, 2.8 divided by 4.0 is 0.7, so Meta treats 70% of the credited value as incremental. The ad set clears 3.4x on the standard column and misses it on incremental results, in this worked example. Holding 3.4x on caused sales would need about 4.9x on the standard column, because 3.43 divided by 0.7 is 4.9 in this worked example.
Then the goal field. Meta suggests starting 10 to 20% below your recent average, which for illustration puts a 4.0 average at 3.2 to 3.6. In this worked example, the low end sits under the 3.4x floor, so type 3.400 rather than 3.200. A 4.900 goal would ask for more than this ad set earns today. In this worked example, the incremental gap goes to a holdout test instead. If spend drops at 3.400, the auction is quoting you the price of profitable sales today.
Last, the cross-check. In one store's export, Paid Social holds 0.0% of revenue in every view (Channels sheet). If your GA4 looked like that, nothing in GA4 could confirm the ROAS Ads Manager shows you.
What should I check when the numbers look wrong?
- Purchase ROAS is blank. Meta says the metric may not be calculated in some cases, such as results for ads delivered to devices using iOS 14+. A purchase event with no value leaves it empty too, because Meta's standard event code defaults to a value of zero.
- Maximize value of conversions is greyed out. Meta needs a purchase event that sends a value and currency. It recommends at least 100 conversion events with at least 5 distinct values over the past 14 days. Meta adds that it can take a few weeks after that before the option appears.
- The ad set stops spending its budget. That is the ROAS goal doing its job. Meta says it may spend less than your full budget when the market is competitive, to protect your target.
- ROAS fell in spring 2026 with nothing changed on your side. Meta began counting only link clicks as click-through for website conversions from March 2026, and accounts switched at different points. Compare periods on the same side of the switch.
- GA4 values the same orders lower. Google's reference says the Google & YouTube app's purchase value leaves out shipping charges and taxes. Shopify's Meta app sends a total that includes taxes, so the same order is worth more in Ads Manager before attribution even starts.
What to do this week
- Save a ROAS column preset. In Ads Manager, open Columns, select Customize columns, add Purchase ROAS and Purchases conversion value, and tick Save as a column preset. Pass: one click shows both for every ad set. Fail: you rebuild the columns each Monday and compare a different view every time.
- Watch one purchase arrive. In Events Manager, open Data Sources, click your pixel, then Overview, after your next order. Pass: Purchase appears, with the browser and server listed under Connection Method if you run the Conversions API. Fail: it never appears, so Purchase ROAS and any ROAS goal are guessing.
- Set the goal on one ad set first. In that ad set's Performance goal section, choose Maximize value of conversions, then ROAS goal, and enter your floor on Meta's scale. Pass: after a full week the weekly average sits near the goal and spend continues. Fail: spend falls well short of budget, so profitable sales cost more than this goal allows right now.
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); Sales reports (Shopify Help Center); Facebook data sharing (Shopify Help Center); About bid strategies (Meta Business Help Center); About ROAS goal (Meta Business Help Center); Best practices for ROAS goal (Meta Business Help Center); Purchases conversion value (Meta Business Help Center); Purchase ROAS (return on ad spend) (Meta Business Help Center); Requirements to use Maximize value of conversions (Meta Business Help Center); Set the value and currency of your Meta Pixel standard events (Meta Business Help Center); About attribution models and attribution settings (Meta Business Help Center); How to use incremental attribution in Meta Ads Manager (Meta Business Help Center); How to view results for incremental attribution in Meta Ads Manager (Meta Business Help Center); Customize columns in Meta Ads Manager (Meta Business Help Center); About breakdowns, metrics and filtering in Meta Ads Reporting (Meta Business Help Center); Verifying Your Setup (Meta for Developers); Simplifying Ad Measurement for a Social-First World (Meta); Shopify event parameters (Google for Developers)
Related answers
Frequently asked questions
How do I type a ROAS goal into Meta Ads Manager?
As a decimal multiple of spend. Meta's example: a goal of 1.100 means around $110 in purchases for every $100 of budget. So, for example, a 3.4x floor goes in as 3.400. Meta accepts goals between 0.001 and 1000.00.Why is my ROAS goal ad set not spending its budget?
Because the goal comes first. Meta says ROAS goal may spend less than your full budget when the market is competitive, to protect your target. If it underspends at your floor, the auction cannot sell you profitable sales at that price right now.How long should I wait before changing a Meta ROAS goal?
At least a week. Meta says day-to-day ROAS naturally fluctuates, so judge weekly averages and wait at least 7 days after any change before re-evaluating. Changing the goal every morning just restarts the clock.
Go deeper: Causal attribution, explained.
Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.
Keep reading
Terms in this article
- AnalyticsAnalytics is the systematic computational analysis of data. It reveals customer behavior and measures campaign performance.
- 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.
- CausalityCausality is the relationship where one event directly causes another, essential for identifying specific actions that drive desired outcomes in marketing.
- ConversionConversion is a specific, desired action a user takes in response to a marketing message, such as a purchase or a sign-up.
- 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.
- MER vs ROASMER (marketing efficiency ratio) is total revenue divided by total ad spend; ROAS is revenue credited to a specific channel divided by that channel's spend. MER cannot be gamed by attribution but is blind to channels; ROAS is channel-level but only as honest as the attribution behind it.
- Profit MarginProfit margin measures profitability, calculated as net income divided by revenue and expressed as a percentage.