
Google Tag Manager is the backbone of modern marketing measurement. But over time, containers accumulate technical debt: deprecated tags, duplicate triggers, and misconfigured variables. This comprehensive GTM audit checklist will help you identify issues before they cost you money.
Table of Contents
- Why Audit Your GTM Container?
- Container Hygiene
- Tag Configuration
- Trigger Accuracy
- Variable Best Practices
- Conversion Tracking
- Cross-Domain & E-commerce
- Audit Tools & Resources
- FAQs
Why Audit Your GTM Container?
Industry Insight: The average GTM container has 47 tags after 2 years of use. In our audits, we find that 20-30% of these tags are either broken, duplicated, or no longer needed.
A messy GTM container leads to:
| Problem | Business Impact |
|---|---|
| Duplicate tags | Inflated conversion counts, wasted ad spend optimization |
| Broken triggers | Missing data, blind spots in reporting |
| Deprecated tags | Security vulnerabilities, slower page loads |
| Poor naming | Team confusion, maintenance nightmares |
Related: For GA4-specific issues, see our GA4 Tracking Audit Checklist.
Container Hygiene
β 1. Container Naming Convention
- Container name clearly identifies the website/property
- Version descriptions are meaningful (not "fixed stuff")
- A consistent naming scheme is followed
Good naming example:
Container: clientname.com - Production
Version 45: "Added LinkedIn Insight tag, fixed form submit trigger on /contact"
β 2. Folder Organization
- Tags are organized into logical folders
- Folder names describe function (e.g., "GA4", "Advertising", "Forms")
- No orphan tags sitting in root
Recommended folder structure:
π GTM Container
βββ π Analytics (GA4, GTM config)
βββ π Advertising (Google Ads, Meta, LinkedIn)
βββ π Forms (Contact, Demo, Newsletter)
βββ π E-commerce (Purchase, Add to Cart)
βββ π Utilities (Scroll depth, Timer, Custom)
βββ π Deprecated (Old tags awaiting removal)
β 3. Workspace Hygiene
- No stale workspaces older than 30 days
- Clear workspace ownership (who's working on what)
- Preview mode changes are published promptly
β 4. Container Export Backup
- Recent container export exists (JSON backup)
- Backups are version-controlled (Git or similar)
- Team knows how to restore from backup
Pro tip: Create a quarterly calendar reminder to export your container: GTM β Admin β Export Container.
Tag Configuration
β 5. GA4 Configuration Tag
- Exactly ONE GA4 Configuration tag
- Fires on "All Pages" trigger
- Send page_view is enabled (or deliberately disabled with custom page_view)
- Measurement ID is correct (not a dev property)
Common mistake: Multiple GA4 config tags causing duplicate page views. Check in GA4 DebugView or Real-time.
β 6. No Deprecated Tags
- Remove old Universal Analytics tags (UA-XXXXXXX)
- Remove deprecated Facebook Pixel (use Conversions API)
- Remove old Google Ads remarketing (migrate to Google Ads Remarketing via GA4)
How to find deprecated tags:
- Sort tags by "Last edited"
- Tags not edited in 12+ months are candidates for review
- Pause before deletingβcheck if replacement exists
β 7. Tag Firing Sequence
- GA4 Config tag fires first (use tag sequencing if needed)
- Consent tags fire before marketing tags
- No race conditions between dependent tags
Use tag sequencing when:
- A tag depends on data from another tag
- Consent must be checked before marketing pixels fire
- Custom variables need to be set before events fire
β 8. Conversion Tags Configuration
- Each conversion action has ONE tag (not multiple)
- Conversion ID and labels are correct
- Enhanced conversions are configured (if applicable)
- Value and currency pass correctly
Learn more: How to Connect Google Ads to HubSpot for Revenue Attribution covers proper conversion setup.
Trigger Accuracy
β 9. Form Submit Triggers
- Form submit triggers use proper form identification (ID, class, or URL)
- Validation ensures only successful submissions fire
- No duplicate fires on same submission
Better than native form submit:
// Use thank-you page or success message detection
// Trigger: Page View
// Condition: Page URL contains "thank-you" OR
// Element exists: .form-success-message
β 10. Click Triggers
- Click triggers are specific (not firing on every click)
- Use Click Classes or Click ID, not just Click URL for CTAs
- Outbound link clicks are captured correctly
Trigger specificity check:
- Preview your container
- Click around the site
- Watch the trigger panelβtoo many fires = too broad
β 11. Custom Event Triggers
- Custom events match exactly what's pushed to dataLayer
- Event name casing is correct (dataLayer is case-sensitive)
- Regex patterns are tested and documented
Example dataLayer push and matching trigger:
// dataLayer push (in your code)
dataLayer.push({
'event': 'form_submission',
'formName': 'contact_form'
});
// GTM Trigger: Custom Event
// Event name: form_submission
β 12. Scroll Depth Triggers
- Scroll depth percentages match business needs (25%, 50%, 75%, 90%)
- Vertical vs horizontal is set correctly
- Fires once per page (not continuously)
Variable Best Practices
β 13. Data Layer Variables
- Variable names match dataLayer keys exactly
- Default values are set for optional fields
- Nested values use dot notation correctly
Correct nested variable reference:
Variable Name: ecommerce.purchase.actionField.id
Data Layer Version: Version 2
β 14. User-Defined Variables
- No hardcoded values that should be variables (like measurement IDs)
- Constant variables used for reusable values
- Lookup tables are used for mapping values
Use a constant variable for IDs:
Variable: GA4 Measurement ID
Type: Constant
Value: G-XXXXXXXXXX
Then reference {{GA4 Measurement ID}} in all GA4 tags.
β 15. URL Variables
- Correct URL component is selected (path, query, fragment)
- Query parameters are captured for UTM tracking
- URL decoding is enabled where needed
Conversion Tracking
β 16. Conversion Deduplication
- Each conversion fires exactly ONCE per action
- Order ID or transaction ID is used for purchase conversions
- Timestamp or unique identifier prevents duplicate sends
Deduplication example for forms:
// Set a cookie or sessionStorage flag after submission
if (!sessionStorage.getItem('form_submitted')) {
dataLayer.push({'event': 'form_submission'});
sessionStorage.setItem('form_submitted', 'true');
}
Related: See how to fix duplicate conversions in Google Ads.
β 17. Enhanced Conversions
- User data variables are configured (email, phone, address)
- Data is hashed before sending (SHA-256)
- Enhanced conversions is enabled in Google Ads
β 18. Offline Conversion Tracking Setup
- GCLID is captured from URL parameters
- GCLID is stored in a cookie (90-day minimum)
- CRM receives GCLID with form submissions
Full implementation guide: Connect Google Ads to HubSpot for Revenue Attribution.
Cross-Domain & E-commerce
β 19. Cross-Domain Tracking
- Linker domains are configured if users cross domains
- _gl parameter passes correctly between domains
- Referral exclusions are set for owned domains
Check cross-domain setup:
- Navigate from domain1.com to domain2.com
- Check URL for
_gl=parameter - Verify in GA4 that session continues (not a new user)
β 20. E-commerce Data Layer
- Product data structure matches GA4 requirements
- Currency is consistent across all events
- Item arrays include required fields (item_id, item_name)
Required e-commerce events:
- view_item
- add_to_cart
- begin_checkout
- purchase
Audit Tools & Resources
| Tool | Purpose | Link |
|---|---|---|
| Google Tag Assistant | Real-time tag verification | tagassistant.google.com |
| GA4 DebugView | Event debugging | GA4 β Admin β DebugView |
| GTM Preview Mode | Container testing | GTM β Preview |
| DataLayer Inspector | Chrome extension | Chrome Web Store |
Audit Frequency Recommendations
| Business Type | Recommended Frequency |
|---|---|
| E-commerce | Monthly |
| B2B Lead Gen | Quarterly |
| Content/Media | Quarterly |
| After website updates | Always |
Frequently Asked Questions
Answers to common GTM audit questions.
Need a Professional Audit?
If your GTM container has grown unwieldy or you suspect tracking issues, book a 15-minute call to discuss a Tracking & Attribution Fix project.
What's included:
- Complete GTM container audit with documentation
- Tag cleanup and optimization
- Trigger and variable best practices
- Conversion tracking verification
- SOP for ongoing maintenance