Tracking on Shopify rarely breaks with an error message. A theme update, a new checkout app or a banner change quietly stops purchases from reaching GA4 or Meta, and you notice weeks later when the ad results look wrong. This is the test plan I run after every release, theme change or new app. It takes about an hour the first time, and much less once you know your store.
Use a staging theme where you can, and place real test orders with a 100% discount code or a low-priced product you refund afterwards.
Before you start
- Have GA4 DebugView open, with
debug_modeenabled on your test browser. - Open Meta Events Manager’s Test events tab and Google Ads’ conversion diagnostics.
- Use Chrome with DevTools, a private window, and a European VPN if your banner only shows in Europe.
- Install the Meta Pixel Helper extension, and open Shopify’s Pixel Helper from the Customer events page.
- Write down your expected values: one test order, its ID, total, tax, shipping and discount.
Setup and pixels (checks 1 to 5)
- Inventory. List every pixel in Settings → Customer events and every app that tracks. Nothing unknown, nothing duplicated.
- Pixel status. Each custom pixel shows “Connected”.
- No leftover scripts. Search
theme.liquidand theme sections forgtag,GTM-,fbqandttq. Anything left there runs outside consent and next to your pixels. - One source per platform. GA4, Meta, Google Ads and TikTok purchases each come from one place only.
- GTM container versions. The live container version is the one you expect, with a clear name and description.
Browsing events (checks 6 to 10)
- page_view fires once per page, with the real URL (not a
/wpm@sandbox address) and the right title. - view_item_list fires on collections, with items.
- view_item fires on product pages, with item ID, name, variant and price, in the right currency.
- search fires with the
search_term. - Item IDs follow the same convention on every event, and match your Merchant Center feed if you run Shopping ads.
Cart and checkout (checks 11 to 15)
- add_to_cart fires from every add-to-cart button: product page, quick add, cart drawer, upsell widgets.
- remove_from_cart and view_cart fire, with the right quantities.
- begin_checkout fires once when the checkout opens.
- add_shipping_info and add_payment_info fire at their steps, with the full cart.
- Same client ID on the store and the checkout (compare
cidin GA4 requests), so purchases keep their traffic source.
Purchase (checks 16 to 20)
- purchase fires exactly once per order, in GA4, Meta and Google Ads.
- transaction_id equals the Shopify order ID.
- Value, tax, shipping, currency and coupon match the order, with the value definition you chose (total or subtotal) applied consistently.
- Reloading the thank-you page doesn’t send a second purchase.
- Every payment path works: card, PayPal, Shop Pay, buy-now-pay-later, and a post-purchase upsell if you use one.
Consent (checks 21 to 23)
- Before any choice, no Meta or TikTok requests and no tracking cookies; GA4 requests, if any, carry
gcs=G100. - After refusal, the same holds on the theme and on the checkout.
- After acceptance, GA4 shows
gcs=G111, cookies appear and ad platforms receive events.
The details of these three checks are in the five-minute cookie banner test.
Ad platforms (check 24)
- Meta and Google Ads receive the test purchase correctly:
- Meta: browser and server events deduplicated (same
event_id), Event Match Quality stable. - Google Ads: one primary purchase action, enhanced conversions active, no “inactive” or “no recent conversions” warnings.
- Meta: browser and server events deduplicated (same
Reconciliation (check 25)
- A week after the change, compare GA4 purchases with Shopify orders by order ID. The capture rate (GA4 purchases divided by Shopify online orders) should be in line with the weeks before. A sudden drop means something broke. The method is in why GA4 shows fewer purchases than Shopify.
A shorter version for small changes
For a minor theme edit or app update, run checks 6, 11, 16, 17, 22 and 25. They catch most regressions in about fifteen minutes.
Frequently asked questions
How often should I test my Shopify tracking?
Run the short version after every theme publish, app install or tracking change, and the full list every quarter and before peak sales periods.
What difference between GA4 and Shopify is acceptable?
There is no universal number, because it depends on your consent rate and audience. What matters is a stable, explained gap, measured by order ID. A sudden change is the warning sign.
Which tools do I need for tracking QA?
Chrome DevTools, GA4 DebugView, Meta’s Test events and Pixel Helper, Shopify’s Pixel Helper, Google Ads conversion diagnostics, and a way to place real test orders.
Make it a habit
- Run the short version after every theme publish or app install.
- Run the full list every quarter, and before big sales periods like Black Friday.
- Keep a simple log: date, change, checks run, result. When the numbers move, you’ll know whether tracking changed.
- Set a GA4 custom insight or a Looker Studio alert on daily purchases, so a sudden drop reaches you within a day. See the Looker Studio dashboard for Shopify and GA4.
If you’d rather have someone run it for you, the checklist is the backbone of my Shopify tracking audit (from 800€), and every Shopify tracking package ends with it. Book a free 30-minute call to talk about your store.