Have you ever lost half a day to GA4 e-commerce setup? Google's official documentation is comprehensive, but if you re-read it assuming Shopify, the actual surface area you need to touch is pretty small.
GA4 adoption in Japan has reached 71%, but only 23% of organizations have configured custom conversions, and just 11% have reached report automation[1]. The first step past that "23% wall" is e-commerce setup.
This article is a checklist for completing GA4 e-commerce setup on a Shopify store in 30 minutes. Time breakdown, ordering, verification, and the three common pitfalls — organized so you don't have to hesitate in production.
Key takeaways#
- On Shopify, setup is less 'write code' and more 'connect.' With the Google & YouTube app, most e-commerce events flow to GA4 automatically
- 30-minute breakdown: Prereqs (5) / Shopify connect (10) / GA4 verify (5) / Live test (5) / Pitfall check (5)
- 90% of failures collapse into 3 patterns: currency mismatch, duplicate purchase events, Shopify Plus
checkout.liquidhandling
1. Prerequisites (5 min)#
Before starting, confirm these four items. Gaps here will void every step downstream.
| Check | Requirement | Where to look |
|---|---|---|
| Shopify plan | Basic or higher (Lite is excluded) | Shopify admin → Settings → Plan |
| GA4 property | Created, measurement ID obtained (G-XXXXXXXXXX) | GA4 admin → Admin → Property Settings |
| Shopify admin rights | Owner or staff with app-install permission | Shopify admin → Settings → Permissions |
| Currency settings | Shopify store currency matches GA4 reporting currency | Confirm both admin screens align |
Currency mismatch is the single biggest pitfall (covered below). If the store runs JPY but GA4 is still on USD, revenue numbers drift 10–15% from FX conversion. Align them now.
2. Shopify-side setup (10 min)#
The shortest route to send Shopify e-commerce events to GA4 is through the officially supported Google & YouTube app. Custom tag implementations or GTM routes work too, but considering maintainability and implementation risk, start with the official app.
Steps#
- Shopify admin → Apps → Shopify App Store → search "Google & YouTube"
- Install the Google & YouTube by Shopify app
- Connect your Google account and select your GA4 property
- Under the "Google Analytics 4" tab, enable the connection
- Confirm event coverage (recommended: enable all)
Shopify automatically sends key e-commerce events — page_view, view_item, add_to_cart, begin_checkout, purchase — in GA4's expected parameter structure. Writing this yourself in dataLayer code is at minimum half a day. That's the ROI argument for using the official app.
For Shopify Plus#
If you're on Shopify Plus and have customized checkout.liquid, do not manually embed GA4 tags there. Since 2024, Shopify Plus Checkout has migrated to Checkout Extensibility, and direct modifications to checkout.liquid are deprecated (future sunset planned). The Google & YouTube app correctly fires events even in Checkout Extensibility environments.
3. GA4-side verification (5 min)#
Once the Shopify connection is in place, verify reception on the GA4 side.
Check list#
- Admin → Property → Data collection and modification → Data streams: one Shopify-connected stream should be listed
- Admin → Events:
purchase/view_item/add_to_cartshould appear automatically (may take a few minutes after connection for first events) - Admin → Key events (formerly Conversions): mark
purchaseas a key event - Admin → Property Settings → Currency: matches the Shopify store currency
Custom dimensions (recommended)#
Standard events alone can leave you short of context for later analysis like "AOV by purchase channel" or "CVR by product category." At minimum, add these custom dimensions for downstream analytical ease:
| Dimension name | Scope | Purpose |
|---|---|---|
transaction_id | Event | Deduplicate purchases |
item_category | Event | Revenue roll-up by category |
logged_in | User | RPS analysis for logged-in vs. anonymous |
You can add these later, but configuring them before the first purchase lands preserves data continuity.
4. Live test (5 min)#
Once configured, always verify. Skipping here means discovering weeks later that "purchase data never arrived" or "the currency was wrong."
Verification steps#
- Open the GA4 Realtime report (Admin → Reports → Realtime)
- Open the Shopify store in a separate tab and complete an actual purchase flow (use Bogus Gateway or test payments if you don't want a real charge)
- Confirm the following events appear in sequence on the Realtime screen:
page_view(home page)view_item(product page)add_to_cart(cart button tap)begin_checkout(checkout start)purchase(Thank You page)
- Click the
purchaseevent and confirmvalue(amount) andcurrencyare populated correctly
If value is 0 or null, there's a problem with Shopify's product price or tax-inclusive display settings. If currency differs from expected, re-check the store currency and GA4 property currency alignment.
Using DebugView#
For deeper debugging, use GA4's DebugView (Admin → DebugView). Enable the Chrome extension "Google Analytics Debugger" while navigating the Shopify store, and events appear in DebugView immediately with full parameter detail.
5. Three common pitfalls (5 min)#
Pitfall 1: Duplicate purchase events#
Cases where Shopify has both the Google & YouTube app AND a custom GA4 tag (via GTM, etc.) are common. Result: one purchase arrives as two purchase events in GA4, doubling revenue.
Fix: In Shopify admin → Online Store → Themes → Edit code, check theme.liquid for scripts containing gtag or ga. If present, it's a double implementation alongside the Google & YouTube app — remove one. Same check applies to GTM-based GA4 configurations.
Pitfall 2: Tax-inclusive vs. tax-exclusive mismatch#
What GA4 receives in the purchase event's value is Shopify's subtotal. If the store uses tax-inclusive pricing, GA4 revenue is "tax-included total." Meanwhile, if your ad platform's conversion value is set to "tax-excluded revenue," Google Ads and GA4 will permanently diverge by the tax rate (e.g., 10%).
Fix: Unify on one definition. The common choice is to align Google Ads conversion value settings to GA4's purchase.value definition.
Pitfall 3: checkout.liquid modifications in Shopify Plus / Checkout Extensibility#
As mentioned above, Shopify Plus stores migrated to Checkout Extensibility won't run (or will stop running) direct JavaScript additions in checkout.liquid. If an old GA4 tag remains there, purchase events will stop firing on the Checkout page.
Fix: Switch to the Google & YouTube app, or reimplement via the official Checkout UI Extensions API.
Bottom line — what lies beyond the "setup wall"#
At this point, Shopify GA4 e-commerce setup is complete in 30 minutes. Prereqs 5, Shopify connect 10, GA4 verify 5, live test 5, pitfall check 5 — totaling 30 minutes.
But this 30 minutes is only the starting line. Once GA4 is collecting data, many e-commerce operators hit the next set of problems:
- "I want to compare revenue by ad channel on one screen" → hard with GA4's standard reports (requires a hand-built exploration)
- "I want to see AOV and RPS simultaneously" → requires custom metric configuration
- "I want multi-touch attribution to correctly allocate ad contribution" → possible in GA4, but complex to configure
These aren't "impossible in GA4" — they're "possible in GA4 with additional setup effort." The "71% installed, 11% fully utilizing" gap from the opening is exactly the wall built by this additional effort[1].
RevenueScope isn't a GA4 replacement. It's built as a complement that assumes GA4 is already collecting data, and provides "revenue by ad channel with RPS/AOV on one screen." Once GA4 e-commerce setup is done, having a second lens specifically for ad-investment decisions is an option worth considering.
Related articles on /en/news:
- 71% of Japanese stores have GA4 installed. Only 11% actually use it.
- GA4 isn't a revenue tool — the attribution blind spot
- The last-click trap distorting ad-budget decisions
References#
- Auriz "Google Analytics 4 Utilization Survey" October 2023
See which ads actually drive revenue, at a glance
14-day free trial. No credit card required. Up and running in 5 minutes.
Start 14-day free trial