Blog / Work / Qure
One Stack, 18 Currencies — Full System Ownership Case Study
Case study · Full system ownership

Owning an entire DTC measurement stack, end to end.

An international skincare brand on Shopify, selling across many markets and currencies. Before me, the tracking had passed through a rotation of freelancers and agencies — nobody ever owned the whole system.

RoleFreelance analytics & tracking specialist
StackGA4 · GTM · BigQuery · Looker Studio · Google Ads · Meta · Shopify G&Y App
Markets18 storefront currencies
This case is described with descriptive anonymization, per client confidentiality. No financial figures are shared publicly.
Background

A stack built in pieces, by people who never met each other.

Before I came in, the tracking had been handed to a rotating set of freelancers — each brought in for a single narrow task — and to larger agencies that never managed to get it fully working. Every piece got built. Nobody ever stepped back to own the system as a whole.

The dashboards were live, but they fought the store backend at every turn. Revenue in GA4 was inflated to the point of being meaningless. Conversion rates didn't match Shopify Admin, so each report opened with an argument about which number was "right."

It started with an audit

A container that looked active but couldn't be trusted.

Before changing anything, I audited the entire setup — every tag, trigger, event, conversion, and destination property — documenting where each one fired, where its data went, and whether it should exist at all.

×Two GA4 properties collecting at once — the official one and a stray "test" property nobody would claim, both doubling the counts.
×The main production tracking tag wasn't firing — the property everything relied on was missing most of its live data.
×Three Google Ads tags running on every page, including exact duplicates firing redundant conversion pings.
×Multiple purchase tags on conflicting triggers, double- and triple-counting conversions and inflating revenue.
×Events routed to the wrong property — checkout and payment steps landing somewhere nobody was reading.
×GTM had silently stopped loading on checkout after Shopify deprecated the script-injection method — and nobody noticed.
×Layers of dead weight — a Universal Analytics tag still running long after UA was shut down, paused legacy tags, test tags left live in production.

I turned that into one documented map — a keep / pause / delete decision for every tag — then executed the cleanup: one production GA4 property, one global Google Ads tag, one purchase conversion per destination.

The rebuild

Seven fixes, one rule: reconcile to Shopify.

01

Recovering "unusable" revenue

The team's working theory: international orders in local currencies were recorded as USD with the original amount lost — unrecoverable. I tested the assumption instead of inheriting it.

"unusable" recovered 18 currencies, reconciled within a couple of % of Shopify
02

A conversion rate that matches Shopify

Rebuilt on a session basis, following Shopify's own definition, at two levels — store-wide and per product page. Site-wide CR now matches Shopify Admin exactly, ending the "which number do we believe" conversation before it starts.

03

Removing the double-counting

Cleared duplicate purchase tags at the container level, then confirmed a second firing event was supplementary — and rebuilt a query join pattern that had been multiplying sessions into the tens of millions.

04

Attribution that maps to the real catalog

A multi-line catalog where near-identical SKUs are easy to merge by mistake. Each product page mapped to its exact set of item names. Channel noise — click IDs, affiliate strings, the same source spelled five ways — normalized into one clean set.

05

A reporting system, not just dashboards

BigQuery as the warehouse, scheduled queries refreshing automatically into production tables, feeding a documented Looker suite — executive KPIs, retention and cohort analysis, per-product and per-landing-page attribution, upsell performance.

06

Conversion tracking wired end to end

GTM had stopped loading on checkout and thank-you after a Shopify platform change. Rebuilt: a clean dataLayer-driven container for the storefront, the G&Y App carrying checkout data server-side, the full path wired across three ad accounts and external landing-page domains.

07

A custom analytics app for the numbers GA4 can't reach

GA4 is client-side — it always loses the slice of orders that ad blockers and declined consent drop. I partnered with the brand's developer to build a custom app reading straight from Shopify's APIs — complete by construction. It now carries the brand's repurchase, retention, and lifetime-value analysis.

How I work

The rules that ran through all of it.

Verify before asserting

The revenue fix existed only because I checked an assumption everyone had already accepted as fact.

Reconcile to the source of truth

Every metric sanity-checked against the Shopify backend, with the delta explained — not just polished to look right.

Ship the caveats with the number

Every report carries its methodology and the known gaps named out loud — refunds GA4 doesn't see, the 5–15% lost to ad blockers.

Build artifacts the client owns

Self-refreshing dashboards and documented methodology the team can open in a year and trust without me.

Where it stands

Reporting that reconciles to Shopify. A revenue dimension recovered from data that had been written off as garbage. Conversion rates that match the store backend. A documented suite of dashboards anyone in the company can read and trust — and a custom analytics app pulling exact numbers straight from Shopify where GA4 can't.

The outcome isn't a vanity chart. It's a team that can trust the numbers enough to make decisions on them.

See also: Mountaindrop — the diagnostic audit Start your own audit →