Paid Media Attribution: Why Meta, Google and Shopify Don't Agree
Meta, Google and Shopify disagree because each counts sales by its own rules: Meta and Google credit their own ad interactions inside attribution windows and both can claim one order, while Shopify assigns each real order to one channel. Use Shopify for revenue, platform data inside each platform, and blended numbers for budgets.
Every ecommerce founder eventually runs the same experiment by accident. Add up the purchases Meta claims, add the purchases Google claims, and compare the total to the orders in Shopify. The platforms almost always claim more sales than you actually made. Sometimes a lot more.
The instinct is to assume something is broken: the pixel, the tags, the agency. Usually nothing is broken. Each system is answering a different question, using different rules, with different visibility into the customer journey. Paid media attribution isn’t a single truth that one tool gets right and the others get wrong. It’s a set of competing accounting methods, and the job is knowing which one to use for which decision.
This guide covers why Meta, Google, and Shopify disagree, what each number is actually good for, and the operating system we use to make budget decisions when no single dashboard can be trusted on its own.
What is paid media attribution?
Paid media attribution is the process of assigning credit for a sale to the ads a customer interacted with before buying. Every platform runs its own version, and each one is built to answer “did my ads help?” from its own vantage point.
That last part is the whole problem. Meta sees Facebook and Instagram, Google sees its own surfaces, and Shopify sees sessions on your store and the orders that followed. Nobody sees the whole journey, which is what makes cross-channel attribution so hard, and why the right question isn’t “which number is correct?” It’s “correct for what?”
Why don’t Meta, Google and Shopify report the same sales?
Because they count different things. Meta and Google count conversions they can connect to an ad interaction inside a window. Shopify counts orders and assigns each one to a single channel based on the visits that preceded it. Six mechanical differences drive almost every gap:
| Reason | Meta | Google Ads | Shopify | Effect on the numbers |
|---|---|---|---|---|
| 1. Same order claimed twice | Counts it if a Meta interaction is in its window | Counts it if a Google click is in its window | One order, one channel | Platform totals exceed real orders |
| 2. Window length | 1 or 7 days after a link click, 1 day after a view | 30-day click window by default for most actions | 30-day interaction window | Late buyers count in one place and not another |
| 3. Views and engagements | Counts view-through and engage-through purchases | Search and Shopping are click-based | Cannot see a view or engagement | Meta reports more than Shopify credits to Meta |
| 4. Which date | Not compared here | Click date in the main columns | Order date | Recent days mismatch even with perfect tracking |
| 5. Attribution model | Meta’s own attribution setting | Data-driven by default, or last click | Model chosen in the report | The same order moves between channels |
| 6. Modeled or lost conversions | Models some missing conversions | Models some missing conversions | Unknown sources become direct | Platforms push up, Shopify pushes down |
Each row is explained below, with the platform’s own documentation.
1. They each claim the same order
A customer sees a Meta video, searches your brand on Google two days later, clicks a Shopping ad, and buys. Meta records a conversion because the purchase happened inside its window after an ad interaction. Google records a conversion because the customer clicked its ad before buying. Both are telling the truth by their own rules. Neither platform deduplicates against the other, because neither can see the other’s data. Add them up and one order becomes two.
This is the single biggest reason platform totals exceed Shopify orders, and it gets worse with every channel you add.
2. Attribution windows are different lengths
Meta’s attribution settings let you count purchases within 1 or 7 days of a link click, and within 1 day of an ad impression, according to Meta’s own documentation on attribution settings. Most ecommerce accounts run the 7-day click, 1-day view setting. Google Ads defaults to a 30-day click-through conversion window for most conversion actions, adjustable per action. Shopify’s marketing reports work on a 30-day interaction window: per Shopify’s help documentation on marketing reports, if a visitor doesn’t buy within 30 days, the first interaction referrer resets.
A customer who clicks a Meta ad and buys on day 10 counts for Google (if a Google click is also in the path) but not for Meta under a 7-day click setting. Same order, different verdicts, purely because of window length.
3. Views and engagements count on Meta, not in Shopify
Meta credits some purchases to people who saw an ad but never clicked. In 2026 it also split out a third category. Since Meta’s March 2026 click attribution update, click-through attribution for website conversions counts only link clicks. Likes, shares, saves, and other non-link interactions moved into a new bucket called engage-through attribution, which counts conversions within 1 day of those actions, including video plays of 5 seconds or more.
Shopify can’t see any of that. If nobody clicked through to your store from Meta, Shopify has no Meta session to credit. It will hand the order to whatever channel delivered the visit, often Google, direct, or email. This is why Meta attribution can look strong in Ads Manager while Shopify shows a modest number next to “Facebook.”
4. Google reports on the click date, Shopify on the order date
This one quietly wrecks week-over-week comparisons. According to Google’s documentation on conversion tracking data, the primary conversion columns are calculated based on the time of the click, not the time of the conversion. A click last Tuesday that converts this Friday gets reported back to last Tuesday. Shopify records the order on Friday.
So in Google Ads attribution, recent days keep rising as delayed conversions arrive, and short date ranges mismatch Shopify even with perfect tracking. Google offers a “Conversions (by conv. time)” column for exactly this comparison. Use it when reconciling.
5. The attribution models are different
Inside a single platform, the rule for splitting credit across touchpoints also differs. Google Ads now supports only two attribution models: data-driven, the default for most conversion actions, and last click. First click, linear, time decay, and position-based were retired. Data-driven attribution can give Google fractional credit for an order based on modeled contribution.
Shopify’s marketing reports support five models: last non-direct click, last click, first click, any click, and linear. Its documentation says reports default to last click when you combine a sales metric with a marketing dimension. Under last click, Shopify attribution treats the customer who discovered you on Meta and came back by typing your URL as a “direct” sale. Switch to last non-direct click and the same order may move to a paid channel. Same store, same order, different answer depending on a dropdown.
6. Some conversions are modeled, some are lost
Privacy changes mean no platform sees every conversion. Browser restrictions, ad blockers, consent choices, and app tracking prompts all break the link between an ad and a purchase. Platforms fill part of that gap with modeling, estimating conversions they can’t directly observe. Shopify fills it with nothing: an order with no identifiable source shows up as direct or unattributed. Both are defensible; they just push the numbers in opposite directions.
A worked example: one week, three dashboards
Here’s an illustrative week with deliberately round numbers, not benchmarks. Your store took 400 orders. You spent on Meta and Google.
- Meta Ads Manager reports 260 purchases at 7-day click, 1-day view.
- Google Ads reports 190 conversions (data-driven, by click date).
- Shopify attributes 120 orders to Meta, 110 to Google, 90 to direct, 50 to email, and 30 to organic search.
The platforms claim 450 purchases against 400 real orders. Meanwhile Shopify gives Meta less than half of what Meta claims for itself.
Is Meta lying? Not necessarily. Some of those 260 are view-through purchases Shopify can’t see. Some are customers who clicked a Meta ad, then returned through branded search, which Shopify credits to Google and Google credits to itself. Some of the 90 “direct” orders were driven by ads the customer remembered rather than clicked. The real number sits between the low Shopify view and the high platform view, and no dashboard tells you where.
How big a gap between platforms and Shopify is normal?
There’s no universal number, and anyone quoting you a “normal” percentage is guessing at your account. It depends on your channel mix, your share of upper-funnel video, your consent rates, and the settings above.
What matters more than the size of the gap is its stability. If Meta has consistently claimed about 1.5 times what Shopify credits it for six months, that ratio is a usable calibration. If the ratio suddenly jumps, something changed: a tracking break, a settings change, or a platform update like Meta’s click redefinition. Investigate the movement, not the gap itself.
Which number should you actually trust?
Use each source for the decision it’s built for, and never use one source for everything. That rule is the foundation of useful ecommerce attribution.
Shopify is your revenue truth. Orders, revenue, refunds, and new versus returning customers. When the question is “how much did we actually sell?”, Shopify (or your order system) wins. Its channel attribution, though, systematically undercredits ads that create demand without a click.
Platform data is for in-platform optimization. Meta’s numbers are the right input for comparing one Meta ad set to another, or one creative to another, because the same rules apply to every row. Same for Google campaigns. Platform data is weak at comparing Meta to Google, because each one grades its own homework.
Blended numbers are for budget decisions. Total revenue divided by total ad spend (often called MER), and total new customers divided by total ad spend (blended new-customer CAC), can’t be double counted. If platform ROAS climbs while blended MER falls, believe MER. For how to set the targets those numbers should hit, see our guide to what a good ROAS looks like for ecommerce.
How do you make better decisions from conflicting attribution data?
You won’t get the dashboards to agree, and good paid media attribution doesn’t require it. What you need is a repeatable process that turns three imperfect sources into confident decisions. Here’s the one we run.
Fix the plumbing first
Before arguing about models, confirm:
- Server-side signals are live. Meta’s Conversions API alongside the pixel, and Google’s enhanced conversions, recover purchases browser tracking misses.
- Deduplication works. Pixel and server events for the same purchase must share an event ID, or Meta counts the order twice.
- UTMs are consistent. Every paid link carries source, medium, and campaign parameters in a fixed naming convention, so Shopify and your analytics can credit the visit properly. The UTM naming convention template gives one convention you can copy.
- Purchase values are right. Decide whether conversion value includes tax and shipping and apply it everywhere. Mismatched value definitions alone can create a large “ROAS gap.”
Pin your settings and write them down
Pick an attribution setting per platform and leave it alone. Switching Meta from 7-day click to 1-day click mid-quarter makes performance look worse overnight with no change in customer behavior. Document the window, model, and value definition for every platform, and note the date of every change, including platform-side changes like Meta’s March 2026 click update. When a trend breaks, the log is the first place to look.
Let blended numbers referee the budget
Make the top-level spend decision on blended MER and blended new-customer CAC against your allowable CAC. Then use platform data to decide where inside each platform the money goes. This is the same discipline we describe in our ecommerce advertising budget guide: the budget comes from unit economics, and the referee is the number nobody can claim twice.
Test incrementality on the big questions
Attribution tells you who touched the sale. Incrementality tells you whether the sale would have happened anyway. For questions like “is branded search worth it?” or “is our retargeting just claiming customers who were already buying?”, run a holdout test: turn spend off in a set of regions or audiences, keep it on elsewhere, and compare. Platform lift tools have also become more accessible. Google says incrementality experiments that once cost upwards of $100,000 can now run on $5,000. Meta offers Conversion Lift studies for the same purpose.
Run one or two well-designed tests a quarter on your biggest spend lines. The geo holdout section below shows how to design one. (For the general definition of incrementality and how the main test types compare, AdBoost Health keeps an incrementality glossary entry.)
Add a marketing mix model once you have the history
At meaningful spend across several channels, a marketing mix model estimates each channel’s contribution from aggregate spend and sales data, with no user-level tracking at all. It needs a long, clean spend and sales history, so treat it as a scale-stage tool.
Calibrate, don’t reconcile
Once you have test results, use them to set a multiplier for each platform. If a holdout test suggests Meta’s true incremental contribution is roughly two thirds of what Ads Manager claims, apply that discount to Ads Manager going forward and re-test periodically. That beats any spreadsheet that forces three systems to match.
What is a geo holdout test?
A geo holdout test measures how many sales your ads actually cause by pausing or cutting spend in a set of regions while keeping it running in comparable regions, then comparing sales between the two. Because it reads store sales by region rather than ad clicks, it needs no user-level tracking and sees every channel at once, including retail.
Meta publishes GeoLift, an open-source R package for exactly this. It uses synthetic control methods: instead of comparing the test regions to one hand-picked control region, it builds a weighted blend of untreated regions that tracked the test regions closely before the test, and measures the gap after spend changes. It also includes power calculators for choosing test markets, so you know before you start whether the test can detect the effect you care about.
A workable design for an ecommerce brand:
- Pick the question. One channel or campaign type at a time: “What happens to total sales if Meta prospecting stops in these regions?”
- Assemble the data. Daily or weekly orders or revenue by region (state, province or metro), with no gaps. GeoLift’s walkthrough needs three columns at minimum: location, date and the KPI, and drops any location with missing dates.
- Choose markets with the power calculator, not by gut. Regions that move together before the test make a sharper comparison.
- Set the duration. The walkthrough’s rule of thumb is a test period that holds at least one full purchase cycle; for replenishment products, that means at least one reorder window.
- Hold everything else still. No new promotions, price changes or channel launches in only some regions during the test.
- Read lift in sales, then in cost. Incremental orders divided by the spend withheld or added gives an incremental cost per order you can compare with Ads Manager’s cost per purchase.
Illustrative example: a brand pauses Meta prospecting in regions that normally produce 15% of its sales. The synthetic control predicts 3,000 orders in those regions over four weeks; actual orders are 2,550. The 450-order gap, against the Meta spend withheld there, is the incremental effect. If Ads Manager credited 900 purchases to that spend, Meta’s incremental contribution is about half of what it reports, which becomes the calibration multiplier described above.
Which post-purchase survey question fills the attribution gap?
Ask first-time customers one question on the order confirmation page, “How did you first hear about us?”, and compare the answers with the channel Shopify credited for the same orders. The survey catches what tracking cannot: the podcast, the friend, the creator video watched without a click.
Map every answer option to the source names your UTMs already use, so survey answers and click data sit in the same report:
| Answer option shown to the customer | Channel bucket | utm_source it maps to | What a gap usually means |
|---|---|---|---|
| Instagram or Facebook | Meta (paid and organic) | facebook, instagram | Survey share above Shopify share: view-through and engagement demand Meta started |
| TikTok | TikTok (paid and organic) | tiktok | Same as above, often larger for video-led brands |
| Google search | Survey share below Shopify share: search harvested demand another channel created | ||
| YouTube | YouTube | youtube | Video seen on a TV or another device, then a branded search |
| A creator or influencer | Creators and partnership ads | the creator’s handle in utm_campaign | Creator content working beyond its clicks |
| Podcast | Podcast | podcast | No clicks at all; the survey is the only signal |
| A friend or family member | Word of mouth | none (no UTM) | Organic demand; do not credit it to ads |
| Email or text from you | Owned channels | klaviyo, email, sms | Mostly returning visitors who slipped through the first-time filter |
| In a store | Retail | none | Retail awareness feeding online sales |
| I don’t remember | Unknown | none | Keep it; forcing a choice adds noise |
Four rules keep the data honest:
- Ask only first-time customers, or filter returning customers out before you analyze. Returning customers answer about their first purchase, not this one.
- Randomize the order of the options (except “I don’t remember” and “Other”, which stay last), so the top option does not win by position.
- Ask about “first hear”, not “what made you buy”. The question is about discovery, which is exactly where click-based attribution is weakest.
- Compare shares, not totals. Illustrative example: if 40% of first-time buyers say Instagram or Facebook while Shopify credits Meta with 20% of first-time orders, Meta is creating demand that gets credited elsewhere. Read the trend monthly, and treat it as one input next to blended numbers and holdout tests.
What attribution mistakes cost the most?
- Summing platform revenue. Adding Meta, Google, and TikTok reported revenue to compute ROAS guarantees an inflated number. Use store revenue.
- Cutting top-of-funnel on last-click data. Upper-funnel video rarely wins last click. Cut it on Shopify’s channel report and branded search, direct, and email often decline weeks later.
- Comparing short, recent date ranges. Click-date reporting and conversion delays make the last few days look worse than they’ll end up.
Considered purchases with long research cycles, like many wearables brands, make these traps worse: short windows undercount the ads that started the journey.
Where this leaves you
Meta, Google, and Shopify will never agree, and they aren’t supposed to. Each is accurate inside its own rules and misleading outside them.
The fix isn’t a perfect dashboard. It’s a clear division of labor: Shopify for revenue truth, platform data for optimizing inside each platform, blended MER and new-customer CAC for budget calls, and periodic incrementality tests to calibrate the rest. Run that consistently and the disagreement stops being a source of anxiety and starts being information.
If you’re staring at three dashboards and three different stories, the next step is a short strategy call: we’ll walk through your numbers with you and tell you which ones should be driving your spend.
Frequently asked questions
Why do Meta, Google and Shopify report different paid media attribution numbers?
Because each one answers a different question with different rules. Meta and Google count conversions they can connect to their own ad interactions inside an attribution window, and neither deduplicates against the other. Shopify counts real orders and assigns each one to a single channel. Different windows, models, click versus order dates, and modeled conversions widen the gap further.
Why does Meta attribution show more purchases than Shopify?
Meta credits some purchases to people who saw or engaged with an ad without clicking, and Shopify can't see those interactions. If nobody clicked through from Meta, Shopify hands the order to whichever channel delivered the visit, often Google, direct, or email. Customers who clicked a Meta ad and later returned through branded search can also be claimed by both Meta and Google.
Which number should drive ecommerce marketing attribution decisions?
Use each source for the decision it's built for. Shopify is your revenue truth for orders and revenue. Platform data is for comparing ad sets, creatives, and campaigns inside each platform. Blended MER and blended new-customer CAC referee the overall budget, because they can't be double counted. If platform ROAS climbs while blended MER falls, believe MER.
Should we buy a third-party attribution tool?
Possibly, at scale. Multi-touch tools deduplicate across channels using your store data, which fixes double counting. They still rely on tracking that privacy changes erode, so validate them with incrementality tests. Meta has named partners like Northbeam and Triple Whale in its own measurement announcements.
Who should own attribution: us or our agency?
You should own the source data and the definitions. Your agency should run the process and report blended numbers next to platform numbers every time. If an agency only ever shows you platform ROAS, that's worth raising, and it's one of the questions in our guide to choosing a performance marketing agency.
What is a geo holdout test?
A geo holdout test pauses or changes ad spend in a set of matched regions while keeping it running elsewhere, then compares sales between the two groups to estimate how many sales the ads actually caused. Meta's open-source GeoLift package is one way to design and read one.
Three dashboards, three different answers?
Book a short strategy call. We'll line up your Meta, Google, and Shopify numbers side by side, show you where the gap comes from, and tell you which number should actually drive your next budget decision.
Apply to partner