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:
- Open Chrome DevTools (F12)
- Go to Network tab
- Filter by “gtm”
- 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:
- In GTM, click Preview (top right)
- Enter your site URL
- Open your site in the new tab (not a different browser)
- 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.
Step 4: Consent Mode Issues
If you implemented Google Consent Mode, tags may be blocked until consent is granted:
- In Preview mode, check the Consent tab
- Verify consent signals are being set
- 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:
- In Preview mode, click on Variables tab
- Find the variable your tag uses
- 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
Google Ads
- 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:
- Server-side blocking: Ad blockers, corporate firewalls, or privacy extensions
- Race conditions: Complex timing issues between scripts
- 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.