If you’ve ever compared your Google Ads “Conversions” column to the actual revenue landing in your Shopify admin and thought “that can’t be right”, you’re not imagining it. It’s one of the most common issues we come across when auditing Shopify accounts that run Google Ads, and it rarely has a single cause.
Sometimes Google Ads reports more conversions than Shopify has real orders for. Sometimes it’s the opposite, genuine sales aren’t showing up as conversions at all, so your reported ROAS looks worse than reality and you end up cutting campaigns that were actually working. Either way, decisions get made on bad data.
This post walks through why Shopify and Google Ads conversion numbers diverge, how to actually diagnose which problem you’ve got, and what a proper fix looks like. It’s written for anyone already running Google Ads on a Shopify store who suspects, correctly, that something in the tracking chain is off.
Why Shopify and Google Ads Numbers Rarely Match Perfectly
Before assuming something is “broken”, it helps to know that a small gap between platforms is normal. Google Ads uses click-based, cookie- and modelled-attribution; Shopify’s own reports are based on actual completed orders tied to sessions it can track. A gap of 5-10% is common and not necessarily a fault.
What’s not normal is a 30%, 50%, or 100%+ divergence, either direction. That’s a tracking configuration problem, and it’s almost always one (or a combination) of the following.
1. Duplicate Conversion Tracking (The Most Common Culprit)
This is the single biggest cause we see. Many Shopify stores end up with two separate conversion tracking setups firing at once:
- The official Google & YouTube channel app (Shopify’s native Google integration, which syncs Merchant Center, sets up Google Ads conversion tracking, and can enable enhanced conversions automatically), and
- A manually added Google Ads gtag snippet or Google Tag Manager container, often installed by a previous developer, a different agency, or copy-pasted from a tutorial, sitting in
theme.liquidor added via the Additional Scripts box on the checkout settings (legacy stores) or as a custom pixel.
When both fire on the thank-you page, Google Ads can count the same purchase twice. Your conversion count looks inflated, your reported conversion rate looks better than it is, and, this is the dangerous part, Smart Bidding starts optimising toward a signal that’s wrong, pushing spend toward audiences and keywords that aren’t actually converting at that rate.
How to check: In Google Ads, go to Goals > Conversions and open each purchase-related conversion action. Look at the tag source, is it Google Ads (Google tag), Google Analytics (via GA4 linked import), and/or a Shopify-installed Google & YouTube channel conversion? If you see more than one purchase conversion action marked “Primary” and both are counted in your headline conversions, that’s your duplication.
2. Shopify’s Checkout Extensibility Changes Broke Old Tracking Setups
This is a big one and it catches a lot of people out because their tracking “used to work fine.”
Shopify has progressively moved checkout away from editable checkout.liquid. As of August 2024, Shopify officially sunset checkout.liquid customisations for stores that hadn’t already migrated, moving everyone to checkout extensibility. Any custom tracking script that was injected via checkout.liquid, a manually pasted conversion pixel, a custom gtag('event', 'purchase'...) call sitting in the Additional Scripts section, stopped firing, or fires inconsistently, depending on your plan and migration status.
The supported ways to track conversions on Shopify checkout now are:
- Shopify’s native pixel system (Customer Events / the Shopify pixel manager in Settings > Customer events), which uses the Web Pixels API and works within checkout extensibility rules.
- Checkout UI extensions for anything visual, and Shopify Functions for logic, but for tracking specifically, the pixel manager is what matters.
- The Google & YouTube channel app, which Shopify maintains and updates in line with checkout extensibility, so it keeps working without you touching code.
If your store is on Shopify Plus with a checkout.liquid-based script still technically running, or if you’re on standard Shopify and something was hacked into the order status page years ago, there’s a good chance it’s silently failing on some or all orders, particularly on Shop Pay express checkouts, which skip parts of the flow that older custom scripts assumed a customer would go through.
3. Enhanced Conversions Not Configured (or Misconfigured)
Enhanced conversions let Google Ads match conversions to logged-in Google accounts using hashed first-party customer data (email, phone, name, address) sent alongside the conversion event. Without it, Google relies purely on click-through cookies and modelled matching, which iOS and privacy-focused browsers increasingly break.
On Shopify, enhanced conversions are usually enabled through the Google & YouTube channel app rather than hand-rolled, since Shopify handles the hashing and data-passing for you in a way that’s compliant with checkout extensibility restrictions. If you’re relying on a manual gtag setup instead, you need to explicitly configure enhanced conversions for leads/web and pass customer data at the point of conversion, and a lot of manual setups simply never got that far.
The practical effect of missing enhanced conversions: more of your real purchases go untracked or get modelled inaccurately, which usually means Google Ads under-reports conversions relative to what’s actually happening in Shopify admin.
4. iOS, ITP, and Ad Blockers Suppressing Client-Side Pixels
Apple’s Intelligent Tracking Prevention (ITP) limits how long third-party and even some first-party cookies persist in Safari. Combined with ad blockers, VPN-based browsers, and increasingly privacy-conscious shoppers, a meaningful share of real conversions simply never get attributed back to the click that drove them, particularly for anyone who clicks an ad on their phone and completes checkout later on desktop, or vice versa.
This isn’t a “fix it and it’s gone” problem, it’s structural to how browsers work now. The mitigation is to reduce reliance on client-side, cookie-based tracking alone (see server-side tracking below), not to expect a perfect 1:1 match.
5. Currency Mismatches Between Store and Ads Account
An easy one to miss, and it produces conversion value errors rather than conversion count errors, but it’s worth checking because it skews ROAS just as badly. If your Shopify store sells in AUD but your Google Ads account currency was set up in USD (or vice versa, common if an agency or freelancer set the account up from overseas), conversion values get converted at Google’s daily exchange rate rather than reflecting your actual AUD revenue. Your ROAS and conversion value figures will look consistently off in one direction.
How to check: Google Ads account currency is locked once set, go to Tools & Settings > Billing > Preferred Currency to check what it’s set to, and compare against your Shopify store’s currency in Settings > Store details.
6. Counting Test Orders and Duplicate Thank-You Page Loads
Two smaller but genuinely common issues:
- Test orders and Shopify Bogus Gateway transactions firing the same pixel as real purchases, if the tracking script doesn’t exclude them.
- Duplicate thank-you page views, a customer refreshing the order confirmation page, hitting back and forward, or the page reloading after a delayed payment gateway redirect (common with Afterpay, Zip, or bank redirect methods) can fire a manually-installed purchase pixel more than once for a single order.
Shopify’s native pixel manager and the Google & YouTube app are built to fire once per checkout completion event, keyed to the order, which avoids this. Manually placed scripts on the thank-you page often aren’t, unless someone specifically built in de-duplication logic (e.g. checking sessionStorage or the order ID before firing).
A Practical Audit Checklist
Run through this in order, it’ll usually surface the cause within 30-60 minutes:
- Pull three numbers for the same 7-30 day window: Shopify admin orders/revenue (Analytics > Reports > Sales), Google Ads reported conversions/value, and GA4 purchase events (if GA4 is installed). Three data points make it much easier to see which one is the outlier.
- Check for duplicate conversion actions in Google Ads > Goals > Conversions, look for more than one “Purchase” action marked primary.
- Confirm which tracking method is live, Google & YouTube channel app, Shopify’s native pixel manager, or a legacy manual script. Check Settings > Customer events in Shopify admin to see what’s actually firing.
- Verify enhanced conversions status under the conversion action’s diagnostics in Google Ads, it will tell you the match rate.
- Check account currency matches store currency.
- Test the full checkout flow yourself, including Shop Pay express and at least one delayed payment method (Afterpay/Zip), watching the network tab for duplicate or missing conversion pings.
- Cross-check GA4 as a neutral third party, if GA4’s purchase count sits between Shopify’s real orders and Google Ads’ reported conversions, that’s a strong signal Google Ads is either over- or under-counting relative to reality.
Server-Side Tracking as a More Durable Fix
Because client-side tracking is only going to get less reliable as browsers restrict cookies further, the more durable long-term fix is moving toward server-side conversion tracking, sending conversion events from Shopify’s servers (or via a connected data layer) directly to Google, rather than relying solely on a pixel firing in the customer’s browser. This reduces the impact of ad blockers and ITP, and it’s the direction Google’s own guidance has been pushing advertisers for a few years now.
Setting this up correctly, alongside enhanced conversions, de-duplication logic, and proper account currency alignment, is genuinely fiddly to get right without breaking something else, particularly on stores running multiple apps that also touch the checkout or thank-you page (reviews platforms, upsell apps, loyalty programs). If you’ve been through the checklist above and still can’t reconcile your numbers, or you don’t have the internal resource to sit inside Google Tag Manager and Shopify’s pixel manager for a day, that’s usually the point to bring in a specialist. Our Shopify Google Ads management service includes a tracking audit as a standard first step for exactly this reason, you can’t optimise a campaign properly on numbers you don’t trust.
FAQ
Why does Google Ads show more conversions than Shopify has orders?
The most common cause is duplicate tracking, both the Google & YouTube channel app and a manually installed gtag or GTM script firing on the same purchase. It can also happen when test orders or duplicate thank-you page loads (from refreshes or delayed payment redirects) get counted as separate conversions.
Why does Google Ads show fewer conversions than my actual sales?
Usually a mix of iOS/ITP cookie restrictions, ad blockers, missing enhanced conversions, or a checkout extensibility change that broke an old manually installed tracking script. Cross-checking against GA4 purchase events usually shows whether it’s genuinely under-tracking or just a different attribution model.
Should I use the Google & YouTube channel app or a manual GTM setup?
For most Shopify stores, the Google & YouTube channel app is the safer default because Shopify maintains it in line with checkout extensibility and privacy changes. A manual GTM/gtag setup can still work well, but it needs someone actively maintaining it, otherwise it tends to be the thing that breaks quietly when Shopify updates checkout.
Is a small gap between Shopify and Google Ads numbers normal?
Yes. Different attribution windows, cross-device journeys, and modelled conversions mean a 5-10% gap is common and not a sign of a broken setup. Anything much larger than that is worth investigating properly.
How long does a proper conversion tracking audit take?
For a single-channel Google Ads setup on a standard Shopify store, a thorough audit typically takes a few hours of hands-on checking plus a short verification period watching live data. More complex setups, multiple apps touching checkout, Shopify Plus with custom scripts, or several ad accounts, take longer.
If you’d rather have someone independently check your setup than guess, book a call or start with a Shopify audit and we’ll tell you plainly what’s actually going on with your tracking before you spend another dollar on ads.