GTM Not Firing? Complete Debugging Guide (2024)

Your GTM tags aren't firing and you don't know why. Here's the systematic debugging process we use after analyzing 371,000+ containers.

GTMdebuggingtags not firingtroubleshooting

Your GTM tags aren’t firing. The preview panel shows nothing. Your data is disappearing into the void. We’ve seen this thousands of times—here’s how to fix it.

Step 1: Verify the Container is Actually Loading

Before debugging individual tags, confirm GTM itself is running:

  1. Open Chrome DevTools (F12)
  2. Go to Network tab
  3. Filter by “gtm”
  4. Reload the page

You should see a request to googletagmanager.com with status 200. If not, your container snippet is missing or broken.

Common Container Issues

  • Snippet in wrong location: Must be immediately after <head> tag
  • Duplicate containers: Two GTM snippets with different IDs
  • JavaScript errors blocking execution: Check Console tab for errors before GTM loads

Step 2: Use Preview Mode Correctly

GTM’s Preview mode is your primary debugging tool, but many people misuse it:

  1. In GTM, click Preview (top right)
  2. Enter your site URL
  3. Open your site in the new tab (not a different browser)
  4. Keep both tabs open

Critical: Preview mode uses cookies. If you’re testing in incognito, you need to reconnect preview mode in that window.

What Preview Mode Shows You

  • Tags Fired: Tags that executed
  • Tags Not Fired: Tags that exist but didn’t trigger
  • Data Layer: All events and variables

If a tag shows “Not Fired,” click it to see which trigger condition failed.

Step 3: Check Your Triggers

90% of “tag not firing” issues are trigger problems. For each trigger, verify:

Page View Triggers

  • Is it set to “All Pages” or specific pages?
  • If using regex or contains, test your pattern at regex101.com
  • DOM Ready vs Page View vs Window Loaded—are you using the right one?

Click Triggers

  • Is “Just Links” vs “All Elements” correct?
  • Are you clicking the right element? Use “Click Element” variable to verify
  • Is the link handling preventing the click from registering?

Custom Event Triggers

// Your code should push exactly this:
dataLayer.push({
  'event': 'your_event_name'  // Matches your trigger exactly
});

Check spelling, case sensitivity, and timing. The push must happen AFTER GTM loads.

If you implemented Google Consent Mode, tags may be blocked until consent is granted:

  1. In Preview mode, check the Consent tab
  2. Verify consent signals are being set
  3. Tags with require_consent: ['analytics_storage'] won’t fire without explicit consent

Quick test: Temporarily set default consent to “granted” and see if tags fire.

Step 5: Variable Problems

Tags often fail because variables return undefined:

  1. In Preview mode, click on Variables tab
  2. Find the variable your tag uses
  3. Check its value at the moment your trigger fires

Common issues:

  • Data layer variable name mismatch
  • Variable trying to read DOM element that doesn’t exist
  • Timing: variable evaluated before data is available

Step 6: Tag Configuration Errors

Even with correct triggers, tag configuration can fail:

Google Analytics 4

  • Missing Measurement ID (starts with G-)
  • Using “Tag ID” instead of “Measurement ID”
  • Configuration tag not firing before event tags

Meta Pixel

  • Pixel ID not a number
  • Trying to fire events before base pixel
  • Conversion ID vs Conversion Label confusion
  • Missing conversion value for value-based bidding

The Nuclear Option: Console Debugging

When Preview mode isn’t enough, use the console:

// Check if GTM loaded
console.log(google_tag_manager);

// View entire data layer
console.log(dataLayer);

// Watch for specific events
dataLayer.push = function(e) {
  console.log('Data Layer Push:', e);
  Array.prototype.push.call(dataLayer, e);
};

Still Stuck?

If you’ve gone through all this and tags still aren’t firing, the issue is likely:

  1. Server-side blocking: Ad blockers, corporate firewalls, or privacy extensions
  2. Race conditions: Complex timing issues between scripts
  3. Third-party conflicts: Other scripts interfering with GTM

At this point, you need an expert eye. We’ve debugged thousands of containers and can usually identify the issue in minutes.

Get a free GTM scan and we’ll tell you exactly what’s broken.