Attribution

Why your Google Ads conversions don't match Shopify

Google Ads says 60 conversions, Shopify says 38. Here's why Google Ads, GA4, and Shopify never agree - and how to reconcile the three.

Sailesh B · Founder, Prism
· 8 min read

If Meta is your bigger channel, start with the Meta version of this - the mechanics differ. This one is Google, and Google brings a twist Meta doesn't: a third dashboard.

A founder I work with laid three tabs next to each other last month. Google Ads: 61 conversions. GA4: 49. Shopify: 38 orders attributed to Google. Three tools, three numbers, same week. "Two dashboards disagreeing is confusing," she said. "Three is a crisis."

It isn't a crisis. It's three systems measuring three different things, and once you have the map it's almost orderly. Let's build the map.

The one-sentence version

Google counts conversions - configurable, sometimes many per click, attributed by Google's own model over its own window. Shopify counts last-click orders. Those are not the same unit, so they were never going to match.

Everything below is a specific way that sentence plays out.

"Count: Every" vs "Count: One"

This is the single most common Google-specific inflation, and most people don't know it's a setting.

Each conversion action in Google Ads has a counting option. If it's set to count every conversion, one ad click that leads to two purchases is recorded as two conversions. Shopify sees two orders - but with last-click, it may only credit one of them to Google (the other might land on a later email or a direct return).

Here's the worked version. You sell consumables, and a customer clicks one Search ad, then buys a 3-pack on Monday and reorders a single on Thursday within the conversion window. With "Count: Every," Google logs two conversions against that click. Shopify shows two orders - but with last-click it may credit Monday's order to Google and Thursday's reorder to a direct return or an email. Net result: Google says 2, Shopify-attributed-to-Google says 1, and nobody's wrong.

So before you blame attribution at all, check whether your purchase conversion is set to "Every" or "One." For most stores measuring purchases against Shopify orders, "One" is the more honest match - but confirm your own setup; the right choice depends on your business, and these defaults change.

The conversion window stretches further than Meta's

Google's conversion window is commonly 30 days on clicks by default - longer than Meta's typical setting - though, again, this is account- and conversion-action-dependent and worth checking against your live settings rather than trusting a number from a blog post (including this one).

A 30-day window means a sale today can be credited to a click from nearly a month ago. Shopify attributes at order time, last click, today. The wider the window, the more a "today" Google conversion is really crediting something that happened weeks back - and the less it lines up with Shopify's daily revenue.

Data-Driven Attribution spreads the credit

For many conversion actions, Google's default model is now Data-Driven Attribution - it distributes fractional credit across the keywords and campaigns in the path using its own model.

Shopify's marketing report is last-touch. So Google might say a campaign earned 0.6 of a conversion while Shopify hands the whole order to whatever was last. Two different models, two different totals - and the fractional credit throws people who expect conversions to be whole numbers. (Confirm DDA is your active model; Google has shifted defaults here more than once.)

The Google-specific behaviors above - the commonly-30-day click window, Data-Driven Attribution as the default for most conversion actions, and the Count: One/Every distinction - are documented in Google's own help center: conversion windows, data-driven attribution, and conversion counting. They're also account- and configuration-dependent and Google changes them, so treat these as "check your own settings," not constants. (Last checked mid-2026.)

The three-way: GA4 vs Google Ads vs Shopify

Here's the part that makes Google uniquely confusing. GA4 is a fourth opinion living right next to Google Ads, and it uses its own attribution and its own session logic.

  • Google Ads counts conversions on its model and window (the 30-day-click, DDA story above).
  • GA4 applies its own attribution model and session-based logic, which can differ from Ads even though they're both Google.
  • Shopify is last-click at order time.

All three can be "right" at once. Use Google Ads' numbers to manage bids and budgets inside Google, treat GA4 as a cross-channel behavioral lens, and treat Shopify as the record of banked revenue. The mistake is expecting any two of them to tie out to the same integer.

The trap that catches people here is treating GA4 as a referee between Google Ads and Shopify. It isn't - it's a third opinion with its own model, not a tiebreaker. If anything, adding GA4 to the comparison makes the disagreement look worse before it makes it make sense. Pick the job each tool is best at and stop asking them to agree.

Auto-tagging (gclid) vs your UTMs

Google doesn't tag clicks with UTMs by default - it auto-tags with a gclid parameter. If your stack keys channel detection off UTMs and nobody mapped the gclid, Google traffic can land in Direct or Organic in Shopify.

That's the Google flavor of the same under-counting Meta suffers: at the very moment Google Ads is over-claiming via its window and model, Shopify may be under-crediting Google because it never recognized the click as paid. The fix is making sure gclid is captured and resolved - the UTM and click-ID setup guide covers how Prism handles this.

Performance Max hides the path

Performance Max spans Search, Shopping, Display, and YouTube and reports as one blended campaign. You can't cleanly map a PMax conversion back to a specific Shopify channel, because PMax itself won't tell you which surface drove it.

If a big share of your Google spend is PMax, expect your widest, least-explainable gaps there. It's not that the attribution is broken - it's that the source data is deliberately opaque.

Like Meta, Google estimates conversions it can't directly observe. With Consent Mode and privacy opt-outs, some conversions are modeled - Google's statistical fill-in for the users it lost visibility into.

Useful in aggregate, same caveat as always: these are estimates, not rows in your Shopify orders table. A portion of "Google's conversions" has no matching order you can click into.

The smaller stuff

Then the usual pile-on: time zone (Google account time vs your store's), conversion lag (today's clicks convert over the next days/weeks, so today's spend never fully reconciles in real time), and currency. Conversion lag is especially sneaky on Google because the long window means a chunk of credit for this week hasn't even happened yet.

So which number do I trust?

Same shape as every cross-platform reconciliation, Google-flavored:

  • Google Ads numbers, directionally, for bidding and optimization inside Google.
  • Shopify for revenue that actually banked.
  • GA4 as a behavioral cross-check, not a revenue source of truth.
  • For budget allocation across channels, a first-party multi-touch view that reconciles to Shopify orders - not any single platform's self-report.

How Prism reconciles this

Prism captures the gclid and resolves auto-tagged Google clicks back to the paid channel, reconstructs the full first-party journey, and ties every credited sale to a real Shopify order - so the order Google buried in PMax opacity and the one Shopify hid in Direct both get a real, traceable source.

Here's a Google-sourced order seen through every model at once:

Google SearchDay 1
Meta AdDay 3
EmailDay 5
DirectDay 6
$150Order placed

One $150 order · 4 touchpoints over 6 days

ModelGoogleMetaEmailDirectUse it to…
Last-click$150credit the channel that closed the sale
First-click$150credit the channel that found the customer
Linear$37.50$37.50$37.50$37.50value every touch equally
Time-decay$19$30$44$57weight the touches closest to purchase
Linear non-direct$50$50$50ignore direct/branded, credit the earners
Prism ViewDEFAULT$52$30$45$23Prism's balanced view across the journey

One $150 order that started on Google, credited six ways. Every row still sums to $150.

One $150 order that started on Google Search - six models, six answers.

You're seeing the whole path instead of Google's blended claim or Shopify's last-click guess, and it reconciles to an order you can find. That's attribution accuracy - which channel earned credit for revenue you actually made. (Profitability is a separate question; Prism also has a business-wide P&L, but attribution never changes your total profit.)

Decide up front what each tool is for: Google Ads for in-platform optimization, Shopify for banked revenue, a reconciled view for budget. Half the panic comes from asking one dashboard to do another's job.

What to actually do this week

Four moves, roughly in order of payoff:

1. Audit your conversion counting. Open your purchase conversion action and check whether it's "Count: Every" or "Count: One." If you're measuring purchases against Shopify orders and it's set to "Every," that alone can explain a chunk of the inflation. Decide deliberately rather than inheriting the default.

2. Confirm gclid is actually captured. This is the Google equivalent of fixing UTMs - and it's where you recover real, mis-bucketed revenue. If auto-tagged Google clicks aren't being resolved, Shopify is hiding paid Google orders in Direct or Organic. The UTM and click-ID guide covers it.

3. Look at your window vs your buying cycle. A 30-day click window on a brand people buy from in two days means a lot of "today's" Google conversions are really crediting old clicks. Know that before you react to a daily number.

4. Isolate Performance Max in your head. If a big share of spend is PMax, accept that its conversions won't map cleanly to Shopify channels and stop trying to force it. Judge PMax on incremental revenue, not on channel-level attribution it will never give you.

The first two recover accuracy you can act on. The last two are about not over-reacting to numbers that were never going to reconcile in real time.

Open all three tabs tomorrow

Three dashboards disagreeing isn't a crisis. It's Google Ads, GA4, and Shopify each answering a different question - and now you can tell which is which.

If Meta is also a big channel for you, the Meta version of this mismatch covers its own quirks (view-through, cross-device, the 7-day window). And if you're still deciding which model to trust at all, see how the six attribution models compare on one real order.

Quick answers

Why are my Google Ads conversions higher than Shopify orders? Usually some mix of "Count: Every," a long (often 30-day) conversion window, Data-Driven fractional credit, and modeled conversions - all of which count things differently than Shopify's last-click orders.

Should I use "Count: One" or "Count: Every"? For measuring purchases against Shopify orders, "One" usually lines up better - but it depends on your business, so verify your own conversion action's setting.

Why do GA4 and Google Ads disagree too? They use different attribution models and GA4 adds its own session logic. Both are Google; neither is wrong; they're built for different jobs.

Does Performance Max break attribution? It doesn't break it, but it hides the path - PMax reports blended across Search, Shopping, Display, and YouTube, so per-channel mapping to Shopify is genuinely hard.

How do I get Google traffic out of "Direct" in Shopify? Make sure the gclid from auto-tagging is captured and resolved to the paid channel. The UTM setup guide walks through it.

See which channels actually drive your revenue.

Prism reconstructs the full customer journey and reconciles every order back to Shopify - so your numbers finally agree.