Troubleshoot Shopify Tracking Events Not Firing | Blue Frog Docs

Troubleshoot Shopify Tracking Events Not Firing

Debug and fix common Shopify tracking issues including GA4, Meta Pixel, and GTM events that aren't firing correctly.

Troubleshoot Shopify Tracking Events Not Firing

Common causes and solutions for tracking events that don't fire correctly on Shopify stores.

For general tracking troubleshooting, see the global tracking troubleshooting guide.

Quick Diagnosis Checklist

Before diving deep, check these common issues:

  • Ad blocker disabled (for testing)
  • Incognito/private mode (clear cache)
  • Browser console has no errors (F12)
  • Correct implementation method (native, manual, or GTM - not multiple)
  • GTM container published (if using GTM)
  • Shopify Plus (if expecting checkout events)
  • Recent theme changes (may have broken implementation)
  • Apps recently installed/removed (may interfere)

Shopify-Specific Tracking Limitations

Checkout Tracking (Non-Plus Stores)

Limitation: Shopify Basic, Shopify, and Advanced plans cannot add custom code to checkout pages.

Impact:

  • ❌ Cannot track begin_checkout during checkout
  • ❌ Cannot track add_shipping_info
  • ❌ Cannot track add_payment_info
  • ✓ CAN track begin_checkout on cart page (when checkout button clicked)
  • ✓ CAN track purchase on order confirmation page

Verification:

  1. Go to SettingsPlan
  2. Check if you have "Shopify Plus"
  3. If not Plus: Checkout events are not possible mid-checkout

Workaround:

// On cart page, fire begin_checkout when button clicked
document.querySelector('[name="checkout"]').addEventListener('click', function() {
  gtag('event', 'begin_checkout', {
    // parameters
  });

  fbq('track', 'InitiateCheckout', {
    // parameters
  });
});

Solution: Upgrade to Shopify Plus for full checkout access.

Order Status Page (All Stores)

All stores can track purchase events on order confirmation:

Settings → Checkout → Order status page → Additional scripts

If events not firing here:

  1. Check if scripts are in correct location:

    • Must be in "Additional scripts" section
    • NOT in "Additional content & scripts" (wrong section)
  2. Verify Liquid syntax:

    <!-- Correct -->
    {{ total_price | money_without_currency }}
    
    <!-- Wrong (includes $) -->
    {{ total_price }}
    
  3. Check for JavaScript errors:

    • Open browser console on order confirmation
    • Look for red errors
    • Fix syntax errors

Google Analytics 4 (GA4) Issues

GA4 Events Not Appearing

1. Check GA4 DebugView

Enable Debug Mode:

gtag('config', 'G-XXXXXXXXXX', {
  'debug_mode': true
});

Check DebugView:

  • GA4AdminDebugView
  • Should see events in real-time
  • If events appear here but not in Reports, wait 24-48 hours for processing

2. Verify Measurement ID

Check format: Must start with G- (e.g., G-XXXXXXXXXX)

NOT UA-XXXXXXXXX (Universal Analytics - deprecated)

<!-- Correct: GA4 -->
gtag('config', 'G-XXXXXXXXXX');

<!-- Wrong: Universal Analytics -->
gtag('config', 'UA-XXXXXXXXX');

3. Check for Duplicate Implementations

Common scenario: Both Shopify native integration AND manual code installed.

Diagnosis:

// In browser console
window.dataLayer.filter(obj => obj.event === 'purchase').length
// If > 1, you have duplicates

Fix:

  • Remove Shopify's native Google integration
  • OR remove manual theme code
  • Keep only ONE implementation

To remove native integration:

  1. SettingsApps and sales channels
  2. GoogleUninstall

4. Shopify Data Layer Not Populating

Diagnosis:

// Check data layer in console
console.log(window.dataLayer);

Expected output (on product page):

[{
  event: 'product_viewed',
  ecommerce: {
    detail: {
      products: [...]
    }
  }
}]

If empty or missing:

  • Old theme: Shopify data layer not supported
  • Custom theme: May not include Shopify's tracking
  • JavaScript errors: Blocking data layer initialization

Fix:

  • Update to Dawn or OS 2.0 theme
  • Check browser console for errors
  • Manually implement data layer events

5. GTM + GA4 Not Working

Check GTM is installed:

// In console
console.log(window.google_tag_manager);
// Should show GTM object

Check GTM container published:

  1. Go to GTM
  2. Verify "Published" next to container name
  3. If "Workspace" shows changes, click SubmitPublish

Check GA4 tag in GTM:

  1. GTM → Tags
  2. Find GA4 Configuration tag
  3. Click Preview
  4. Verify tag fires on your store
  5. Check for errors in Preview mode

Common GTM mistakes:

  • GA4 tag not triggered on correct events
  • Measurement ID incorrect
  • Variables not capturing data correctly
  • Tag blocked by trigger exception

GA4 Ecommerce Events Missing Parameters

Issue: Events fire but missing product data.

Diagnosis:

  • Check DebugView
  • Click event to see parameters
  • Look for empty items array or missing value

Common causes:

1. Incorrect Variable Path:

// Wrong
{{ecommerce.products.0.id}}

// Correct (Shopify uses 'detail')
{{ecommerce.detail.products.0.id}}

2. Money Filter Missing:

<!-- Wrong (includes currency symbol) -->
{{ product.price }}

<!-- Correct -->
{{ product.price | money_without_currency }}

3. Product Object Not Available:

<!-- Check if product exists first -->
{% if product %}
  gtag('event', 'view_item', {
    value: {{ product.price | money_without_currency }}
  });
{% endif %}

Meta Pixel Issues

Meta Pixel Not Loading

1. Verify Pixel Helper

Install Meta Pixel Helper:

  • Green icon = Working
  • Yellow = Warnings
  • Red = Error
  • No icon = Not loaded

2. Check Pixel ID

Format: 16-digit number (e.g., 1234567890123456)

Not: Meta Business Manager ID or Page ID

Verify in Meta Events Manager:

  1. Meta Events Manager
  2. Select your pixel
  3. Copy Pixel ID from top

3. Check for Ad Blockers

Meta Pixel is commonly blocked:

  • Disable ad blocker for testing
  • Use incognito mode
  • Test on mobile device

4. Multiple Pixel Implementations

Diagnosis:

// In console
window.fbq
// Should show function, not undefined

Check for duplicates:

  • Shopify Facebook Sales Channel
  • Manual theme code
  • GTM implementation
  • Facebook Pixel app

Fix: Choose ONE method and remove others.

Meta Pixel Events Not Firing

1. Check Events Manager

Real-time testing:

  1. Meta Events Manager → Test Events
  2. Enter your store URL
  3. Perform actions
  4. Verify events appear within seconds

2. Common Event Issues

AddToCart not firing:

  • Check if theme uses AJAX cart
  • Event listener may not be attached correctly
  • Verify button selector is correct

Diagnosis:

// Check if add to cart buttons exist
document.querySelectorAll('form[action*="/cart/add"]').length
// Should be > 0 on product page

Purchase not firing:

  • Check Additional Scripts location (Settings → Checkout → Order status)
  • Verify Liquid syntax
  • Check for JavaScript errors on confirmation page

ViewContent firing multiple times:

  • Duplicate implementations
  • Event listener attached multiple times
  • Fix: Remove duplicates, use event delegation

3. Missing Event Parameters

Issue: Events fire but no content_ids or value.

Fix:

// Correct format
fbq('track', 'AddToCart', {
  content_ids: ['123'],        // Array of strings
  content_type: 'product',     // Required
  value: 29.99,                // Number, no currency symbol
  currency: 'USD'              // ISO code
});

// Wrong
fbq('track', 'AddToCart', {
  content_ids: 123,            // Should be array
  value: '$29.99',             // Should be number
  currency: 'dollars'          // Should be ISO code
});

Google Tag Manager (GTM) Issues

GTM Container Not Loading

1. Verify Installation

Check theme.liquid:

<!-- Should be in <head> -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXXX');</script>

<!-- Should be in <body> -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-XXXXXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>

Verify Container ID: Replace GTM-XXXXXXX with your actual ID.

Check in console:

console.log(window.google_tag_manager);
// Should show GTM object with your container ID

2. Container Not Published

Most common GTM issue: Changes made but not published.

Fix:

  1. Go to GTM
  2. Look for "Workspace Changes" banner
  3. Click Submit
  4. Name version
  5. Click Publish

Verify:

  • Refresh your store
  • Check Preview mode shows published version

3. GTM on Theme but Not Checkout (Plus Stores)

Issue: GTM works on storefront but not checkout.

Cause: GTM only in theme.liquid, not in checkout.liquid.

Fix: Add GTM code to checkout.liquid:

  1. Theme code editor → Layoutcheckout.liquid
  2. Add same GTM code to <head> and <body>
  3. Save

GTM Triggers Not Firing

1. Custom Event Triggers

Issue: Shopify event fires but GTM trigger doesn't catch it.

Diagnosis:

  1. GTM Preview mode
  2. Navigate to product page
  3. Check Data Layer tab
  4. Look for product_viewed event

If event is in data layer but trigger doesn't fire:

  • Trigger event name misspelled
  • Trigger has incorrect conditions
  • Trigger firing order issue

Fix:

Trigger Type: Custom Event
Event name: product_viewed  (exact match, case-sensitive)

2. Variables Not Populating

Issue: Variable shows undefined in GTM Preview.

Diagnosis:

  1. GTM Preview → Variables tab
  2. Find your variable
  3. Check value

Common causes:

Wrong data layer path:

// Wrong
ecommerce.products.0.id

// Correct (Shopify uses 'detail')
ecommerce.detail.products.0.id

Event hasn't fired yet:

  • Variable accessed before data layer push
  • Use trigger to ensure event fired first

Data doesn't exist on page:

  • Product data on cart page
  • Cart data on product page
  • Check page type first

3. Tags Not Firing

Check Tag Firing Rules:

  1. GTM Preview
  2. Click on tag
  3. Check "Firing Triggers" vs "Blocking Triggers"
  4. Verify trigger conditions met

Common issues:

  • Tag paused (unpause in GTM)
  • Trigger exception blocking tag
  • Tag firing limit reached
  • JavaScript error in tag code

Data Layer Issues

Shopify Data Layer Empty

Diagnosis:

console.log(window.dataLayer);

If returns undefined or []:

Cause 1: Old Theme

  • Legacy themes don't have Shopify's native data layer
  • Update to Dawn or OS 2.0 theme

Cause 2: Custom Theme

  • Theme doesn't include Shopify tracking
  • Manually add data layer events

Cause 3: JavaScript Errors

  • Check browser console for errors
  • Fix errors to allow data layer initialization

Data Layer Events Not Capturing Product Data

Issue: product_viewed fires but no product details.

Diagnosis:

// Check event structure
window.dataLayer.filter(obj => obj.event === 'product_viewed')

Expected:

[{
  event: 'product_viewed',
  ecommerce: {
    detail: {
      products: [{
        id: '123',
        name: 'Product Name',
        // ...
      }]
    }
  }
}]

If missing ecommerce object:

  • Theme doesn't populate product data
  • Manually implement:
<!-- Add to product template -->
<script>
  window.dataLayer = window.dataLayer || [];
  dataLayer.push({
    event: 'product_viewed',
    ecommerce: {
      detail: {
        products: [{
          id: '{{ product.id }}',
          name: '{{ product.title | escape }}',
          price: '{{ product.price | money_without_currency }}',
          brand: '{{ product.vendor | escape }}',
          category: '{{ product.type | escape }}'
        }]
      }
    }
  });
</script>

Testing Tools & Techniques

Browser Extensions

GA4:

Meta Pixel:

GTM:

All:

Browser Console Debugging

Check for JavaScript errors:

// Open console (F12)
// Look for red errors
// Fix errors to unblock tracking

Monitor data layer pushes:

const originalPush = window.dataLayer.push;
window.dataLayer.push = function() {
  console.log('Data Layer Push:', arguments[0]);
  originalPush.apply(window.dataLayer, arguments);
};

Check if tracking pixels loaded:

// GA4
console.log(window.gtag);

// Meta Pixel
console.log(window.fbq);

// GTM
console.log(window.google_tag_manager);

Platform-Specific Testing

GA4 DebugView:

  1. Enable debug mode
  2. GA4 → AdminDebugView
  3. See events in real-time

Meta Events Manager:

  1. Events Manager → Test Events
  2. Enter store URL
  3. Perform actions
  4. See events immediately

GTM Preview Mode:

  1. GTM → Preview
  2. Enter store URL
  3. See tags, triggers, variables in real-time

Common Error Messages

"GTM-XXXXXXX not found"

Cause: Container ID incorrect or container deleted.

Fix:

  • Verify container ID in GTM
  • Update ID in theme code

"gtag is not defined"

Cause: GA4 script not loaded or blocked.

Fix:

  • Check if GA4 script in <head>
  • Disable ad blocker
  • Check for JavaScript errors blocking script

"fbq is not defined"

Cause: Meta Pixel script not loaded.

Fix:

  • Check if Pixel code in theme
  • Verify Pixel ID correct
  • Disable ad blocker

"dataLayer is not defined"

Cause: Data layer not initialized before access.

Fix:

// Always initialize first
window.dataLayer = window.dataLayer || [];
dataLayer.push({...});

Debugging Workflow

Step-by-Step Debugging Process

  1. Verify Basic Setup

    • Tracking code present in theme
    • Container/Pixel ID correct
    • No JavaScript errors in console
  2. Test Page Load

    • Clear cache and reload
    • Check if pageview fires
    • Verify in platform (GA4/Meta/GTM)
  3. Test User Interactions

    • Click product → Check view_item
    • Add to cart → Check add_to_cart
    • Checkout → Check begin_checkout
    • Complete order → Check purchase
  4. Check Data Quality

    • Event parameters present
    • Values numeric (no $ symbols)
    • Product IDs correct
    • Currency codes valid
  5. Fix Issues

    • Address highest priority first (purchase tracking)
    • Remove duplicate implementations
    • Fix JavaScript errors
    • Update variables/triggers
  6. Verify Fixes

    • Test in incognito mode
    • Test on multiple pages
    • Test on mobile
    • Monitor for 24-48 hours

When to Get Help

Consider Hiring a Shopify Expert

  • Events still not firing after troubleshooting
  • Complex custom theme
  • Multiple integrations conflicting
  • Need custom event implementation
  • Time-sensitive launch

Find experts: shopify.com/partners

Shopify Support

  • Theme-related issues
  • Checkout limitations questions
  • App conflicts

Platform Support

GA4: Google Analytics Help Meta: Meta Business Help GTM: Tag Manager Help

Next Steps

For general troubleshooting strategies, see Tracking Troubleshooting Guide.

// SYS.FOOTER