Blog / Work / Mountaindrop
Google Ads wasn't seeing the sales — Mountaindrop case study
Case study · The diagnostic audit

Two agencies couldn't fix it. The audit found why.

A wellness DTC brand on Shopify, selling across the EU, US, and UK. After relaunching their Google Ads setup through two agencies, roughly half of paid conversions still weren't being attributed. The real gap was far worse than reported.

RoleConversion tracking audit
StackGTM · GA4 · Google Ads · Shopify G&Y App · Elevar · Consent Mode
MarketsEU · US · UK
Google Ads · Purchases (Primary conversion action)
Before · Feb 10–Mar 10, 2026 3 conversions
After · Apr 1–May 31, 2026 65 conversions
Lift ≈ 22×
Background

A "roughly 50%" problem that two agencies had already tried to fix.

The brand had relaunched its Google Ads setup after going through two agencies that didn't deliver. Campaigns were live, but conversions recorded in Google Ads didn't match real orders in Shopify — by their own estimate, around half of paid conversions weren't being attributed correctly.

A live test purchase, verified through Tag Assistant and GA4 DebugView, showed the real picture was worse than the reported 50%. Not a tracking gap — a tracking failure, hiding behind a number that looked explainable.

What the audit found

Five root causes, each compounding the others.

This covered the full stack: the GTM container (55 tags), Google Ads conversion actions, the GA4 property, the Shopify Google & YouTube App, and Consent Mode — cross-checked against a live test purchase.

01

The Checkout Completed event had no mapped destination

One configuration gap in the Shopify Google & YouTube App meant the primary Google Ads conversion action had received no purchase data since the day it was created. Under two minutes to fix — the single highest-impact issue in the audit.

02

The Google Ads purchase tag fired with no conversion label

It ran correctly on every checkout — but with no label attached, Google Ads silently discarded every hit. A tag that looked like it was working, doing nothing.

03

GA4 and Microsoft UET tags were listening for the wrong trigger names

Every storefront tag referenced trigger names that didn't match what the Custom Pixel pushed. They'd been inactive since the Custom Pixel was set up — which is why GA4 recorded only 30 of the real orders.

04

GTM was loaded through a configuration Google doesn't support

The container ran via the Custom Pixel on checkout pages — a setup Google explicitly doesn't support. The correct separation: the G&Y App owns checkout data server-side, GTM owns storefront data via theme.liquid.

05

The purchase hit fired twice, from three sources

The test purchase confirmed the G&Y App sent the conversion hit twice on the thank-you page, while three separate sources loaded the same Google Ads tag ID simultaneously — quietly inflating whatever did get through.

The result

From 3 conversions to 65, tracked against real Google Ads data.

Numbers pulled directly from the Google Ads account, comparing the period before the fixes to a comparable window after.

Google Ads showing 3 conversions (Purchases) in the period Feb 10–Mar 10, 2026
Before · Feb 10–Mar 10, 2026 3 conversions
Google Ads showing 65 conversions (Purchases) in the period Apr 1–May 31, 2026
After · Apr 1–May 31, 2026 65 conversions

"We'd already gone through two agencies trying to fix our Google Ads tracking — about half our paid conversions just weren't showing up. Anna's audit found the real cause, and the numbers speak for themselves: we went from 3 recorded conversions to 65 in a comparable window, and GA4 finally matches what Shopify actually shows."

— Jure, CMO at Mountaindrop
What was already working

The fix wasn't a teardown.

  • Auto-tagging enabled, with all five conversion actions on Data-driven attribution — the recommended model.
  • Enhanced Conversions active and confirmed sending user data on checkout.
  • Consent Mode implemented with Google modeling active, and customer data terms accepted at the account level.
  • The G&Y App correctly firing Add to Cart, Begin Checkout, and View Item to both GA4 and Google Ads.
The remediation

A phased fix — not a full rebuild from zero.

Because most of the architecture was sound, the plan fixes in order of impact.

PHASE 1

Highest-impact fixes

No developer involvement. Destination mapping and the missing conversion label.

PHASE 2

Cleanup & stabilisation

Trigger names corrected, duplicate firing removed.

PHASE 2B

Architectural correction

GTM removed from the Custom Pixel once the G&Y App path is verified.

PHASE 3

Ongoing monitoring

Watching the post-fix gap to confirm it lands where it should.

Follow-up: after migrating the brand's consent banner setup through Elevar, a consent-signal warning (GCM_CHECK_LIMIT_REACHED) appeared intermittently. Rebuilt the Consent Mode integration — connecting Shopify's native consent banner so Elevar reads consent values correctly — and confirmed through follow-up testing that the warning no longer appears.

How I work

The same four rules, on every audit.

Verify before asserting

The real gap only surfaced because of a live test purchase — not because the brand's own estimate of "roughly 50%" was taken at face value.

Reconcile to the source of truth

Every conversion action and tag was checked against what actually happened at checkout, not against what the dashboard implied.

Ship the caveats with the number

The report names what's normal to expect after the fixes, instead of promising a clean number.

Fix in priority order

Highest-impact, lowest-effort fixes first. Phase 1 needed no developer involvement and started paying off immediately.

Where it stands

A small residual gap between Shopify orders and Google Ads conversions remains — Safari ITP and ad blockers account for some loss in any client-side setup, and that's expected, not a fault. What's no longer in question is whether the tracking itself works: GA4 reconciles to Shopify, the consent-signal warning that surfaced during the Elevar migration was found and resolved, and conversions are being recorded at a rate the team can trust and act on.

Next case: Qure — full system ownership Start your own audit →