Your Shopify Checkout is Stealing Credit from Your Best Campaigns
GA4 shows checkout URLs as landing pages? Your campaigns are losing attribution at Shopify checkout. Fix it in 3 minutes with cross-domain tracking.
You check your GA4 landing page report. Something's wrong. 40% of your purchases are attributed to "checkout.shopify.com / referral" instead of your Facebook ads, Google campaigns, or email sequences.
Your best campaigns look like failures. Your actual winners are invisible. You're making budget decisions based on completely broken data.
Table of contents
- Why This Happens
- How Bad Is It?
- The 3-Minute Fix
- Step 1: Configure Cross-Domain Tracking in GA4
- Step 2: Add Checkout Domain to Unwanted Referrals
- Step 3: Test with Real Purchase (1 minute)
- What You'll See After Fixing
- Before (Broken Attribution):
- After (Correct Attribution):
- Advanced: Verify It's Working
- Check 1: Exclusion List
- Check 2: Real-Time Testing
- Check 3: Landing Page Report
- Troubleshooting
- Issue 1: Still Seeing checkout.shopify.com as Landing Page
- Issue 2: Shopify Plus Custom Checkout
- Issue 3: Shop Pay Transactions Still Break
- FAQ
- Will this fix historical data?
- Do I need Shopify Plus?
- What about Shop Pay?
- How do I verify it's working?
- Does this work with Google Tag Manager?
- Will this affect my Facebook Pixel or other tracking?
- What if I use Shopify Scripts for custom checkout?
- Can I see which campaigns drive checkout visits?
- How long does it take to see results?
- What if I have multiple Shopify stores?
- Related Resources
- Internal Guides
- Google Official Documentation
- Shopify Resources
- Conclusion
🚨 Not sure what's breaking your tracking?
Run a free 60-second audit to check all 40+ ways UTM tracking can fail.
Scan Your Campaigns Free✓ No credit card ✓ See results instantly
Why This Happens
Shopify uses a separate checkout domain (checkout.shopify.com) for all Shopify Plus stores and certain payment methods. When customers proceed to checkout, GA4 treats it as a new session from a different website.
The problem:
Customer journey (actual):
Facebook Ad → yourstore.com/product → checkout.shopify.com/purchase → Conversion
GA4 attribution (broken):
Landing page: checkout.shopify.com
Source/Medium: checkout.shopify.com / referral
Campaign: (not set)
Your $5,000 Facebook campaign that drove the sale? GA4 thinks the checkout page did it.
How Bad Is It?
Typical impact:
- 30-50% of conversions misattributed to checkout domain
- Paid campaigns show zero ROI (actual conversions hidden)
- Organic channels get inflated credit
- Attribution reporting completely unreliable
Example:
Actual performance:
- Facebook Ads: 100 conversions, $50 CPA
- Google Ads: 50 conversions, $60 CPA
- Organic: 20 conversions
GA4 shows (broken):
- Facebook Ads: 40 conversions, $125 CPA (looks terrible!)
- Google Ads: 20 conversions, $150 CPA (looks terrible!)
- checkout.shopify.com: 110 conversions (what?!)
- Organic: 20 conversions
😰 Is this your only tracking issue?
This is just 1 of 40+ ways UTM tracking breaks. Most marketing teams have 8-12 critical issues they don't know about.
• 94% of sites have UTM errors
• Average: $8,400/month in wasted ad spend
• Fix time: 15 minutes with our report
✓ Connects directly to GA4 (read-only, secure)
✓ Scans 90 days of data in 2 minutes
✓ Prioritizes issues by revenue impact
✓ Shows exact sessions affected
The 3-Minute Fix
This uses GA4's cross-domain measurement to maintain session continuity across Shopify's checkout domain.
Step 1: Configure Cross-Domain Tracking in GA4
GA4 Setup (2 minutes):
- Open GA4 → Admin → Data Streams → Web
- Click your web stream
- Click Configure tag settings
- Scroll to Configure your domains
- Click Add condition
- Add these three domains (one at a time):
yourstore.com(your custom domain)yourstore.myshopify.com(your Shopify admin domain)checkout.shopify.com(Shopify checkout domain)
- Click Save
Example configuration:
Domain 1: "mydemostore.com" (match type: contains)
Domain 2: "mydemostore.myshopify.com" (match type: contains)
Domain 3: "checkout.shopify.com" (match type: contains)
Step 2: Add Checkout Domain to Unwanted Referrals
Still in Configure tag settings:
- Scroll to List unwanted referrals
- Click Add condition
- Add these domains:
checkout.shopify.comyourstore.myshopify.com
- Click Save
Why this matters: Prevents GA4 from starting a new session when users move between domains.
Step 3: Test with Real Purchase (1 minute)
Testing checklist:
- Open incognito window
- Visit your store from a UTM-tagged URL:
Code
yourstore.com?utm_source=test&utm_medium=email&utm_campaign=test - Add product to cart
- Proceed to checkout (you'll be redirected to checkout.shopify.com)
- Complete purchase
- Check GA4 Real-time report
- Verify: Original landing page (
yourstore.com) gets credit, NOT checkout domain
What You'll See After Fixing
Before (Broken Attribution):
GA4 Landing Pages Report:
1. checkout.shopify.com/12345 — 250 conversions
2. yourstore.com — 180 conversions
3. yourstore.com/product — 100 conversions
After (Correct Attribution):
GA4 Landing Pages Report:
1. yourstore.com — 220 conversions
2. yourstore.com/product — 180 conversions
3. yourstore.com/sale — 130 conversions
(checkout.shopify.com disappears from report!)
Campaign attribution fixes automatically:
- Facebook Ads show real conversion numbers
- Google Ads show real ROI
- Email campaigns get proper credit
- You can finally trust your data
Advanced: Verify It's Working
Check 1: Exclusion List
GA4 → Admin → Data Streams → Web → More tagging settings → Show all → Excluded referrals
Verify you see:
checkout.shopify.comyourstore.myshopify.com
Check 2: Real-Time Testing
- Open GA4 → Reports → Real-time
- Make test purchase
- Watch session flow in real-time
- Session should remain unbroken across domain change
Check 3: Landing Page Report
After 24-48h:
- GA4 → Reports → Acquisition → Traffic acquisition
- Add secondary dimension: Landing page
- Search for "checkout.shopify.com"
- Should see dramatic decrease (or zero) in checkout domain as landing page
Troubleshooting
Issue 1: Still Seeing checkout.shopify.com as Landing Page
Problem: Configuration complete but checkout domain still appears in reports.
Cause: Changes only affect new sessions, not historical data.
Fix:
- Verify cross-domain tracking configured correctly
- Verify unwanted referrals list includes checkout.shopify.com
- Wait 24-48h for new data to accumulate
- Historical data remains incorrect (expected)
Issue 2: Shopify Plus Custom Checkout
Problem: Using custom checkout domain (e.g., checkout.yourstore.com).
Fix:
- Add your custom checkout domain to cross-domain list
- Add to unwanted referrals list
- Follow same process
Issue 3: Shop Pay Transactions Still Break
Problem: Shop Pay purchases lose attribution.
Cause: Shop Pay uses additional domains.
Fix:
- Add
shop.appto cross-domain list - Add to unwanted referrals list
FAQ
Will this fix historical data?
No, only future tracking. GA4 cannot retroactively fix attribution for past conversions. But new purchases will show accurate attribution immediately (24-48h for data to appear in reports).
Do I need Shopify Plus?
No. This works for all Shopify plans. All Shopify stores redirect to checkout.shopify.com for checkout, regardless of plan.
What about Shop Pay?
Covered by the checkout.shopify.com domain configuration. Shop Pay transactions go through Shopify's checkout domain.
How do I verify it's working?
Make a test purchase from a UTM-tagged URL. Check GA4 to confirm the original landing page gets credit, not the checkout URL. Use Real-time report for immediate verification.
Does this work with Google Tag Manager?
Yes. If you use GTM instead of native GA4, add the same cross-domain configuration to your GA4 Configuration tag in GTM:
Cross Domain Tracking: checkout.shopify.com,yourstore.myshopify.com
Will this affect my Facebook Pixel or other tracking?
No. This only affects GA4 attribution. Facebook Pixel, TikTok Pixel, and other tracking pixels operate independently.
What if I use Shopify Scripts for custom checkout?
Cross-domain tracking still works. Add your specific checkout domain to the configuration.
Can I see which campaigns drive checkout visits?
Yes, but after fixing cross-domain tracking, you'll see campaigns that drive original landing pages, not checkout pages. This gives you accurate campaign performance.
How long does it take to see results?
Immediate for new sessions. Real-time report shows correct attribution within minutes. Standard reports update within 24-48 hours.
What if I have multiple Shopify stores?
Configure cross-domain tracking for each GA4 property separately. Each store needs its own checkout.shopify.com and myshopify.com domains in the configuration.
Related Resources
Internal Guides
- CMS UTM Tracking Errors - Platform-specific tracking issues
- Fix Internal UTM Attribution Loss - Cross-domain problems
- Complete UTM Tracking Guide - UTM fundamentals
- Paid Campaign Tracking Checklist - Verify attribution
Google Official Documentation
- GA4 Cross-Domain Measurement - Official guide
- GA4 Referral Exclusions - Unwanted referrals
Shopify Resources
- Shopify Checkout - Official checkout docs
Conclusion
Shopify's separate checkout domain breaks GA4 attribution by default. Cross-domain tracking fixes it in 3 minutes.
Fix checklist:
- ✅ Add yourstore.com, yourstore.myshopify.com, checkout.shopify.com to cross-domain configuration
- ✅ Add checkout.shopify.com and yourstore.myshopify.com to unwanted referrals list
- ✅ Test with real purchase from UTM-tagged URL
- ✅ Verify original landing page gets credit (not checkout domain)
- ✅ Wait 24-48h for new data to accumulate in reports
Result: Accurate campaign attribution, reliable ROI data, correct marketing decisions based on real performance.
✅ Fixed this issue? Great! Now check the other 39...
You just fixed one tracking issue. But are your Google Ads doubling sessions? Is Facebook attribution broken? Are internal links overwriting campaigns?
• Connects to GA4 (read-only, OAuth secured)
• Scans 90 days of traffic in 2 minutes
• Prioritizes by revenue impact
• Free forever for monthly audits
Join 2,847 marketers fixing their tracking daily