Skip to content

Conversion Tracking  ·  Reconciliation

Why don't my Google Ads conversions match my Shopify orders?

Google Ads and Shopify count different things on different clocks. Google credits a conversion to the click date inside its attribution window. Shopify stamps the order at order time. Over thirty days, a count gap inside 10 percent is reconciled, 10 to 25 percent needs a named cause, and above 25 percent is a tracking problem.

The two numbers will never be equal, and an owner who expects them to be ends up chasing a gap that isn’t a defect. The useful question is how wide the gap can be before it stops being attribution and starts being a broken event or a setting. This page holds the band I use for every pair, and the six causes I rule out when a gap sits outside it.

Different clocks, same orders

Google Ads credits a purchase to the day of the click that earned it, inside a click-through window of 1 to 90 days depending on the action, plus a view-through window. Shopify writes the order on the day the card was charged. Same order, two dates, and on a thirty-day report the edges never line up.

That effect alone is measurable. In my Ecommerce Tracking Accuracy Benchmark, switching one account from click-date to conversion-date reporting moved its total by 5.8 percent on count and 7.4 percent on value, with nothing else changed. Then there’s what happens after the sale. On the one account where I could read the store’s order table, about a sixth of orders were refunded inside the window and about a tenth were cancelled, and the ad platform was never sent a restatement for any of them. Google keeps every one as a conversion. Shopify’s net figures drop them.

A gap is the normal state. This is the band I hold every account to, one row per pair.

ComparisonWhat is being comparedWindowBand
Google Ads purchase conversions vs Shopify orders attributed to paid search (GA4 last-non-direct, or Shopify Sales by traffic source)Count. Google on click date, Shopify on order date, gross orders with refunds and cancellations left in30 daysInside 10 percent, reconciled. 10 to 25 percent, name the cause. Above 25 percent, tracking problem
Google Ads conversion value plus Meta purchase value vs Shopify gross revenue attributed to paidRevenue30 daysInside 15 percent, healthy. Above 15 percent, a setting or an event is padding the value
GA4 paid-channel conversions vs Shopify paid ordersCount. GA4 sessionizes on last non-direct click30 daysWithin 20 percent
GA4 paid-channel conversions vs Google Ads plus Meta reported conversionsCount30 daysWithin 15 percent
Meta purchases vs Shopify ordersCount. Meta models the iOS share30 daysIn the accounts I’ve reconciled, Meta reports 10 to 40 percent above Shopify, wider on high-iOS stores
Meta purchases vs GA4 paid-social conversionsCount30 days10 to 30 percent, Meta higher
CRM closed-won deals vs offline conversions imported to Google Ads and MetaCount. Same records on both sides, by deal date7 daysUnder 5 percent

The first row is the one this question is about. Between 10 and 25 percent, I want a named cause from the list below before anyone touches a bid. Compare gross to gross, Shopify’s gross orders and gross revenue in the same window, so refunds don’t open a gap on their own.

The setting that pads revenue

A Shopify client’s $32.99 order landed in Google Ads as $148.95. The dataLayer was clean and GA4 said $32.99. The prior agency had switched on Customer Lifecycle Value Optimization with a hardcoded $115.96 incremental value for new customers, so every new-customer conversion arrived as revenue plus $115.96, and Smart Bidding had been chasing that number for nine months. The setting is two clicks deep under Conversions, then Summary, and it’s the first thing I check when the count reconciles and the revenue doesn’t. The full receipt is on the blog.

Add-to-cart value counted as revenue

The column reads “Conv. value”. Nothing in the interface says what fed it. On two of the three accounts in the benchmark, between 16.6 and 17.2 percent of counted conversions and between 19.8 and 25.8 percent of reported conversion value came from add-to-cart and begin-checkout events, because those actions had been set to count inside the bidding metric. One Shopping campaign on one of those accounts had no purchase goal at all. In 90 days it reported 5.96 conversions, every one a cart or checkout event, and the algorithm bid to maximize cart value.

This is why the revenue band sits at 15 percent rather than 25. The smallest value defect I have measured was 19.8 percent, and a wider band would call it normal. Open the conversion-action list and read the category of every action that counts. The name tells you nothing.

Two purchase events, one order

Three purchase-category conversion actions were live at once on one benchmark account: the store sales-channel tag, a tag-manager deployment, and an analytics-imported purchase event. Over their common live window they recorded 382.02, 321.59 and 266.99 purchases for the same store, a 30.1 percent spread between the highest and the lowest. The account counted only one of them. The other two existed to disagree with it.

The same defect shows up on Meta when the browser pixel and the Conversions API both fire a purchase without a shared event_id, which, on the accounts I’ve cleaned up, inflated reported ROAS by thirty to fifty percent. Inside Google Ads the tell is a conversion rate above eight percent on a high-volume campaign, which almost always means branded overlap or a de-duplication failure. The dedup contract, one event ID shared by browser and server, is in the Tracking Stack.

The purchase event that went dark

When Sugar Babies came to me, Google Ads was counting roughly 68 percent of the conversions GA4 saw, with the rest landing in direct / none. The server-side container was running. The Checkout Extensibility migration had broken the purchase event on the alternate checkout domain, so orders completed there never reached the tag. Fixing the domain and validating end to end took the gap from 32 percent to within 4 percent in two weeks.

A gap that opens on a specific date usually has a specific cause, and a checkout change is the most common one I find. What Checkout Extensibility breaks, and the order to fix it in, is its own answer.

Revenue that landed in Unassigned

A furniture brand with a server-side stack on paper had GA4 filing its revenue under Unassigned. Two GA4 installs were fighting over one property: the server-side container and Shopify’s native Google channel app, each with its own session handling. Behind that, the server stack was sending zero ecommerce events because one checkbox in the Shopify app was unchecked, and the purchase tag sent capital-P Purchase where GA4 binds to lowercase purchase.

When GA4 can’t resolve a session to a channel, Shopify’s paid orders and Google’s conversions each look fine on their own and refuse to meet in the middle. Count your installs before you touch an attribution setting.

The five-number reconciliation I run weekly

Fifteen minutes in a spreadsheet, five numbers, same thirty-day window: Google Ads conversions, Meta conversions, GA4 paid-channel conversions, Shopify paid orders, Shopify gross revenue. I read them against the table above in a fixed order.

  1. Google Ads conversions against Shopify paid orders. Inside 10 percent, move on. Outside 25, stop here.
  2. GA4 paid conversions against Shopify paid orders, within 20 percent, and against the Google Ads plus Meta sum, within 15 percent. A miss on either points at a channel-mapping or session problem, the kind two GA4 installs produce.
  3. Platform conversion value against Shopify gross paid revenue, within 15 percent.

If the count band holds and the revenue band doesn’t, the cause is a value setting: lifecycle padding or cart value counted as revenue. If neither holds, an event is missing or doubled. Either way, no bid, budget, or structure change goes in until the count gap is back inside 10 percent, because every one of those decisions is computed from the column that’s wrong. A gap that holds steady for a month is attribution. One that jumps in a single week is a broken tag with a date on it.

Want this diagnosed in your account?

Same diagnosis,
run on your account.

Thirty minutes on the phone. I look at your spend, your tracking, and your search-term reports before the call. You walk out with a clear list of what is leaking and what to fix first.