ULTRO NOTES Published

Marketing Attribution: Why GA4, Ads and Shopify Numbers Differ

How one purchase is counted in four tools, six reasons the numbers never match, each tool's defaults, why GA4 credits different sources in different reports, and which number an online store should use for what.

In shortMarketing attribution is the set of rules that decides which of the ads and channels a buyer touched gets credit for the sale. GA4, Google Ads, Meta Ads and Shopify each use their own rules. Google Ads and Meta Ads will both claim the same purchase, so adding up their conversions gives you more than your actual orders. The practical answer isn't to make the numbers match, but to decide which number you use for which decision.

Your ad platforms show 50 purchases, GA4 shows 32, and Shopify shows 41 orders. Same store, same period, three different numbers. Every time you share a report, someone asks which one is right, and it’s hard to give a clean answer. If you work with ecommerce numbers, you’ve probably been there.

The short answer: none of them is wrong. Each one counts by different rules, and those rules are attribution.

Most articles on attribution focus on the types of models. But many of the models those articles list have already been removed. The problem stores actually run into today is less about choosing a model and more about each tool counting differently.

Below: what attribution means, how GA4, Google Ads, Meta Ads and Shopify count differently, why the numbers don’t match, and which number an online store should use for what. Tool specs come from official help pages as of October 2026. Where we couldn’t confirm something for Meta Ads in Meta’s own help, we say so.

What is marketing attribution?

Attribution is deciding which of the ads and channels a buyer touched gets credit for the purchase.

Customers don’t always buy on the first touch. They see an ad on Instagram, search for the product a few days later, and buy from a link in your email. On that path, three touchpoints contributed to one purchase. The rule that decides where the credit goes is the attribution model.

ModelHow credit is assigned
Last clickAll of it goes to the last touchpoint clicked
Data-drivenEach touchpoint’s contribution is estimated and credit is split

These two are what GA4 and Google Ads mainly use today.

There used to be more: first click (all credit to the first touchpoint), linear (split evenly), time decay (more credit to touchpoints closer to the purchase) and position-based (more credit to the first and last). GA4 removed those four in November 2023, and Google Ads dropped them too. Some articles still describe “five attribution models,” but you can no longer pick them.

One purchase, seen in four tools

The fastest way to see why the numbers differ is an example. Say a customer did this:

DayWhat they did
Day 1Clicked an Instagram ad, looked at the product page, left
Day 4Searched for the product name, clicked a Google search ad, added to cart, left
Day 6Searched for the product name again, came in through a regular (organic) search result and bought

That’s one actual order. Here’s how each tool counts it on default settings.

How one purchase is counted by each tool. The customer clicks an Instagram ad on day 1, a Google search ad on day 4, and buys from organic search on day 6. Shopify records one order. Shopify's marketing reports and GA4 Traffic acquisition credit organic search with 1. GA4's attribution reports split the 1 purchase across both ads and organic search. Google Ads credits its search ad with 1 on day 4, the click date. Meta Ads credits the Instagram ad with 1 on day 6. Ad platforms total 2, Shopify and GA4 Traffic acquisition give ads 0, and there was 1 actual order.
How a purchase is counted after two ad clicks and an organic search visit on day 6 (default settings in each tool). As of October 2026. Created by ULTRO Inc. based on each tool's official help documentation. Click the image to enlarge.

As a table:

ToolHow it’s countedDate recorded
Shopify (orders)1 orderDay 6
Shopify (marketing reports)1 to organic search: last non-direct clickDay 6
GA4 (Traffic acquisition)1 to organic search: source of the purchasing sessionDay 6
GA4 (attribution reports)Split across the Instagram ad, the search ad and organic search by contribution (1 in total)Day 6
Google Ads1 to the search adDay 4 (the click date)
Meta Ads1 to the Instagram adDay 6

Four things stand out.

Google Ads and Meta Ads each count one. That’s two, but there was one order. Each platform counts a purchase after its own ad click as its own result. Neither can see whether the buyer also clicked another platform’s ad.

Shopify and GA4 Traffic acquisition give the ads zero. Both credit organic search, the source of the session where the purchase happened. Even with two ad clicks, these views show no ad result. The ad platforms show two, these show zero, for the same single order.

GA4’s attribution reports split the purchase so it adds up to one. GA4 sees every channel, so it divides one purchase across several touchpoints. That’s why the search ad’s credit here is smaller than in Google Ads.

The dates differ. Google Ads records the conversion on the day of the ad click, not the purchase. Someone who clicks at the end of one month and buys the next shows up in the earlier month in Google Ads and in the later month in GA4 and Shopify.

Six reasons attribution numbers don’t match

Here’s what drives the differences in that example.

1. Different rules for who gets credit

Ad platforms look only at their own ads. GA4 looks at every channel and, depending on the report, credits the source of the purchasing session or splits credit across touchpoints. Shopify’s marketing reports credit the last non-direct click. Same purchase, different scope and different rules.

2. Different lookback windows

How far back before the purchase a touchpoint can count varies by tool.

ToolDefault window
GA490 days for key events such as purchases
Google Ads30 days from the click
Meta Ads7 days after a link click, 1 day after a view, 1 day after a non-link engagement

Meta’s attribution settings offer 1 or 7 days after a link click, 1 day after viewing, and 1 day for engage-through (non-link interactions). The table shows the longest combination available.

For products with a long consideration period, such as expensive items, this gap gets big. Someone who buys 20 days after clicking an ad counts in Google Ads but not in Meta Ads.

3. Whether people who only saw an ad count

The tools also treat buyers who saw an ad without clicking differently.

  • Meta Ads: purchases within 1 day of seeing an ad are commonly included. Purchases within 1 day of a like, save or a video view of 5 seconds or more can also be included as engage-through.
  • Google Ads: purchases by people who only saw an ad are reported as view-through conversions in a separate column and aren’t included in the Conversions column. Engaged-view conversions from video ads, where someone watched for a certain length, are included in Conversions.
  • GA4: based on clicks. Only YouTube video ads watched beyond a certain point count as touchpoints.
  • Shopify: clicks only.

Social ads really can drive purchases without a click. But a buyer who was going to buy anyway and simply had an ad shown to them also gets counted. This is the biggest reason Meta’s numbers come out higher than GA4’s.

Since January 12, 2026, Meta’s Ads Insights API no longer returns 7-day and 28-day view windows (per Meta’s developer announcement). And since March 2026, Meta counts only purchases after a link click as click-through conversions. Purchases after a like, comment, share, save, a click elsewhere on the ad, or a video view of 5 seconds or more are reported separately as engage-through, within 1 day. When we checked on October 9, 2026, Ads Manager also displayed a notice to that effect.

This brings Meta’s “click” closer to how GA4 counts people who arrive from an ad. If you compare current click numbers with older ones, remember the definition changed. You can view engage-through conversions separately using the comparison option in Ads Manager’s attribution settings. Meta’s help notes that some accounts may still use the previous counting during the transition.

4. Different dates

ToolDate credited
Google AdsThe day the ad was clicked
GA4The day the purchase happened
ShopifyThe day the order was placed
Meta AdsFor website purchases, the day the purchase happened (per Meta’s developer documentation)

Google Ads’ Conversions column is calculated from the time of the click. That means recent days’ numbers keep growing: if someone clicks today and buys next week, today’s conversions go up by one. That’s why last week’s numbers look different on Monday than they do a week later.

Google Ads also has a column that reports by the time of the conversion: Conversions (by conv. time). Use it when comparing day by day with GA4 or Shopify.

5. Modeled conversions

GA4 and Google Ads both fill in what they couldn’t measure directly with modeled data, such as:

  • People who didn’t consent to cookies
  • People who clicked an ad on their phone and bought on a computer
  • People whose tracking was cut off by browser restrictions

Google Ads’ Conversions column can include both observed and modeled conversions. GA4’s attributed key event data can also include modeled conversions and may be updated for up to 12 days after the conversion is recorded.

Each tool models differently, so this adds to the gap.

6. What each tool can track at all

GA4 and ad tags run in the buyer’s browser. Buyers with ad blockers, buyers who declined cookies, and buyers who closed the browser before the thank-you page loaded never get tracked.

Shopify orders are recorded on the server, so none are lost. That’s why GA4 usually shows fewer purchases than Shopify has orders.

How many go missing varies by store. At one of our clients’ Shopify stores, we matched Shopify orders against GA4 purchases one by one over about six weeks, from August to mid-September 2026. 21% of orders were not in GA4. As far as GA4 knew, one in five orders never happened. August on its own came out at the same 21%, so this wasn’t a reporting delay.

Broken down by payment method:

Share of orders missing from GA4 by payment method at a Shopify store in Japan. All orders: 21%, or 1 in 5. Konbini (cash payment at a convenience store): about 80%. PayPay (mobile wallet): about 40%. Credit card: about 10%. PayPal and two other wallets: none missing.
Share of orders that never reached GA4, by payment method (measured at an ULTRO client store, August to mid-September 2026). Created by ULTRO Inc. Click the image to enlarge.

The store is in Japan, so two of these payment methods are specific to that market: konbini, where the buyer pays in cash at a convenience store, and PayPay, a mobile wallet. About 80% of konbini orders and about 40% of PayPay orders were missing from GA4, compared with about 10% of credit card orders. PayPal orders and orders from two other wallets had none missing.

Our working explanation is that many buyers finish paying on an off-site payment page and leave before returning to the store’s thank you page. If that page never loads, the browser tag never runs. We think the differences between off-site methods come down to how each provider sends the buyer back to the store after payment.

This store uses a system we built that matches Shopify orders against GA4 every day and sends only the purchases GA4 missed, server-side. Since it went in, reconciliation has shown zero missing orders. GA4 undercounting purchases is a gap you can close with the right setup.

In October 2026, we released that system as a Shopify app, GapFill. It’s our own product, so read with that in mind. It recovers missing GA4 purchase events server-side and works alongside your existing tags, and the missing purchases report is free. For how to check your own store and a comparison of three ways to close the gap, see GA4 Not Tracking All Shopify Purchases?

Our Shopify appGapFill: Recover missing GA4 purchase events server-sideWorks alongside your existing tags. Free missing purchases report.See GapFill →

Shopify’s help center also lists reasons its numbers differ from Google Analytics: browser extensions that block tracking, visitors with JavaScript or cookies turned off, how bots are counted, and time zone differences.

Ad platforms can receive purchase data from your server in addition to the browser tag. See Meta Conversions API for how that works, and Cookie consent for how consent affects tracking.

Default attribution settings in each tool

GA4Google AdsMeta AdsShopify
Default modelData-drivenData-drivenCounts purchases after its own adsLast non-direct click
ScopeAll channelsGoogle Ads onlyMeta Ads onlyAll channels
Lookback window90 daysClick 30 days, engaged-view 3 days, view-through 1 dayLink click 7 days, view 1 day, engage-through 1 dayNot stated in Shopify’s help
View-only buyersGenerally not includedSeparate column (video engaged views included)IncludedNot included
Date recordedPurchase dateClick datePurchase dateOrder date
ModelingYesYesCouldn’t confirm in Meta’s documentationNo

GA4 attribution: different reports, different rules

GA4 has one more source of confusion: different reports within GA4 use different rules.

GA4 tracks traffic sources at three scopes:

ScopeDimension prefixMeaningReport
User“First user”Where the user came from on their first visit. Stays the same when they returnUser acquisition
Session“Session”Where this visit came fromTraffic acquisition
Event(none)Which touchpoints get credit for a key event such as a purchaseAttribution reports in the Advertising section

Take the day-6 purchase from the example.

The same purchase shows a different source in three GA4 reports. The customer clicks an Instagram ad on day 1, a search ad on day 4, and buys from organic search on day 6. User acquisition (dimension prefix First user) credits the Instagram ad, the source of the first visit. Traffic acquisition (prefix Session) credits organic search, the source of the purchasing session. Attribution reports (no prefix) split credit across the Instagram ad, the search ad and organic search.
The same purchase in three GA4 reports. As of October 2026. Created by ULTRO Inc. based on Google Analytics Help. Click the image to enlarge.
  • User acquisition shows the Instagram ad (the source of the first visit)
  • Traffic acquisition shows organic search (the source of the purchasing session)
  • Attribution reports split credit across the Instagram ad, the search ad and organic search

The same purchase shows a different source in each. When GA4’s numbers don’t agree with each other, first check which report and which dimension you’re looking at.

If the day-6 visit had been direct (from a bookmark, say), Traffic acquisition wouldn’t show Direct; it would show the search ad, because session-scoped dimensions carry over the last non-direct source within the lookback window.

The attribution model only affects some reports

GA4’s Attribution settings, in Admin, offer three models:

ModelHow credit is assigned
Data-driven (default)Estimates each touchpoint’s contribution and splits credit
Paid and organic last clickAll credit to the last non-direct click
Google paid channels last clickAll credit to the last Google Ads click

Changing the model only affects reports that use event-scoped dimensions. User acquisition and Traffic acquisition always use paid and organic last click, regardless of the setting. That’s why the reports you look at every day don’t change when you switch models.

Direct traffic doesn’t get credit

In every GA4 model, direct visits (visits with no source) don’t receive credit. Only when the whole path is direct does Direct get the credit.

Plenty of buyers come back from a bookmark or an app and buy, so this makes sense. But visits that lost their source information along the way also become direct. If links in your emails, SMS messages or QR codes don’t carry UTM parameters, those visits are treated as direct and the credit goes to the touchpoint before them. Your email’s results end up credited to an ad. See UTM parameters for how to tag links.

Why GA4 and Google Ads differ, according to Google

Even when you import GA4 key events into Google Ads, the two won’t match. Google’s help lists these reasons:

  • Different dates (Google Ads uses the click date, Analytics the date the conversion happened)
  • Different counting (whether multiple purchases by the same person count every time or once)
  • Google Ads filters out invalid clicks
  • Different cookie lifetimes
  • Imports can take up to 24 hours

For how purchases get from your store into Google Ads, see Google Ads conversion tracking.

Which number to use for which decision

You can’t make the numbers match. What you decide is which number you use for which decision.

What you want to knowNumber to useWhy
Revenue, orders, gross profitActual orders in your cart (Shopify)Nothing is missing, and returns and cancellations can be reflected
Comparing channels (ads, search, email, social)GA4Counts every channel by the same rules
Comparing within one platform (campaigns, ads, audiences)That platform’s numbersConditions are consistent within the platform, and its bidding optimizes on these numbers
Overall ad profitabilityTotal ad spend vs. total store revenueNothing is counted twice

What not to do

Add up platform conversions for a total. The same purchase is counted on several platforms, so the total comes out too high. ROAS calculated from that total looks better than reality.

Compare ROAS across platforms as reported. Meta includes view-only buyers and Google Ads doesn’t. Lining up numbers counted by different rules doesn’t tell you “Meta is more efficient.” To compare platforms, use GA4’s numbers.

Report revenue from GA4. GA4 purchases come out lower than actual orders. Report revenue from your cart.

Judge overall profitability from totals

However the platforms split the credit, two numbers don’t move: your total ad spend and your total store revenue.

Blended ROAS = total store revenue ÷ total ad spend

This includes revenue that didn’t come through ads, so it’s higher than any platform’s ROAS. The absolute value matters less than the trend. If this number drops sharply in a month when you raised ad spend, the extra spend may not have turned into sales. If a platform’s ROAS looks great but the blended number doesn’t move, the platform may be counting people who would have bought without the ad.

For how to read ROAS, see What Is ROAS?

What attribution can’t tell you

Attribution counts which ads a buyer touched. It can’t tell you whether they would have bought without the ad.

Ads shown to people searching for your brand name look excellent in attribution. But many of those people would have clicked the organic result right below and bought anyway. Retargeting ads are similar. To learn how much of the credited revenue the ads actually added, you need a different method.

That method is to split people who see ads from people who don’t, and compare purchases.

  • Use the platforms’ tools. Google Ads and Meta Ads both offer conversion lift studies that measure the difference between a group shown ads and a group that isn’t. Both generally require working with the platform’s account team and enough volume.
  • Pause and compare yourself. Pause a specific ad for a set period and watch total store revenue. Seasonality and sales affect the result, so control for them, for example by comparing with the same period last year.
  • Split by region. Pause ads in some regions and compare with the rest.

For stores doing up to a few million dollars a year, the second option is the realistic one. Start with ads you suspect would have sold anyway, such as branded search and retargeting.

Analyzing historical data to estimate ad contribution, for example with regression, has the same limits:

  • Ads aren’t run at random. You spend more in busy seasons and launch several things at once, so it’s hard to tell which one worked.
  • Digital channels influence each other. Search ad clicks rise because of video and other ads.
  • What you get is correlation, not causation.

Splitting people who see ads from people who don’t is how you get around that.

Common attribution pitfalls

Judging from the last few days. Google Ads credits the click date, so the most recent days don’t yet include people who haven’t bought. A bad-looking CPA for the last week may just mean the numbers haven’t come in. The longer your customers take to buy, the longer you need to wait.

Decimal conversions. Data-driven attribution splits one purchase across touchpoints, so you’ll see numbers like 12.4. That’s not a bug.

Changing settings mid-stream. A GA4 model change applies to past data as well; a lookback window change applies only going forward. Change settings partway through and you can’t compare before and after. Write down the date you changed them.

Mismatched time zones. If GA4, your ad accounts and Shopify use different time zones, daily numbers shift. Monthly totals roughly match, but daily ones won’t.

Returns and cancellations. Ad platforms and GA4 count at the time of purchase. Later returns or cancellations usually don’t reduce their numbers, so the gap with store revenue widens for products with high return rates.

Sources

FAQ

What is marketing attribution?

It's deciding how much credit each ad or channel a customer touched before buying gets for that sale. A buyer might see an ad, search for the product later, then buy from an email on another day. The rule that decides whether the last touchpoint gets all the credit or the credit is split across several is called an attribution model.

Why don't GA4 and Google Ads show the same number of conversions?

They count with different rules. The main differences are which touchpoint gets credit, how far back touchpoints count, whether people who only saw an ad are included, and whether a conversion is recorded on the click date or the purchase date. Both also fill gaps with modeled data, and each can track different things. The numbers won't match even when everything is set up correctly.

My ad platforms' conversions add up to more than my actual orders. Is one of them wrong?

No. If someone clicks a Meta ad, later clicks a Google ad and then buys, Meta counts one purchase and Google Ads counts one purchase. Each platform counts purchases that followed its own ads as its own results. Platform numbers aren't meant to be added together; they're for comparing ads within that platform.

Which attribution model should I use in GA4?

Leaving the default, data-driven, is fine. GA4 offers three models: data-driven, paid and organic last click, and Google paid channels last click. First click, linear, time decay and position-based were removed in November 2023. Changing the model only affects some reports; Traffic acquisition and User acquisition don't change.

So which number should I trust?

It depends on the job. For revenue and order counts, use the actual orders in Shopify or your cart. To compare channels, use GA4, which counts every channel by the same rules. To compare ads or campaigns within one platform, use that platform's numbers. For overall profitability, look at total ad spend against total store revenue.

What's the difference between last click and data-driven attribution?

Last click gives all the credit to the last touchpoint clicked before the purchase. Data-driven compares paths that led to a purchase with paths that didn't, estimates how much each touchpoint contributed, and splits the credit. One purchase might be split as 0.6 to a search ad and 0.4 to a social ad, which is why conversion counts can have decimals.

Key takeaways
  • Attribution is the set of rules that decides which of several touchpoints gets credit for a purchase.
  • GA4, Google Ads, Meta Ads and Shopify differ in model, lookback window, view-through handling and the date a conversion is recorded on.
  • Each ad platform counts purchases after its own ads as its own results, so the totals add up to more than your actual orders.
  • GA4 uses different rules in different reports, so the same purchase can show different sources.
  • Use cart orders for revenue, GA4 for comparing channels, and each platform's numbers for comparing ads within it.
  • Attribution can't tell you whether an ad actually increased sales. Test that by pausing ads or holding out a group and comparing.

Written byRyushi Nagata

CEO, ULTRO Inc. (Tokyo)

Shopify Partner. Ryushi handles Shopify store builds, maintenance, advertising and CRM end to end, and has managed more than ¥4 billion in ad spend over his career. He holds Google Ads certifications (Search, Display, Video, Shopping, Apps, Performance Max, Measurement) and the Google Analytics certification.

How many purchases is GA4 missing in your store?

GapFill matches your Shopify orders against GA4 purchases, shows what GA4 missed, and recovers those purchase events server-side. It works alongside your existing tags, and the missing purchases report is free.

See GapFill →