Skip to content

How do I know if my Meta ads are working?

You usually know when three checks agree. Meta's return beats the break-even ROAS your margin sets. Total Shopify sales move with Meta spend. Sales dip where people stop seeing the ads. Ads Manager alone only shows what Meta counted.

By , Founder & CEOUpdated 7 min read

Run the numbers for your store: the free break-even ROAS calculator.

Usually you know when three checks agree. Meta reports a return above the break-even line your margin sets. Your total Shopify sales rise and fall with your Meta spend. And sales dip where people stop seeing the ads. If only Ads Manager says so, you know Meta counted the sales, not that it caused them.

Ads Manager can run the first check alone. The second needs your own sales, and the third needs people who saw no ads. A verdict that stops after check one is Meta marking its own homework.

What one store's data shows

The usual answer is one number: Purchase ROAS above break-even means the ads work. Here is one store's export next to that answer.

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 showsValueSource cell
Break-even ROAS at a 40% margin (1 divided by 0.40)2.5xBreak-even sheet, 40% margin row
Paid Social, in last click, first click and touched views0.0%Channels sheet, Paid Social row
Direct, in last click, first click and touched views57.7%Channels sheet, Direct row
Journeys with 2 to 3 touches (296 distinct paths, 12.5 days to buy)12.2%Journeys sheet, 2 to 3 touches row

Start with the pass mark. On the Break-even sheet, a 40% margin puts break-even ROAS at 2.5x: 1 divided by 0.40. That row is arithmetic, not a result. The export holds no spend, so it cannot say what this store's ads returned. If your margin is 40% too, the Break-even sheet's 2.5x is your line as well. Meta's own count must clear that line before the ads even pay for themselves.

Now look for Meta in the store's own records. On the Channels sheet, Paid Social holds 0.0% of revenue in last click, first click and touched views alike. Whatever Ads Manager said, no revenue in this export came through a session GA4 filed as Paid Social. The file cannot say why: no ads, untagged ads, or ads that sold without a click.

The biggest row shows where a working ad could hide. On the Channels sheet, Direct holds 57.7% of revenue in all three views. Google defines Direct as a visit through a saved link or a typed address. GA4 records visits to your site, so an ad someone only scrolled past leaves no trace there. If that person remembers your name and types it in a week later, the sale usually lands in Direct. That is why the second check watches total sales, not the Paid Social row.

Then there is the clock. On the Journeys sheet, journeys of 2 to 3 touches held 12.2% of revenue and took 12.5 days to buy. Meta's own testing advice says to run tests longer when customers take more than 7 days to convert after seeing an ad. A one-week verdict would land well short of the 12.5 days on the Journeys sheet.

What the export cannot show: whether this store ran Meta ads at all, what Meta counted, or which sales any ad caused. It is one store, not a benchmark for yours.

Why is a ROAS above break-even not enough?

Because Purchase ROAS grades timing, not cause. Meta calculates it as purchase conversion value divided by amount spent. The purchases are the ones Meta credits to your ads under each ad set's attribution setting. That setting is usually 7-day click and 1-day view. Meta's Results page adds 1-day engagement to that default. So read the Attribution setting column rather than either page (the default, explained).

Nothing in that rule asks whether the buyer was already on the way. A regular who saw your ad at breakfast and bought at lunch counts. So does a shopper whose cart was full before the ad appeared. Both are real sales. Neither shows the ad changed a thing.

Timing bites a second way. A new or heavily edited ad set starts in the learning phase, and its Delivery column reads Learning. Meta says ad sets usually leave it after about 50 results in the week after the last significant edit. Until then, Meta warns, results are less stable and say little about future performance. A ROAS read that week is a forecast made from the first five minutes of the day.

What can Ads Manager never tell you?

Whether the sales would have happened without the ads. Every purchase Ads Manager reports is credited to an ad someone saw or clicked. To learn what the ads added, you need people who could not see them.

Meta offers that comparison as Conversion Lift. A test group can see your ads, a control group cannot, and the gap in conversions is the lift. The first question Meta says such a test answers is this post's question in other words: how are my Meta ads performing?

The cheap shortcut is to switch the ads off for a week and watch sales. Meta advises against exactly that. Its help says turning ad sets or campaigns on and off by hand can lead to unreliable test results. Sales also move with seasons, promotions and email sends. A holdout test that splits people or regions before launch is the honest version.

What to do this week

  1. Check that the ad sets you judge have left learning. In Ads Manager, open the Ad sets tab and read the Delivery column. If the Last significant edit column is missing, click Columns and add it. Pass: no ad set you plan to judge reads Learning or Learning limited. Fail: one does, so wait before you call it.
  2. Write your break-even ROAS next to Meta's. In Shopify, go to Analytics > Reports, click the Category filter and pick Profit Margin, then read your gross margin. Divide 1 by it. In Ads Manager, add Purchase ROAS and Attribution setting through Columns, then Customize columns. Pass: last month's Purchase ROAS beats your line under one setting. Fail: it does not, so even Meta's own count says the ads lose money.
  3. Line up spend and sales by week. In Ads Manager, click the Breakdown icon, then By time, and pick Week. In Shopify, open Total sales over time under Analytics > Reports and group it by week. Pass: sales rose in the weeks spend rose. Fail: spend swung and sales sat still, so plan a test before you add 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: Purchase ROAS (return on ad spend) (Meta Business Help Center); Results (Meta Business Help Center); About attribution models and attribution settings (Meta Business Help Center); About the learning phase (Meta Business Help Center); Significant edits and learning phase (Meta Business Help Center); About A/B testing (Meta Business Help Center); Best practices for A/B Testing (Meta Business Help Center); About Conversion Lift (Meta Business Help Center); Default channel group (Google); Profit reports (Shopify Help Center); Setting and comparing time ranges for your reports (Shopify Help Center); Navigate to breakdowns in Meta Ads Manager to understand ad performance (Meta Business Help Center); About multiple attribution settings (Meta Business Help Center).

Frequently asked questions

  • How long should I wait before judging a new Meta campaign?
    At least until it leaves the learning phase and your slower buyers have had time to buy. Meta says ad sets usually exit learning after about 50 results in the week after the last significant edit. Before that, results swing more and say little about what comes next.
  • Which Meta metrics show whether my ads are working?
    Purchase metrics come closest: purchases, cost per purchase and Purchase ROAS. Reach, clicks and CPM describe delivery, not sales. Even purchase metrics count sales that happened near an ad, inside its attribution window. Treat them as Meta's claim, then check it against Shopify sales and a test with a control group.
  • Can I pause my Meta ads for a week to see what happens?
    You can, but Meta advises against it. Its help says switching ad sets on and off by hand can lead to unreliable results. An ad set paused for 7 days or longer also restarts learning once you switch it back on. A test with a control group answers the question more cleanly.

Go deeper: Incrementality testing, explained.

Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.

Keep reading

Terms in this article

Browse the full glossary

Your platforms guess.
We run the math.

Upload a GA4 export and see what each channel caused, next to last-click, in 1–2 minutes. The read is yours to keep.

Free, in your browser: your file is not uploaded. The full read is €99, refundable within 30 days. Prices exclude VAT.
Or book a 30-min call.