All Posts
GTMGoogle Tag ManagerTrackingAudit

The Ultimate GTM Audit Checklist: 20 Things to Check Before Your Tracking Breaks

Your Google Tag Manager container is the foundation of all your marketing data. Here's how to audit it properly before small issues become big problems.

December 17, 202415 min read

GTM Audit Checklist

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?

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:

ProblemBusiness Impact
Duplicate tagsInflated conversion counts, wasted ad spend optimization
Broken triggersMissing data, blind spots in reporting
Deprecated tagsSecurity vulnerabilities, slower page loads
Poor namingTeam 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:

  1. Sort tags by "Last edited"
  2. Tags not edited in 12+ months are candidates for review
  3. 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:

  1. Preview your container
  2. Click around the site
  3. 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:

  1. Navigate from domain1.com to domain2.com
  2. Check URL for _gl= parameter
  3. 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

ToolPurposeLink
Google Tag AssistantReal-time tag verificationtagassistant.google.com
GA4 DebugViewEvent debuggingGA4 β†’ Admin β†’ DebugView
GTM Preview ModeContainer testingGTM β†’ Preview
DataLayer InspectorChrome extensionChrome Web Store

Audit Frequency Recommendations

Business TypeRecommended Frequency
E-commerceMonthly
B2B Lead GenQuarterly
Content/MediaQuarterly
After website updatesAlways

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

Need Help With This?

I can implement what you've learned here in about 7 days. Book a call to discuss.