Every GTM container starts clean. Then someone adds a “temporary” tag for a test campaign. Someone else copies a tag instead of fixing the original. An agency installs their own tracking without telling you. Six months later, you have 47 tags and nobody knows what half of them do.
Here’s how to audit your container systematically and clean it up before something breaks.
The 15-Point Checklist
1. Count Your Tags
GTM → Tags → count them.
| Tags | Assessment |
|---|---|
| 1-10 | Clean. Normal for a simple site. |
| 11-25 | Growing. Review for duplicates. |
| 26-50 | Heavy. Likely has dead or duplicate tags. |
| 50+ | Critical. Audit immediately. |
More tags = more JavaScript loaded on every page = slower site = lower conversion rate. Each unnecessary tag is a performance and privacy liability.
2. Check for Duplicate GA4 Tags
Search your tags for “GA4” or “Google Analytics.” You should have exactly ONE GA4 Configuration tag (or Google tag) firing on All Pages.
Common duplicates:
- A GA4 tag from the old marketing agency AND one you installed
- A GA4 tag via the built-in Google tag AND one via custom HTML
- Multiple GA4 tags with different Measurement IDs (intentional for multi-property? or accident?)
Duplicate GA4 tags double-count pageviews and events. If your GA4 shows 2x the traffic you expect, check for duplicates first.
3. Verify the Conversion Linker Exists
Required for Google Ads conversion tracking. Search for “Conversion Linker” in your tags. It should:
- Fire on All Pages (not just the conversion page)
- Be a built-in tag type (not custom HTML)
Missing conversion linker = Google Ads can’t track conversions.
4. Look for Custom HTML Tags
Filter tags by type → Custom HTML. These are the highest-risk tags because they can contain anything:
- Inline JavaScript from unknown sources
- Third-party scripts that load additional scripts
- Code that modifies the DOM or reads cookies
- Potential XSS vectors from agencies or contractors
For each Custom HTML tag, ask: Who created this? Is it still needed? Can it be replaced with a built-in tag type?
5. Check Trigger Conditions
For each tag, click it and verify the trigger makes sense:
- All Pages triggers: Should only be for foundational tags (GA4 config, conversion linker, consent)
- Specific page triggers: Verify the URL pattern still matches your current site structure
- Click/form triggers: Test that the CSS selector or element ID still exists on the page
Triggers based on element IDs like #old-form-2024 break when the site is redesigned. If GTM is not firing, stale triggers are the #1 cause.
6. Audit Firing Order (Tag Sequencing)
Some tags must fire in a specific order:
- Consent tag → BEFORE all other tags
- GA4 Config → BEFORE GA4 Event tags
- Conversion Linker → BEFORE Google Ads conversion tags
In GTM, open each dependent tag → Advanced Settings → Tag Sequencing. If critical tags fire out of order, events are lost silently.
7. Check for Tags Without Triggers
GTM → Tags → filter by “0 triggers”
Tags without triggers never fire. They’re dead weight. Either they were disabled intentionally (add a note in the tag name), or someone forgot to attach a trigger. Delete or fix them.
8. Review Variables
GTM → Variables → User-Defined Variables
| Check | Why |
|---|---|
| Unused variables | Dead code, clutters the container |
| Data Layer variables | Verify the data layer key names match your site’s actual data layer |
| JavaScript variables | Security risk — review the code |
| Lookup/RegEx tables | Often outdated after site changes |
Variables that reference a data layer key that no longer exists will silently return undefined, causing tags to fire with empty values.
9. Verify Consent Mode Setup
If you have a consent banner:
- Check that a Consent Initialization trigger exists
- Verify consent defaults are set (denied until accepted)
- Confirm all marketing/analytics tags respect consent signals
- Test with GTM Preview Mode + consent denied
Tags that fire regardless of consent state are a GDPR/CCPA liability. See our Consent Mode v2 guide for the complete setup.
10. Test in Preview Mode
GTM → Preview → enter your site URL
Walk through your conversion flow:
- Homepage → Product page → Add to cart → Checkout → Purchase
- At each step, check which tags fired and which didn’t
- Verify the data layer values match what tags expect
Pay attention to tags that fire on unexpected pages or don’t fire when they should.
11. Check Container Version History
GTM → Admin → Container → Versions
Look at the last 5-10 published versions:
- Who published them?
- Are there version notes explaining what changed?
- Was there a version published by someone who no longer works with you?
Rogue container publishes from ex-agencies are a common source of mystery tags.
12. Look for Overlapping Tracking
Multiple tools tracking the same thing:
- GA4 + an old UA tag (remove UA — it’s been sunset since 2024)
- Meta Pixel via GTM + Meta Pixel hardcoded in the HTML
- Hotjar via GTM + Hotjar snippet in the theme
Each duplicate adds JavaScript weight and can cause data duplication. Check your page source for hardcoded tracking that duplicates what’s in GTM.
13. Verify Cross-Domain Tracking
If your site spans multiple domains (e.g., shop.example.com and example.com):
- GA4 → Admin → Data Streams → Configure tag settings → Configure your domains
- GTM: Verify the GA4 tag has the correct domains listed
- Test: Navigate between domains and check if the session ID persists
Broken cross-domain tracking creates inflated session counts and breaks attribution.
14. Document Everything
For each tag in your container, it should have:
- A clear, descriptive name (not “Tag 1” or “Copy of GA4”)
- A folder assignment (organize by: Analytics, Ads, Marketing, Utility)
- Notes explaining its purpose (use the Notes field in tag settings)
Naming convention suggestion: [Platform] - [Action] - [Detail]
GA4 - Config - Main PropertyGoogle Ads - Conversion - PurchaseMeta - Pixel - Standard Events
15. Check Container Size
GTM → Admin → Container → Export
The exported JSON file size indicates container bloat:
| Size | Assessment |
|---|---|
| < 50 KB | Clean |
| 50-200 KB | Normal |
| 200-500 KB | Heavy — review for unnecessary tags |
| 500 KB+ | Critical — impacting page load |
Google recommends keeping containers under 200 KB. Larger containers add visible page load latency.
After the Audit
Once you’ve identified issues:
- Create a new workspace in GTM (don’t edit the live container directly)
- Fix issues one at a time — each change should be verifiable
- Test in Preview Mode after each change
- Publish with version notes documenting what you changed and why
- Monitor GA4 and ad platforms for 48 hours after publishing to catch regressions
Need Help?
If your container has 50+ tags and you’re not sure what’s safe to remove, run a free tracking scan first — we identify which tags are firing, which are broken, and which are duplicates. Or read our GTM debugging guide for step-by-step troubleshooting.