Case studiesSneakit

Fashion marketplace · Google Ads · Germany · 4.5 months

Previous specialist broke tracking, performance, AND GMC. I rebuilt all three in 60 days.

Migration from Shopify killed their sales. I rebuilt everything. €3.2M later, the client wanted to rename me AdSniper.

German sneaker marketplace. Previous specialist migrated off Shopify and shredded three things at once: conversion tracking, Shopping performance, GMC catalogue. The first job wasn't optimisation, it was triage.

60 days to rebuild the foundation, server-side tracking from scratch, SPAG campaign architecture, GMC fixed. Four months of compounding scale after that. CPA €30.32 → €9.80. €217K spend → €3.2M GA-confirmed revenue.

Book a 30-min Shopify diagnostic →

€10K+/mo Shopping accounts only. 1-2 engagements per quarter.

Revenue · GA-confirmed€3.2MGoogle Analytics directly tracking Shopify transactions. €217,962 spend · Aug–Dec 2022 · 14.7× ROAS.
CPA, same account, Q+1−68%€30.32 (May–Aug) → €9.80 (Sep–Dec). More spend, lower cost. Clean data compounds.
Meta Event Match Quality9.2/10Industry average with a standard CAPI plugin: 6–7. This is a custom-built stack. The difference shows up in attributed revenue.

"You need to change your name to AdSniper. Or AdDestroyer. AdApache."

Felix, founder · Sneakit · Unsolicited Slack message at week 14. That message is why the H1 says what it says.

Sneakit founder Felix, unsolicited Slack message, 'you need to change name to AdSniper or AdDestroyer / AdApache'

What this case study actually proves

  • One marketplace, one engagement, 60-day rebuild + 4 months of compounding scale. Not portfolio averaging.
  • Previous specialist's migration broke tracking, ad performance, AND Google Merchant Center products. I rebuilt all three layers from scratch.
  • Real GA4 + Google Ads screenshots, verifiable math, account name visible in every screenshot.

Who this case study is for

  • Shopify or post-Shopify e-commerce operators with large catalogues (50+ SKUs) and Shopping-heavy spend
  • Marketplace / fashion / outlet brands optimising on CPA not just ROAS (volume + thin margin model)
  • Brands burned by a previous agency or specialist whose migration / 'optimisation' broke the foundation
  • DTC operators at €10K+/month Google Ads spend scaling Shopping into Q4 seasonality

E-commerce since

14+ yrs

Google Ads, GMC, server-side tracking, Shopify and beyond

E-com accounts managed

150+

Shopify, custom storefronts, headless, classic platforms

E-com spend processed

€50M+

Across DTC, marketplaces, fashion, outlet, lifestyle

This case scale

€3.2M

GA-confirmed revenue in 4.5 months on €217K spend (14.7× ROAS)

Every number below is documented with screenshots from the actual accounts.

The starting situation

Broken signal. Diagnosed in 30 days. Rebuilt in another 30.

The first job wasn't optimisation. This is what happens when a Shopify migration goes wrong and nobody fixes the tracking. Conversion signals break. Smart bidding starves. You're spending real money on decisions made from phantom data. Before a single bid was touched, the question had to be: what's actually working, and what has to be rebuilt?

Month 1

Diagnosis

  • Full audit: GA4, GTM, Shopify pixel, data layer, all of it
  • Shopify migration confirmed as the root cause of conversion gaps
  • Attribution discrepancies mapped between Google Ads and GA4
  • Verdict: half needed patching, half needed replacing from scratch
Month 2

Rebuild

  • Server-side tracking stack deployed from scratch, no plugin, no shortcut
  • SPAG campaign structure rebuilt across the full product catalogue
  • Feed restructured: titles, price signals, availability rewritten
  • CHEQ bot filtering live, invalid traffic blocked before it touches spend
Month 3+

Scale

  • Clean conversion data in, Smart Bidding stabilises immediately
  • Pre-rebuild baseline (May–Aug, broken signal): €30.32 CPA, 10.95× ROAS
  • Into Q4: weekly budget reallocation, seasonal uplift, RLSA layers
  • Sep–Dec: €9.80 CPA · 13.05× ROAS Google Ads · 14.7× ROAS GA4 · €3.2M revenue

The uncomfortable truth: Most operators would have run the broken setup and called the small improvements "progress." The two months it took to rebuild the foundation bought four months of compounding, clean data, which is the only reason the €9.80 CPA is real. You cannot optimise what you cannot measure.

What broken tracking actually costs you per year

Run the math on a typical post-migration e-commerce account with broken conversion tracking:

  • €200K/year ad spend, 60% conversion attribution loss = ~€120K of bidding decisions made from phantom data.
  • At typical 40% margin on the routed-wrong spend = €48K/year of pure waste, plus opportunity cost on the SKUs that should have been getting the budget instead.
  • CPA inflates 2-3× because Smart Bidding starves on dirty signal. Sneakit's pre-rebuild CPA was €30.32. Post-rebuild on clean signal: €9.80. Same business, same SKUs, same buyers.
  • Add GMC product disapprovals (Sneakit had hundreds post-migration) and the account is bleeding from three holes at once: tracking, bidding, AND product visibility.

Most operators don't run this math because the cost shows up as "we couldn't scale," not as a line item.

Sound familiar? I can usually tell you in 30 minutes whether your tracking + feed foundation is the bottleneck.

Book a 30-min diagnostic →

What you should stop doing immediately

Five default setups that guarantee your e-commerce account underperforms.

If you recognise any of these in your current operation, you already know why the channel isn't scaling. None of them are fixable with "better creative" or "smarter bidding."

Letting a specialist migrate your store off Shopify without a parallel-run tracking validation. You'll find out the foundation is broken after the campaigns lose 60% of conversion data.

Running pooled Shopping campaigns where your best-margin SKUs subsidise the dogs. You can't see the cross-subsidisation happening because the bidding is platform-level, not product-level.

Trusting a CAPI plugin (€100-€400/month) instead of a real server-side stack. Plugins add CAPI events but rarely enrich PII at the depth Meta and Google reward.

Setting your Shopping feed once and forgetting it. Every product needs 3-4 title variants tested head-to-head. The auction tells you which language converts.

Letting bot traffic corrupt your audience lists and conversion data. At scale, 5-10% of paid traffic is non-human. Without filtering, that's retargeting budget set on fire.

The campaign machine

30 orders a day in August. 447 in a single December day. Every euro routed to the product that earns it.

Most Shopping setups pool products together and let Google decide where to spend. Your best-margin SKUs end up subsidising the dogs, and you can't see it happening. SPAG fixes that: one ad group per product, full bid control at SKU level, negatives propagated across every priority tier so nothing leaks. Weekly reallocation means winners get more fuel every cycle. Four months of that compounding into Q4 is what 447 orders in a single day looks like.

SPAG, Single Ad Group per Product

Result: every SKU bids on its own margin. No cross-subsidisation.

Every product gets its own ad group. Not one campaign per product, that's unmanageable at this scale. One ad group per product, with campaigns tiered by priority. Top performers bid aggressively. Discovery tier stays defensive. Nothing bleeds across contexts.

  • High-priority tier: proven SKUs with aggressive bids, no subsidising low-performers
  • Mid-priority tier: brand + model terms capture assisted revenue
  • Low-priority tier: catalogue coverage, new arrivals, discovery
  • Negative lists across all tiers, zero inter-tier cannibalisation

Multi-feed optimisation, 3–4 variants per SKU

Result: spend only on titles the auction confirms convert.

Most operators set the feed once and forget it. Here, every product runs 3–4 title variants head-to-head. The Shopping auction reveals what language actually converts. Prices formatted for German market expectations. Availability synced real-time, no impressions burned on out-of-stock SKUs.

  • Title variants: brand+model vs model+category vs category+size, winner runs
  • Custom labels tier every product by ROAS, budget flows to profit, not just volume
  • Real-time stock sync, OOS products pull spend automatically
  • Margin-negative SKUs excluded at feed level before they waste a single bid

CHEQ bot filtering, 53K invalid visits blocked

Result: clean audience lists, trustworthy conversion data.

At this traffic volume, bots are a real budget problem, not a theoretical one. 53,143 invalid visits identified and blocked. 97% classified as bot activity. Without filtering, those visits corrupt your audience lists, inflate your direct channel conversion data, and get retargeted like real customers.

CHEQ dashboard, 53,143 invalid visits blocked · 97% bot activity · Sneakit 2022

Every channel validated. No assumptions.

Result: spend goes where the data says it converts.

Shopping drives the volume. Search plays support for brand and category intent. But which audiences actually convert, and where? That gets tested, not assumed.

  • B2C, Facebook: direct-to-consumer buying intent, primary revenue driver
  • B2B, Twitter + Facebook: wholesale and retailer segment, both channels tested
  • RLSA on top-tier Shopping: returning visitors and cart abandoners get bid uplift
  • Automated scripts: day-of-week + stock-level bid adjustments, no manual babysitting
Google Ads, Sneakit EU, 258 campaigns split by type, Shopping dominant, Search support layer, 2022

Campaign mix, Sneakit EU account

Shopping carries the conversion volume. Search as the intent capture layer. Display for retargeting only.

Google Ads mobile view, individual Sneakit product campaigns, SPAG structure, 2022

Campaign-level view, SPAG in practice

Each row is a separate bidding context. No product grouped with another. No bleed.

The infrastructure

The Toyota Land Cruiser of attribution.

A Land Cruiser isn't beautiful. It's engineered. It takes you exactly where you need to go, through iOS updates, through ad blockers, through browser restrictions, every time. This is a custom server-side stack built from scratch. Not a CAPI plugin. Not a $1,500/mo third-party tool. Four tiers. Every event enriched with PII-encoded first-party data. 9.2 event match quality.

4-tier server-side tracking architecture, User browser + Store backend → Browser-side GTM → Server-side GTM (Stape) → Meta CAPI, Google Ads Enhanced Conversions, GA4, other destinations

Why this setup fires when everything else goes dark

1Customer checks out. Email, phone, name captured in the browser at the moment of transaction.
2Server encodes it immediately, SHA-256 hashed per Meta spec, normalised per Google's requirements. Stored, not transmitted raw.
3Encoded identifiers land in first-party cookies and localStorage. ITP doesn't clear them. iOS doesn't touch them. They persist.
4Next browser event fires, even behind an ad blocker. Stored identifiers decode and attach. Attribution fires regardless.
5Server-side GTM (Stape) receives the event, reattaches the full PII-enriched signal, and delivers to Meta CAPI, Google Ads Enhanced Conversions, GA4, and every connected destination.

Tested against the best alternatives. Won.

I ran this setup head-to-head against Elevar and Littledata, the two tools most commonly recommended for Shopify tracking, each €100–€400/month. On a comparable account: 20% more Facebook-attributed revenue. The difference isn't the platform. It's the depth of PII signal enrichment.

Event Match Quality

9.2 / 10

vs Elevar + Littledata (and Hyros on different client)

+20%

Cookie lifetime

Extended

Ad blocker resilience

Full

When iOS 14 wiped everyone's attribution, here's what happened to Framar

Framar, Canadian/US professional haircare, $4.03M year 1, runs the evolved version of this same stack. When iOS 14 hit and wiped attribution for most advertisers, Framar held 95% accuracy and scaled 200–300% month-over-month. Competitors were flying blind. Framar was accelerating.

Proof, in screenshots

€3.2M verified. GA4 tracking Shopify transactions directly. Pull the numbers yourself.

GA4 tracks actual Shopify transactions, not what Google Ads claims it drove. That's why the number is credible. Below: the period comparison that shows the CPA collapse, the transaction trend that shows what compounding looks like, and the peak week that shows where four months of clean data meets Q4.

Sneakit EU Google Ads, Sep–Dec 2022 vs May–Aug 2022, €241K spend · 13.05× ROAS · CPA €9.80 vs €30.32

Fig 1 - Sep–Dec vs May–Aug · CPA −68%, ROAS +19%, same account, more spend

Side-by-side period comparison. Sep–Dec 2022: €241K spend, 13.05× ROAS, CPA €9.80 (Google Ads attribution, Purchase conversion action only). May–Aug 2022 baseline: €199K spend, 10.95× ROAS, CPA €30.32. Same metric, same definition in both periods. About the 15.4K purchases figure visible in the screenshot alongside: that's GA4-attributed purchases for the same window. GA4 uses a stricter attribution model than Google Ads' own click + view window, which is why GA4 attributes fewer purchases to the channel than Google Ads attributes to itself. Two attribution lenses on the same engagement, both real, both pulled directly from the platforms. Google Ads was the only significant paid channel here, so any GA4 underreporting maps cleanly to the Google Ads side. Account: 'Sneakit EU', AdPistols Mark Boratynski as manager.

GA4, Sneakit, Aug–Dec 2022, €217,962 spend · €3,206,015 revenue · 1,470.90% ROAS · 16,022 transactions

Fig 2 - €3,206,015 revenue, GA4 backend truth, not Google Ads attribution

GA4 Optimization Report. Revenue: €3,206,015.23. Spend: €217,962.85. ROAS: 1,470.90% (14.7×). Transactions: 16,022. Sessions: 2,223,892. CPC: €0.17. Cost per transaction: €13.60. GA4 pulls transactions straight from the Shopify backend, so the €3.2M is what actually hit the books, not a platform's claim about its own clicks.

GA4, daily transaction growth Aug to Dec 2022, 30/day to 447/day at peak

Fig 3 - 30 orders a day in August. 447 in a single day by December.

Daily transaction trend (GA4). August 2022: ~30 transactions/day. December 12, 2022: 447 in one day. Consistent upward trajectory accelerating into Q4. Same SKUs. Weekly bid reallocation routing budget to the top performers, compounding every cycle.

Google Ads, week of 5 Dec 2022, €27,845 cost · 1,744 purchases · 13.46× ROAS

Fig 4 - Peak week · 5 Dec 2022 · 13.46× ROAS on €27.8K spend in seven days

Tooltip at the week of 5 Dec 2022. €27,845 spend, 1,744 purchases, 13.46× ROAS, CPA €15.97. Brand-search week peak inside the broader Sep–Dec scale phase (€241K spend, 13.05× ROAS at the period level). The peak is what four months of weekly bid reallocation compounding into Q4 looks like.

Catalogue + Shopping + post-migration mess sounds like your account? I'll tell you in 30 minutes what the rebuild would actually cost and how long it would take.

Book a 30-min diagnostic →

Methodology

How to verify these numbers yourself.

Everything on this page is calculable from the screenshots above. Here's the math and what's intentionally hidden.

CPA is the headline number here, not just ROAS

Sneakit is a fashion marketplace, the business earns on transaction volume at thin margin, not on hero ROAS multiples. Google Ads CPA collapse from €30.32 to €9.80 is what made the model scale, same metric in both periods: Google Ads-attributed Purchase conversions only, native Google Ads attribution. Same account, more spend flowing in, platform CPA cut by two-thirds. That's the metric Smart Bidding optimises against, and that's the metric that pays the rent.

GA4 vs Google Ads, periods and attribution reconciled

Hero €3.2M is GA4 1 Aug – 15 Dec 2022: €217,962 spend reported, 14.7× ROAS, 16,022 Shopify transactions tracked. Fig 1 shows Google Ads native 1 Sep – 31 Dec 2022: €241K spend, 13.05× ROAS, CPA €9.80 (Purchase conversion only, Google Ads attribution). Two different reporting windows: the GA4 export was pulled mid-December, the Google Ads view covers the full quarter through 31 December including the Q4 holiday weeks 16–31 Dec, which is why Google Ads spend (€241K, full Sep–Dec) is higher than GA4 spend (€217K, Aug + partial Dec). Not a discrepancy, different cutoffs. Add the second attribution-model layer (Google Ads' broader click + view window vs GA4's stricter model) and that's the entire delta. Both screenshots are pulled directly from the platforms, every figure verifiable from the respective UI.

Account ownership visible in every screenshot

Every Google Ads screenshot shows account 'Sneakit EU' with an adpistols.com domain email visible top-right. GA4 reports from the same property. Timestamps Aug–Dec 2022.

What's intentionally not shown

The exact server-side container schema, custom Stape implementation details, feed transformation rules, and SKU-level bidding logic stay inside paying engagements. This page shows the outcome, the conceptual flow, and the verification math. My clients pay for that privacy.

What working with me looks like

From your first call to a Shopping account that compounds.

No deck, no procurement, no 6-month "discovery." This is what an engagement actually looks like, end to end.

1Weeks 1-4

Diagnosis & rebuild plan

Full audit: GA4, GTM, store backend, data layer, Shopping feed, GMC, all of it. Identify what's broken vs what just needs patching. Written scope with rebuild cost and timeline before any commitment.

2Weeks 5-8

Rebuild

Server-side tracking stack from scratch (custom setup using Stape as hosted infrastructure), Shopping feed restructured, SPAG campaign architecture rolled out across catalogue, GMC products fixed, bot filtering layer live.

3Months 3-4

Scale phase

Clean data feeds Smart Bidding immediately. Weekly bid reallocation routes budget to top performers. RLSA layers, day-of-week scripts, Q4 seasonal uplift. CPA collapses, ROAS holds, transaction volume compounds.

4Month 5+

Ongoing or handoff

Continue as managed engagement OR full handoff documentation (architecture diagram, runbook, monitoring playbook) so your in-house team or any future operator can pick up. Your call.

Common questions before you book

The six things every e-commerce operator asks me first.

How long until I see results?

2-3 months. Sneakit baseline was May-Aug 2022 (broken tracking, 10.95× ROAS, €30.32 CPA). 60 days to rebuild the foundation, then Sep-Dec the CPA collapsed to €9.80 and revenue compounded into €3.2M. The pattern holds when the foundation is the bottleneck.

What if my Shopify is on a different setup (headless, plus, custom storefront)?

All setups possible. Custom pricing reflects actual complexity. Headless and migrated-off-Shopify cases like Sneakit are where this framework shines because the off-the-shelf solutions stop working at that complexity level.

What does the rebuild cost?

Depends on scope, never less than €6,000. The final number is a function of your scale, catalogue size, current infrastructure debt, and how much of the build is custom vs configurable. Scoped after the diagnostic, fixed price before any work starts. Premium positioning, not the cheapest option, but the math works at €10K+/month spend.

What if my current tracking still seems OK?

If you're talking to me about this it usually means your current tracking is not fully operational, even if your dashboard says otherwise. The first deliverable is a written diagnosis of what's actually being captured vs what's being lost. You decide what to do with that.

Do you work with our existing agency or replace them?

Both options work. I can co-pilot with your existing team (tracking + feed + Shopping infrastructure layer while they keep account management), or I can take over end-to-end. Tell me what model fits your operation.

What happens if we stop working together?

Full handoff and transition period. Architecture diagram, runbook, monitoring playbook, escalation contacts. Your in-house team or any future operator can pick up the work. Clients stay because they want to, not because they're locked in.

Operator's note

The Sneakit engagement ended in 2023 when Felix closed the company for reasons unrelated to ad performance. The infrastructure I built ran successfully for the full engagement window, every number on this page is from that window. What happened to the account after my exit ran on different team and different decisions, so it's not a fair comparison to the engagement period.

I've been running Google Ads, GMC, and server-side tracking for e-commerce since 2010. Fourteen years, 150+ accounts, €50M+ in managed spend. I know which Shopify migrations break tracking, which custom storefronts need which CAPI architecture, where the default Shopping setup leaves money on the table, and how to rebuild a foundation while the account is live without taking spend offline.

Tell me what your stack looks like, what got broken, and what you're trying to scale. I'll tell you whether the same framework applies, what it would cost to build, and what it would cost to keep running. No pitch.

What this case study doesn't show - and why

  • Shopify backend revenue report, not available for publication. The €3.2M is GA4-tracked, the closest verifiable source.
  • Individual campaign names, they contain product SKUs and margin signals the client treats as proprietary.
  • Pre-engagement historical data, the account existed before this engagement but earlier screenshots weren't preserved.

"Marek is an exceptionally talented professional with a distinctive and commendable work ethic. His expertise and approach truly set him apart."

Sneakit logo

Sneakit · ecommerce · Upwork verified

Third-party verification

Verify independently, every claim is checkable.