Get your Shopify tracking to 95%+ accuracy guaranteed in writing.
Whether you run Shopify Basic, Advanced, Plus, or a headless Hydrogen storefront — every iOS user, every ad-blocker user, every cookie-banner click is invisible to Meta and Google. They keep optimizing for the wrong audience. You keep paying for clicks that look unprofitable on paper but were actually your best customers. We rebuild Shopify tracking server-side — one done-for-you stack that covers every variant — so the math finally works.
Free30 minutesNo obligation
Shopify · what breaks
Why your Shopify conversion data is broken
- 01
iOS 14.5 & ad blockers eat a significant share of pixel fires
Browser-side pixels are blocked, throttled, or stripped. Your ad platforms optimize on a fraction of real conversions and waste budget on the wrong audiences.
- 02
Shopify's native pixels miss customer data
The default Shopify integrations don't pass hashed email, phone, address, or first-party order data — exactly the signals Meta and Google need to match conversions.
- 03
Your CAPI deduplication is wrong
Most stores send both browser and server events but use mismatched event_id values. Meta double-counts or drops events. Reported ROAS becomes meaningless.
- 04
GA4 is full of (not set), bots, and ghost traffic
Without a hardened sGTM and proper UTM hygiene, GA4 attribution is noise. You can't trust the numbers you're optimizing against.
Shopify · the fix
What changes after the setup — Shopify
The conversions your browser tags never sent
Blocked, expired and never-fired events reach the platforms from your server instead — then we reconcile the result against your backend until it holds above 95%.
8+ Meta Event Match Quality
We hash and pass email, phone, name, city, state, zip, country, fbc, fbp, IP, and user-agent on every Purchase, AddToCart, and InitiateCheckout.
Cleaner GA4, trustworthy ROAS
First-party server tracking means fewer (not set), better channel grouping, accurate session attribution, and ROAS you can actually act on.
GDPR-safe Consent Mode v2
Granted/denied signals wired into Shopify's consent API so you stay legal in the EU/UK while still recovering modeled conversions.
Shopify · architecture
How a Shopify order should reach the ad platforms
Shopify's checkout is not your page. Since checkout extensibility replaced checkout.liquid, you cannot drop arbitrary script into it, which is exactly where most legacy Shopify tracking used to live and quietly stopped working.
- 1
Click identifiers captured at first touch
gclid, gbraid, wbraid, fbclid, ttclid and msclkid are read from the landing URL and written to a first-party cookie in the theme, before any redirect to a Markets subfolder or a currency switch can strip them.
- 2
The browser sends the fast, fragile copy
The Customer Events API — Shopify's replacement for script tags in checkout — emits checkout_started, payment_info_submitted and checkout_completed from a sandboxed worker. It is the only supported browser-side hook inside checkout, and it is what a modern Shopify build listens to.
- 3
The order itself is the source of truth
The order in Shopify Admin is the truth. Not the thank-you page, which a customer can close, refresh, or never reach when a payment provider like Shop Pay or PayPal redirects them somewhere unexpected.
- 4
A server container sends the authoritative event
The orders/create webhook or the Customer Events server pixel feeds a GTM server container on your own subdomain, which forwards the purchase with the Shopify order ID as the deduplication key.
- 5
Customer identity raises match quality
The order carries email, phone, first and last name, city, province and zip. Hashed and sent server-side, these are what move Meta's Purchase match quality out of the low 5s that a browser-only Shopify setup typically produces.
Shopify · events
The event set we build on Shopify, and where each one comes from
Shopify emits its own Customer Events names; we map them to each platform's standard events rather than sending custom names, because custom events do not qualify for catalog and optimization features.
| Event | Fires when, on Shopify | Key parameters | Sent from |
|---|---|---|---|
| view_item | product_viewed fires from the Customer Events API on a product page | item_id, value, currency, event_id | Browser + server, deduped |
| add_to_cart | product_added_to_cart fires, carrying the variant ID | item_id, quantity, value, currency, event_id | Browser + server, deduped |
| begin_checkout | checkout_started fires as the customer enters Shopify checkout | value, currency, num_items, event_id | Browser + server, deduped |
| add_payment_info | payment_info_submitted fires inside checkout | value, currency, payment_type, event_id | Browser + server, deduped |
| purchase | The orders/create webhook fires — not when the thank-you page renders | order_id, value, currency, items[], hashed email/phone/name/address, event_id | Server authoritative |
| refund | A refund is issued in Shopify Admin, days or weeks later | order_id, value, currency | Server only |
| subscription_started | A subscription app records its first successful charge | order_id, value, currency, plan, event_id | Server authoritative |
Shopify · normal or broken
What is normal on Shopify, and what is actually broken
Shopify stores generate a specific set of false alarms, mostly because the platform reports on its own basis and the ad platforms report on theirs.
Normal, not a fault
Shopify Analytics and GA4 disagree
Shopify counts sessions its own way and attributes to last non-direct click by default. Two tools with different models returning different numbers is expected, not a fault.
Draft orders and POS sales missing from ad platform data
Those orders never had a web session. They belong in your Shopify totals and not in your ad platform conversions.
Ad platforms report more conversions than you have orders
Meta credits a 7-day click and 1-day view; Google credits on click date. Two platforms can each claim the same sale. Compare each one to your order records separately and never add them together.
Recent days always look worse than they finish
Conversions are credited back to the date of the click, so yesterday's return on ad spend is understated and will keep improving for several days. This is attribution working, not data arriving late.
Actually broken
Purchase count roughly double the order count
Almost always a theme-hardcoded pixel plus a Shopify channel app plus a container tag, all firing for the same order. Shopify makes it unusually easy to install three paths without noticing.
Conversions stopped after migrating off checkout.liquid
Script tags in checkout no longer run. Anything that lived there — a hardcoded Purchase pixel, a partner snippet — is now silently dead and the account has been optimizing blind since the migration.
Variant IDs sent as item IDs while the Merchant Center feed uses parent IDs
Per-product reporting and dynamic remarketing both break, and neither surfaces an error anywhere.
Purchases missing for customers who paid with Shop Pay or PayPal
The redirect back can be interrupted. If the browser event is the only path, those orders never reach the ad platforms at all.
Shopify · prove
How we prove the Shopify build is correct
The tag firing proves the tag fires. These prove the numbers are right.
Source of truth
Shopify order records
- checkout_completed and the orders/create webhook both confirmed firing, with the Shopify order ID present on both.
- A test order placed through Shop Pay specifically, confirming the purchase still lands when the redirect is interrupted.
- Item IDs matched against the Merchant Center feed, so per-product reporting and dynamic remarketing resolve.
- Purchase count within a few percent of shopify order records for a fully closed week, matched on order ID rather than on totals.
- No order ID appearing twice in any platform's event log.
- Deduplication confirmed at every destination that supports it.
- Test and staff orders excluded, with the exclusion confirmed active rather than merely configured.
- The same reconciliation repeated 30 days later, because a setup that works once and then drifts is the harder failure to catch.
Shopify · free audit
What we check in the free audit
- iOS 14.5 & ad blockers eat a significant share of pixel fires
- Shopify's native pixels miss customer data
- Your CAPI deduplication is wrong
- GA4 is full of (not set), bots, and ghost traffic
Checked against
Shopify order records
Free30 minutesNo obligation
Shopify · when not to buy
When a Shopify rebuild is not what you need
We would rather say this now than three weeks into an engagement.
- You are on Shopify Basic spending under about $2,000 a month on ads. Shopify's built-in Meta and Google channel apps, configured correctly, will get you most of the way at no cost.
- Your Meta Purchase match quality is already 8 or above and deduplication is confirmed. Some Shopify channel installs genuinely do this right — check before you buy anything.
- You are about to replatform or migrate to Hydrogen. Rebuild after the move; almost everything would need doing twice.
Shopify · what we deliver
What you get — Shopify
Server-side GTM container
Hosted on your own subdomain (e.g. data.yourstore.com) with Stape or self-hosted Cloud Run. Full ownership, no per-request fees beyond hosting.
Meta CAPI gateway with dedup
Browser + server hybrid with matching event_id, deterministic event_time, and full advanced matching parameters. EMQ verified live.
Google Enhanced Conversions
Hashed customer data passed via gtag/CAPI for both Google Ads and GA4. Smart Bidding gets the signal it needs.
TikTok Events API + Pinterest CAPI
Same dedup discipline applied to TikTok and Pinterest if you run those channels. Optional add-on.
Shopify checkout.liquid + Pixel API
Migrated to Shopify's new checkout extensibility (Customer Events API) — future-proof for Shopify's 2025 deprecations.
QA report + maintenance handoff
Live-fire test report, EMQ screenshots, GA4 DebugView walkthrough, and a Notion runbook so your team can maintain it.
Written guarantee
95%+ tracking accuracy
Measured against Shopify order records. Miss it and we keep working at no cost.
Pricing
Pick the package that fits your ad spend
Browser-side starter
$400One-time fee · lifetime ownership
Foundation pixel install for your Shopify store. Honest disclosure: this is a starting point only. If you spend $1K+/month on paid media you should be on the 1st-party server-side tier — rather than quote you a recovery percentage, we'll show you how to measure your own gap: compare what the platforms reported against the orders in your backend for the same week. That ratio is the entire argument, and it's yours to check — see trackingconsulting.com/measurement-accuracy-methodology.
- One-time fee · zero monthly · zero SaaS lock-in
- Shopify dataLayer (clean spec)
- GA4 e-commerce events
- Meta Pixel · Google Ads tag
- TikTok Pixel · Microsoft UET
- Consent Mode v2 banner integration
- QA test orders + 7-day support
- No CAPI · no iOS recovery
1st-party server-side
Recommended$800One-time fee · most popular
The done-for-you package every Shopify store running paid ads should start with. We build the entire 1st-party server-side stack on your subdomain — Meta, Google, TikTok, Microsoft, LinkedIn all fed from the server. Recovers the conversions iOS, Safari ITP, ad blockers and cookie deprecation hide today. You don't lift a finger. Built in 2–4 days · accurate data in 7 days.
- One-time fee · save vs SaaS subscriptions over 5 years
- Fully recovered + built in 2–4 days · accurate data in 7 days
- Everything in browser-side starter
- 1st-party server-side GTM (your subdomain)
- Meta CAPI · full advanced matching · 8+ EMQ
- Google Enhanced Conversions (Web + Leads)
- TikTok Events API · Microsoft UET server
- Deterministic browser ↔ server deduplication
- Live EMQ verification + screenshots
- Notion runbook + 30-day support · zero recurring
Full 1st-party stack
$1,800One-time fee · lifetime ownership
Every paid-media channel running 1st-party server-side, end-to-end. For Shopify brands spending $30K+/month who can no longer afford attribution leaks. Pay once. Own everything. Includes Pinterest + Snap + Reddit + LinkedIn CAPI, Klaviyo identity stitching, BigQuery + Looker Studio.
- One-time fee · save 6-figure SaaS subscriptions over 5 years
- Everything in 1st-party server-side tier
- Pinterest · Snapchat · Reddit · LinkedIn · X CAPIs
- Klaviyo identity stitching (if used)
- BigQuery export (server logs + GA4)
- Looker Studio attribution dashboard (branded)
- Multi-region / multi-currency / EU residency
- GDPR-audit-ready Consent Mode v2 wiring
- 60-day support · optional retainer · no lock-in
FAQ
Shopify questions, answered
All of them. The server container and CAPI gateway run on your own infrastructure, completely independent of your Shopify plan. We adjust the implementation per variant: Basic/Advanced use Customer Events API (Web Pixel), Plus stores get checkout.liquid customizations + Markets-aware routing, and Hydrogen storefronts get a typed React/Oxygen dataLayer module that runs at the edge.
Yes. We're Plus-grade out of the box. Markets currency normalization happens at the gateway so Meta and Google see consistent revenue values. B2B customers can be routed to a different ad-account than DTC. Multi-region (EU + US) data residency is available via Stape EU or self-hosted Cloud Run europe-west.
Yes — Hydrogen is one of our most-requested setups precisely because it has zero native pixel integrations. We ship a TypeScript dataLayer module that runs on Oxygen / Workers / Vercel Edge, plus a server-side CAPI gateway that's edge-runtime compatible. Hydration-safe events, no double-fires, EMQ 8+ verified live.
We typically disable the native integrations because they cause double-counting and EMQ drops. Our setup replaces them entirely with cleaner server-side equivalents that pass more data, more reliably — and we route around them on Plus stores running multiple sales channels.
We migrate you to the new Customer Events API and Web Pixel API at the same time we set up server-side. So you're future-proof for Shopify's deprecation timeline as a side benefit. Plus stores still on checkout.liquid get a clean migration path.
Side-by-side: 7-day baseline of your current setup (Meta Ads Manager + GA4 + Stripe), then 7-day comparison post-launch. We send you the screenshots. How much attribution comes back depends on your iOS share, ad-blocker rate and consent mix — we report the measured before-and-after rather than promising a number + ad-blocker rate of your audience.
Yes — a monthly health check ($20–$50/mo) that includes pixel monitoring, EMQ audits, consent compliance review, and quarterly Shopify update reviews. Optional, no lock-in.
More on Shopify
- GuideServer-Side Tracking for Shopify: The 2026 Setup That Actually Works
- GuideServer-Side Tracking Explained: What It Is, How It Works, and Who Actually Needs It (2026)
- Free toolFree Shopify tracking audit (Custom Pixel vs Theme Code dedup)
- Free toolMeta EMQ score predictor
- Free toolEnhanced Conversions checker
- Klaviyo + ShopifyIf your Klaviyo flows fire on bad data, every email triggers the wrong segment, …
- GA4 and Shopify revenue mismatchWhy don't GA4 and Shopify revenue match?
- Meta purchases don't match ShopifyWhy don't my Meta purchases match Shopify?
Free · 30 min
Get your free Shopify tracking audit
Free30 minutesNo obligation
