Cross-channel attribution is how you decide which marketing channel gets credit for a sale when the buyer touched several before checking out. The catch: every platform uses a different crediting rule, so Meta, Google, and Shopify each report a different number for the exact same orders. None of them is lying — they answer different questions. Treat your Shopify order count as the truth for how many sales happened, and platform numbers as estimates of influence, not fact.

What is cross-channel attribution?

Cross-channel attribution is the practice of assigning credit for a conversion across the different marketing channels a customer interacted with. A buyer might see a Meta ad, search your brand on Google, then return directly to buy. Attribution decides who gets the sale.

The problem is that there is no single referee. Each tool in your stack runs its own crediting logic, on its own tracking layer, over its own time window. So the same order shows up as one number in Meta, a fraction of a number in Google Analytics, and a whole order in Shopify.

This guide explains why those numbers never match, walks a full week of orders through every system, and shows which number to trust for which decision. If you want the broader picture of how sales, analytics, and bank deposits fit together, start with our guide to reconciling your ecommerce data.

Why every channel reports a different number

The mismatches split into two families. Methodology gaps are structural — systems measure the same reality differently, and no amount of setup work closes them. Tracking gaps are real data loss, and better plumbing narrows them. Confusing the two is the single most expensive mistake in attribution.

Different attribution models

Shopify's default is last non-direct click: one hundred percent of an order's credit goes to the last channel the customer clicked before buying. Meta credits itself whenever a purchase falls inside its attribution window after a click or a view of its ad. Google Analytics 4 defaults to data-driven attribution, which splits a single conversion fractionally across several touchpoints.

So one real order can appear as a full conversion in Shopify (to whichever channel was last), a full conversion in Meta (if Meta touched it in-window), and four-tenths of a conversion in GA4. Three systems, one sale, three different counts — all internally correct.

View-through and modeled conversions

Meta's current default window is seven-day click plus one-day view, according to attribution guides from Foreplay and Jon Loomer. That one-day view means Meta claims a purchase made within a day of seeing an ad the buyer never clicked. Shopify has no concept of a view — it only records a completed checkout.

View-through is the biggest single inflator of Meta over Shopify. A gap of roughly twenty to thirty-five percent between Meta-reported purchases and Shopify orders is normal on the default window, per field data from Vaizle and TrackBee. On top of that, when Meta or GA4 cannot directly observe a conversion, they estimate it with a model and report the estimate as if it were counted. Shopify never models.

Timing and timezone drift

Meta reports a conversion on the date of the ad click that earned the credit, not the date of the purchase. A click on Monday that converts Thursday shows up in Meta on Monday, while Shopify records the order on Thursday. This alone desynchronizes daily comparisons even when the totals eventually agree.

Add timezone boundaries — Shopify rolls over at midnight UTC, Meta reports in the ad account's timezone, GA4 in the property's — and orders near a day boundary land on different calendar days in each tool. Always compare on trailing seven-to-fourteen-day windows, never single days.

Genuine tracking loss

Some of the gap is real data disappearing. Ad blockers and browser tracking prevention stop client-side pixels from firing, affecting an estimated ten to twenty-five percent of users according to Audiense and Elevar. Cookie-consent declines and buyers who close the tab before the thank-you page loads add more.

In every one of these cases Shopify still records the sale, because it captures the order server-side. That is why the healthy GA4-versus-Shopify purchase gap sits around fifteen to thirty percent, per BlueFrog and Consentmo — anything past forty percent signals a real break, not just methodology.

A worked example: one week, four different numbers

Say you run a print-on-demand mug store and push Meta ads for a week. To keep the math clean, assume each order carries a subtotal of $40, shipping of $5, and tax of $4, for a $49 total. These are made-up figures for the walkthrough, not market benchmarks — the point is the relationships between the numbers.

Here is the ground truth for the week: 100 real orders. Of those buyers, 55 clicked a Meta ad within seven days before buying, 15 only saw a Meta ad within one day, 10 clicked a Google ad last, and 20 arrived via organic search or direct. Eight of the hundred later requested refunds.

What Meta reports: about 78 purchases. It counts 55 click-through plus 15 view-through, adds roughly 8 modeled conversions for buyers it couldn't observe, files them on the click date (so some land in the prior week), and does not subtract the refunds. It passes subtotal only, so its revenue reads near $40 × 78 = $3,120.

What GA4 reports: about 72 purchases, split. It loses roughly 20 buyers to blockers, consent, and closed tabs, recovers some by modeling, then splits each under data-driven attribution — paid social might show 48, organic 14, paid search 10. No single channel row matches Shopify's last-click view.

What Shopify reports: 100 orders. By last non-direct click it credits about 55 to Facebook, 10 to Google, and 35 to search or direct. The 15 view-through buyers are not credited to Facebook here — they clicked nothing. Total sales run 100 × $49 = $4,900, dropping to about $4,508 after the eight refunds.

What actually hits your bank: the payout. The deposit is captured charges minus fees, refunds, and disputes. Using Shopify Payments' Basic-plan US rate of roughly 2.9% plus 30¢ per transaction and a chargeback fee near $15, both per Webgility, the arithmetic runs like this:

  • Captured charges: 100 × $49 = $4,900.00
  • Processing fees: (2.9% of $4,900) + (100 × $0.30) = $142.10 + $30.00 = $172.10
  • Refunds issued: 8 × $49 = $392.00
  • One chargeback fee: $15.00
  • Net payout deposited: $4,900.00 − $172.10 − $392.00 − $15.00 = $4,320.90

So one week of 100 real orders produces four different "sales" numbers: Meta's 78, GA4's roughly 72, Shopify's roughly $4,508 in total sales, and $4,320.90 in the bank. None is wrong. Shopify's order count is the truth for how many sales happened; Meta's number estimates how many its ads influenced; the payout is the truth for cash. To see why that last figure never equals the sales report, read how Shopify payout reports actually settle.

The profit angle everyone skips

Here is what most attribution articles never reach: none of these four numbers tells you whether the week made money. Meta's return-on-ad-spend uses inflated conversions and subtotal-only revenue. Shopify's total sales ignore product cost, shipping, and processing fees. The payout nets cash but says nothing about which ad drove it.

True per-order profit lives at the intersection — the ad spend that earned the click, the platform fee on the deposit, the Printify or Printful cost of the mug, and the actual amount collected. Stitching those from four tools by hand, order by order, is where reconciliation projects die. A post-purchase survey helps sanity-check platform claims by asking buyers where they actually came from, which is why many stores pair attribution work with a post-purchase survey.

This is the problem PodVector was built for. It connects your Shopify store, Meta Ads, Google Ads, Printify, Printful, and Stripe, then computes true per-order profit from live data — not platform-reported return on ad spend. Victor, its AI operator, reads that data and proposes moves, taking Shopify-side actions only with your approval. Victor is not a dashboard, and he does not touch your ad account; he reads ad data and hands you the decision.

If you want your real per-order profit computed across channels instead of guessed from mismatched reports, try PodVector.

FAQs

Why does Facebook show more purchases than Shopify?

Mostly view-through and modeled conversions. Meta's default seven-day-click plus one-day-view window credits sales from ads that were merely seen, and it estimates conversions it cannot observe. Shopify only counts completed checkouts. A twenty-to-thirty-five-percent gap on the default window is normal, per Vaizle — it is not proof of fraud or of a broken pixel.

Will setting up the Conversions API make my numbers match?

No. The Conversions API recovers events lost to ad blockers and consent declines, which narrows tracking gaps. It does nothing about methodology gaps — view-through, modeling, last-click versus window, and click-date reporting all remain. Even with flawless tracking you should still expect a structural gap above twenty percent between Meta and Shopify.

Which number should I trust?

It depends on the question. For how many sales happened and how much revenue you earned, trust Shopify's order count and total sales, because it records orders server-side. For how much cash you received, trust the payout and reconcile it against balance transactions, not the sales report. For how much your ads influenced demand, read Meta's number as a directional estimate.

What is view-through attribution?

It is credit Meta assigns for a sale made shortly after a buyer saw an ad without clicking it. On the default one-day view window, a purchase within twenty-four hours of an impression gets counted. Shopify has no equivalent, so view-through is the largest single reason Meta's count runs above your order count.

Why is my payout smaller than my sales?

Because a payout is a batch of balance transactions — charges minus processing fees, refunds, and chargebacks — not a day's orders minus a markup. At roughly 2.9% plus 30¢ per transaction on the Basic plan, per Webgility, fees alone move the number, and refunds and disputes cut it further. Orders paid through third-party gateways like PayPal never enter the Shopify Payments payout at all, which is covered in detail in our breakdown of Shopify payout reports.

Do refunds lower all my dashboards?

No — only Shopify and your payout reflect refunds. Meta and GA4 generally keep the original conversion on the books, so their totals stay inflated after a refund while Shopify's net sales and your deposit both drop. That asymmetry is one more reason platform numbers and store-side numbers drift apart over time.