Meta says ROAS is up but Shopify revenue is flat. Which number should I trust?

Hamid ChakirBy , Co-Founder, CRO and Landing PagesUpdated

Written from hands-on work in: Shopify conversion rate optimization, Landing pages and advertorials, A/B testing, Checkout and subscription offers, Supplement DTC funnels.

Short answer

Trust Shopify to tell you whether the business grew, and Meta to compare ads with each other. By default, Meta counts purchases up to 7 days after a click or 1 day after a view, returning customers included. Shopify credits the last non-direct click it can trace. If Meta ROAS rises while new-customer revenue stays flat, Meta is likely claiming sales you already had.

Key takeaways

  • Platform ROAS, blended MER and first-order MER answer three different questions. Use Meta's ROAS to compare ads with each other, and Shopify's numbers to decide whether the business grew.
  • Meta's default counts purchases up to 7 days after a click or 1 day after a view, whether the buyer is new or not. Shopify gives each order to the last non-direct click it can trace. The two will never match, and they are not built to.
  • ROAS = revenue per session ÷ cost per session. Put sessions, cost per session, conversion rate and revenue per session under it, or a better landing page gets booked as better media buying.
  • Before trusting any CAC, check what share of Meta's reported purchases Shopify can actually see through UTMs, and whether that share is falling while ROAS rises.
  • Attribution only assigns credit. A holdout or geo test is the only way to measure what the ads actually caused.

Why do Meta and Shopify tell two different stories?

It is the first Monday of the month. Ads Manager says ROAS climbed from 2.5 to 3.0. Your agency's report has a green arrow on it. Then you open Shopify, and revenue is exactly where it was last month. Same spend, same team, two answers. (Illustrative numbers.)

The next question is always which one is lying. Neither is. They count different things, on different calendars, with different rules about who gets credit. Both can be accurate and still disagree by a wide margin.

So the useful question is not which number is true. It is which number answers the decision in front of you. That takes three numbers instead of one, four extra rows on your dashboard, and one check before any budget moves.

Which number answers which question?

Most of the confusion comes from asking one number to answer every question.

Three numbers, three questions
NumberHow it is calculatedThe question it answersWhere it misleads
Platform ROASRevenue Meta attributes to your ads ÷ Meta spendWhich campaigns and ads work better than others inside Meta?Counts views, returning customers and modeled purchases. Meta grades its own work.
Blended MER (marketing efficiency ratio)Total Shopify revenue ÷ total ad spend, all channelsIs the business getting more revenue for each ad dollar?Includes renewals, email and organic sales, so a strong subscriber base can hide weak acquisition.
First-order MERRevenue from first-time customers ÷ total ad spendIs ad spend buying new customers at a price we can afford?Ignores what those customers are worth later, so read it next to cohort payback.

Platform ROAS is the right tool for picking the better of two ads, because both are measured with the same ruler. It is the wrong tool for deciding whether to add $20,000 a month, because the ruler belongs to the seller. Meta's own help page on attribution models notes that each model uses different counting mechanisms, and that if you use external analytics tools, you should evaluate performance in those tools (Meta Business Help Center).

What the gap looks like

Illustrative numbers, not a client account. Meta is the only paid channel in this example.
NumberMonth 1Month 2Change
Meta spend$60,000$60,000flat
Meta-reported revenue$150,000$180,000+20%
Platform ROAS2.53.0+20%
Total Shopify revenue$300,000$300,000flat
Blended MER5.05.0flat
Revenue from first-time customers$120,000$105,000-12.5%
First-order MER2.01.75-12.5%
Revenue from returning customers$180,000$195,000+8%

Read it from the bottom up. The store did not grow. New-customer revenue fell, returning-customer revenue rose, and Meta's column grew by $30,000 while the total did not move. The likeliest story is not that the ads got better. It is that Meta counted more purchases from people who were already customers. (Illustrative numbers.)

What counts as a good level for each number depends on your margin. Our guide on what ROAS a supplement brand should target has the break-even math.

Why does Meta count sales that Shopify does not?

Meta credits a purchase to your ad if it happened within a set number of days after someone viewed or clicked that ad (Meta Business Help Center). Almost every gap between the two dashboards follows from that one rule.

1. The window includes views, not just clicks

The common setup, and what Meta's reporting API calls its default, is 7-day click and 1-day view (Meta for Developers). Under Meta's current standard settings, click-through counts purchases within 1 or 7 days of a link click, view-through counts purchases within 1 day of an impression, and engage-through counts purchases within 1 day of a non-link interaction, such as a video played for 5 seconds (Meta Business Help Center).

A view has no click, so it carries no UTM and no referrer. Shopify cannot see it. Meta itself notes that some third-party tools struggle to attribute conversions to impressions (Meta Business Help Center). Every view-through purchase is a sale Meta can claim and Shopify will book under another channel.

2. Meta counts people across devices

Meta measures people, not browsers, so it can connect an ad seen on a phone to a purchase made later on a laptop (Meta Business Help Center). Meta says cookie-based tools may miss those conversions, and that a buyer who returns hours later in a new browser tab loses the referrer entirely (Meta Business Help Center).

3. Some purchases are modeled

Where conversion data is missing or partial, Meta uses statistical modeling to estimate conversions, and it may also model how reported conversions are split across campaigns, ad sets and ads (Meta Business Help Center). A modeled purchase is an estimate. There is no single Shopify order you can match it to.

4. Returning customers and renewals can count too

Meta's rule asks whether a purchase followed an ad. It does not ask whether the buyer is new. Your existing customers see your ads, and many of them were going to reorder anyway. A customer who scrolls past your ad on Monday and reorders from your email on Tuesday is a Meta purchase in Ads Manager and an email order in Shopify.

Renewals depend on how your tracking is set up. Shopify's own Meta integration sends its Purchase event when a visitor completes a purchase and views the thank you page (Shopify Help Center). A renewal charged in the background has no visitor and no thank you page. Some server-side tracking setups, though, send every order to Meta, renewals included. If yours does, Meta can credit renewals from subscribers who saw an ad inside the window.

How does Shopify decide which channel gets the sale?

Shopify's marketing reports default to last non-direct click. The last channel a customer clicked before buying gets 100% of the credit, and direct visits are skipped. If the whole journey was direct, the order is booked as direct (Shopify Help Center). The Performance by marketing channel report shows the last 30 days on that model unless you change it.

Three things follow. Shopify credits clicks only, so a purchase that followed a Meta view lands on email, search or direct. Shopify has to know where a click came from, which for ads managed outside Shopify means UTM parameters (Shopify Help Center). And Shopify gives each order to one channel, while every platform counts its own. Shopify's own example: a customer who clicks both an email and a Google Shopping ad can be recorded as a conversion by each, while Shopify credits only the most recent click within the past 30 days (Shopify Help Center).

That is why adding up what Meta, Google and your email platform each report can give you more revenue than the store took in. Shopify's numbers are the only ones that have to add up to the orders you shipped.

Shopify also offers an any click model, which credits every channel a customer clicked. Shopify suggests it for analyzing one channel or reconciling with what each channel reports (Shopify Help Center), which makes it the fairer view when you hold Shopify up against Meta.

Different calendars

Meta can date a purchase to the day of the ad impression or the day of the conversion. If someone saw the ad on January 1 and bought on January 2, impression-time reporting puts the sale on January 1 (Meta for Developers). Meta tells advertisers to match the attribution window, time zone and conversion date setting before comparing tools (Meta Business Help Center). Shopify books the order on the day it was placed. Over a full week the calendars mostly even out. Around a sale or a launch, they do not.

The gap can run the other way

Meta can also miss sales. If a shopper runs an ad blocker, the Meta Pixel may not fire, and Meta reports fewer conversions than your own data (Meta Business Help Center). Shopify's Enhanced and Maximum data-sharing settings send the purchase event server to server through the Conversions API, which browser-based ad blockers cannot block (Shopify Help Center). Supplement brands should also check for Meta's health and wellness category, covered in our guide on getting that category removed.

Because the gap runs both ways, its size tells you little. Its direction over time tells you a lot.

Why does a ROAS dashboard credit media for everything?

Look at the numbers on most growth dashboards: ROAS, CPA, MER, CAC. Every one of them has ad spend in it. That makes the dashboard blind to where a gain came from. When a better landing page lifts revenue, every ratio improves, and the report hands the credit to whoever manages the spend.

Here is what that looks like when only the landing page changed. Sessions and revenue come from Shopify, for Meta-tagged sessions.

Illustrative numbers, not a client account
RowBefore page changeAfter page changeChange
Meta spend$40,000$40,000flat
Sessions50,00050,000flat
Cost per session$0.80$0.80flat
Conversion rate2.0%2.5%+25%
Revenue per session (average order $70)$1.40$1.75+25%
ROAS1.752.19+25%

A spend-and-ROAS dashboard reports the right column as "Meta ROAS up 25%". The media did not change. Cost per session was flat. The page did the work. Run the same table the other way and you get the opposite mistake: a stockout or an ended promotion drops revenue per session, ROAS falls, and the media buyer gets blamed for a site problem. (Illustrative numbers.)

So add four rows under ROAS and never show it without them: sessions, cost per session, conversion rate and revenue per session, for Meta traffic, from Shopify. If cost per session moved, look at media. If revenue per session moved, look at the site and the offer. Our guide on a rising Meta CPA splits the media side further, and our anonymized conversion loop case study shows media buying and CRO run as one loop, read on volume-matched days.

How much of Meta's revenue can Shopify actually see?

Before you trust any CAC or payback figure built on Meta's purchases, answer one question: of the purchases Meta reports, what share can Shopify see arriving from Meta? We call that share UTM coverage. Put Meta's reported purchases for a week next to Shopify's orders that week from sessions tagged with your Meta UTMs, on the any click model so other channels do not take the credit.

Coverage will never be 100%, for all the reasons above: views, cross-device journeys, modeled purchases, ads launched without UTMs. The level matters less than the trend.

Reading UTM coverage week by week
What you seeWhat it usually meansWhat to do
Coverage steady, Meta ROAS and Shopify's Meta orders move togetherThe tools disagree on size, not on directionTrust the trend in either one. Keep using Meta for ad-level decisions.
Coverage falling while Meta ROAS risesThe extra credit lives in the part Shopify cannot see: views, returning buyers, modeled purchasesDo not scale on it. Check first-order MER and plan a holdout.
Coverage drops suddenlyTracking broke: UTMs missing on new ads, a redirect stripping parameters, a Purchase event that stopped firingFix tracking before reading any rate.

Two more cuts sharpen the read. First, split Shopify's Meta-tagged orders into first-time and returning customers; Shopify's marketing reports carry both (Shopify Help Center). Second, compare Events Manager, which shows purchase events whether or not they are attributed, with Ads Manager, which shows only those attributed to people who were shown your ads (Meta Business Help Center). If Ads Manager claims a growing share of the same purchases while Shopify revenue is flat, Meta is taking a bigger slice of the same pie.

The same rule applies to every channel: if you cannot see where a sale came from, you cannot price it. Our guide on tracking ChatGPT and AI assistant traffic in Shopify and GA4 applies it to the newest one.

What would have happened without the ads?

Attribution, Meta's or Shopify's, answers "which touchpoint gets the credit?" It cannot answer "would this sale have happened anyway?" That second question is incrementality, and only an experiment answers it cleanly.

This is not a theoretical worry. Researchers analyzed 15 US advertising experiments at Facebook, covering 500 million user-experiment observations and 1.6 billion ad impressions, and compared the results with common observational methods. The observational methods often failed to produce the same effects as the randomized experiments, even after conditioning on extensive demographic and behavioral variables (Gordon et al., Marketing Science, 2019).

Three ways to measure it

  • Holdout test (Conversion Lift). Meta compares purchases in a test group with purchases in a control group held out from the ads, scaled to the same size. The result is the number of conversions that would not have happened without the ads, reported with a 90% credible interval and a cost per incremental conversion (Meta Business Help Center).
  • Geo test. Ads run in some regions and pause in comparable ones, and you compare sales between them. Meta's open-source GeoLift tool was built for cases where people-based Conversion Lift is not feasible, and names healthcare advertisers as an example. Meta still recommends people-based tests where possible because they have higher statistical power (GeoLift by Meta).
  • Meta's incremental attribution model. Ads Manager offers an incremental attribution model that uses machine learning to predict whether a conversion was caused by an ad, and optimizes delivery toward those conversions (Meta Business Help Center). It is useful, but it is still Meta's model of Meta's effect, not an experiment you control.

You do not need a test running all year. You need one before a large budget increase, and a fresh one when Meta and Shopify have drifted apart for weeks.

Is my agency inflating ROAS?

Usually not on purpose. Meta's ROAS is a real number from Meta. It is also the number most favorable to the ads, and when a team is judged on it, nobody has a reason to look past it.

Several choices can lift reported ROAS without adding an order: leaning on view-through credit, shifting budget to retargeting and existing customers who were going to buy anyway, or reporting through a month when an email promotion carried revenue. A change of attribution model matters too. Meta warns that results cannot be compared across ad sets with different attribution models, because each one counts differently, and points to its Compare Attribution Settings feature for a like-for-like view (Meta Business Help Center). Because the attribution model also informs delivery, that feature is a safer way to see the view-through share than switching the setting.

Ask for these five things every month:

  1. Platform ROAS, blended MER and first-order MER on one page, for the same dates.
  2. The attribution setting on every active ad set, and the date of any change.
  3. UTM coverage: Meta's reported purchases next to Shopify orders from Meta-tagged sessions.
  4. New versus returning customers among Shopify's Meta-tagged orders.
  5. Sessions, cost per session, conversion rate and revenue per session for Meta traffic.

A team that sends these without being asked is managing your business. A team that only sends ROAS is managing its own scorecard. Our guides on agency red flags and questions to ask a DTC agency go further.

How we read Meta against Shopify at Succession

When a founder brings us two dashboards that disagree, we do not pick a winner. We rebuild the view from the store outward.

  1. One market first. We isolate the US before reading any rate. Mixed international traffic moves every ratio and hides the real change.
  2. Shopify orders are the scoreboard. Meta's reported purchases decide which ad beats which. Shopify orders decide whether the business grew.
  3. UTM coverage before CAC. We check what share of Meta's reported purchases Shopify can actually see before we trust any acquisition cost built on them.
  4. Revenue per session next to ROAS. Sessions, cost per session, conversion rate and revenue per session sit under every ROAS line, so a better page is never booked as better media buying, and a site problem is never blamed on media.
  5. Volume-matched days. We compare days with similar spend, and the same weeks last year, so scale and season do not pass for performance.

The data pull is automated on our side. The read itself is something any founder can ask their team or agency for this week.

What should you do this week?

  1. Put platform ROAS, blended MER and first-order MER side by side for the last 12 weeks, US only if you sell abroad.
  2. Check the attribution setting on every active ad set, and whether it changed during those weeks.
  3. Compare Meta's reported purchases with Shopify orders from Meta-tagged sessions, week by week, and write down the share.
  4. Add sessions, cost per session, conversion rate and revenue per session for Meta traffic under your ROAS line.
  5. Split Shopify revenue into first-time and returning customers, and find out whether renewal orders are being sent to Meta as purchases.
  6. If the numbers still disagree and a budget decision rides on them, plan a holdout or geo test before you move the money, or bring all of it to a free growth audit and we will read it with you.

FAQ

Why doesn't my Meta ROAS match Shopify revenue?

Because they count different things. Meta credits purchases inside its attribution window, 7-day click and 1-day view by default, including view-through, cross-device, returning-customer and modeled purchases. Shopify credits each order to one channel, by default the last non-direct click it can trace. Meta can also date a sale to the day of the ad impression. A gap is normal. A gap that keeps widening while revenue stays flat is the signal to act on.

MER vs ROAS: which one matters more?

They answer different questions. Platform ROAS is for comparing campaigns and ads inside Meta, because all of them are measured with the same ruler. Blended MER, total revenue divided by total ad spend, tells you whether the business gets more revenue per ad dollar. First-order MER, new-customer revenue divided by ad spend, tells you whether ads are buying new customers. For budget decisions, the two MERs should carry more weight than platform ROAS.

What is first-order MER?

First-order MER, sometimes called new-customer MER, is revenue from first-time customers divided by total ad spend. It leaves out renewals and repeat orders, which ads did not necessarily cause, so it shows what your ad budget is buying in new customers. Read it next to cohort payback, because a subscription brand can run a low first-order MER on purpose when repeat revenue covers the gap.

Is my agency inflating ROAS?

Usually not deliberately, but Meta's ROAS is the number most favorable to the ads. View-through credit, retargeting existing customers and changes to the attribution setting can all lift it without adding an order. Ask for platform ROAS, blended MER and first-order MER on one page, the attribution settings in use, and what share of Meta's reported purchases Shopify can see. If those tell different stories, reported ROAS is not the number to scale on.

Should I switch Meta to click-only attribution?

Not just to make reports look stricter. In Meta's standard attribution model, the setting also tells delivery which conversions to optimize for, so changing it changes how your ads are delivered, not only how they are counted. To see how much of your result comes from views, use Meta's Compare attribution settings feature in reporting instead, and make budget calls on Shopify's numbers.

Does Meta count subscription renewals as ad sales?

It depends on your tracking setup. Shopify's own Meta integration sends a Purchase event when a visitor completes checkout and views the thank you page, which a background renewal does not do. Some server-side setups send every order, renewals included, and Meta can then credit renewals from subscribers who clicked or viewed an ad inside the window. Find out which setup you run before trusting ROAS on a subscription brand.

What does last non-direct click mean in Shopify?

It is the default attribution model in Shopify's marketing reports. The last channel a customer clicked before buying gets 100% of the credit, and direct visits are ignored unless the whole journey was direct. A customer who clicks a Meta ad and later returns by typing your URL is credited to Meta. A customer who only saw a Meta ad and later clicked an email is credited to email.

How do I know if my Meta ads are incremental?

Only an experiment can tell you. A Conversion Lift test holds out a control group that cannot see your ads and measures the difference in purchases. A geo test pauses ads in some regions and compares them with similar regions. Meta's incremental attribution model predicts which conversions ads caused, but it is still a model. Run a test before any large budget change, or when Meta and Shopify have drifted apart for weeks.

When to bring in Succession Media

Succession Media is a DTC growth agency for Shopify brands doing $50K to $1M a month, strongest in supplement, wellness and health categories. This guide's topic maps to our Full-stack DTC growth work. It is worth a call if:

  • You spend $30,000 or more a month on Meta, and Meta's ROAS and Shopify revenue have moved in different directions for a month or more.
  • A budget decision, such as scaling, cutting or renewing an agency, depends on numbers two dashboards disagree on.
  • Nobody can tell you what share of Meta's reported purchases Shopify can actually see.
  • Reported ROAS is climbing while revenue from first-time customers is flat or falling.
  • Your reports show spend, ROAS and CPA, but not sessions, cost per session, conversion rate or revenue per session.

Sources

  1. Meta for Developers: Ads Insights API metric availability updates
  2. Meta for Developers: Ad Account Insights reference (attribution windows, action report time)
  3. Meta Business Help Center: About attribution models and attribution settings
  4. Meta Business Help Center: About actions attributed to your ad
  5. Meta Business Help Center: About conversion count differences between Meta Ads Reporting and third-party reporting tools
  6. Meta Business Help Center: Troubleshoot common reporting differences with third-party tools
  7. Meta Business Help Center: About cross-device reporting
  8. Meta Business Help Center: About Meta's modeled conversions
  9. Meta Business Help Center: Differences between event counts in Ads Manager, Ads Reporting and Events Manager
  10. Meta Business Help Center: About incremental attribution
  11. Meta Business Help Center: Facebook Lift metrics glossary
  12. GeoLift by Meta: What is GeoLift?
  13. Shopify Help Center: Marketing reports and attribution models
  14. Shopify Help Center: Marketing performance
  15. Shopify Help Center: Facebook data sharing
  16. Gordon, Zettelmeyer, Bhargava and Chapsky: A Comparison of Approaches to Advertising Measurement (Marketing Science, 2019)

How we researched this guide

We read Meta's own Business Help Center pages on attribution settings, modeled conversions, reporting differences and lift metrics, Meta's developer documentation for the Ads Insights API, Shopify's Help Center pages on marketing reports and attribution models, and one peer-reviewed study on ad measurement, all fetched on October 4, 2026. The worked examples use illustrative numbers, not client data, and the reading method in the Succession section describes how we run our own audits. Last reviewed .

Hamid Chakir
Hamid Chakir

Co-Founder, CRO and Landing Pages, Succession Media

CRO and landing-page architect for 7 and 8-figure DTC brands. Runs the strategy call, the funnel teardown, and the weekly testing loop that turns spend into profit.

Related guides