Common reasons scroll-depth tracking doesn’t fire
- GTM container not published - You imported the container but didn’t click Submit → Publish.
- GTM snippet not installed on your site - The GTM code needs to be in your site’s <head> and <body>.
- Page is shorter than the viewport - If the page content fits entirely on screen without scrolling, scroll depth events will never fire because there’s nothing to scroll.
- Lazy-loaded content changes the page height - If images or sections load as the user scrolls, the total page height keeps changing. A 50% scroll threshold might be reached earlier or later than expected.
- Scroll hijacking by plugins or themes - Some themes and plugins override native scrolling with custom JavaScript scroll behaviour. GTM’s built-in Scroll Depth trigger may not detect these custom scroll events.
- Elementor sticky headers affect scroll calculation - Fixed/sticky headers reduce the visible viewport height, which can cause scroll depth percentages to fire at unexpected scroll positions.
Step-by-step debugging checklist
- Verify GTM is installed - Visit your site, right-click → View Page Source, search for “GTM-”. If you don’t see it, GTM isn’t installed.
- Check GTM Preview mode - In GTM, click Preview. Navigate your site and trigger the event. Look for your tag in the Tags Fired section.
- Check the trigger - If the tag shows as “Not Fired”, click on it to see which trigger conditions aren’t met.
- Check the page height - Open DevTools console and run
document.documentElement.scrollHeight. If it’s close towindow.innerHeight, the page isn’t scrollable. - Test with the GTM Scroll Depth trigger - Create a Scroll Depth trigger set to Vertical Scroll Depths at 25, 50, 75, 90 percent. Open GTM Preview, scroll the page, and check whether scroll events appear in the event timeline.
WordPress-specific issues
Elementor and other page builders with sticky header options add a fixed-position header that reduces the visible scrollable area. GTM’s Scroll Depth trigger calculates percentages based on the full document height, but the visible area below the sticky header is smaller. This can cause the 90% threshold to fire before the user actually reaches the bottom of the content.
Some WordPress themes also use smooth-scroll or scroll-hijacking JavaScript that overrides native scrolling. If GTM’s built-in scroll trigger doesn’t fire, try a Custom HTML tag with an Intersection Observer that watches a sentinel element at the bottom of the content.
How to verify it’s working
- Open GTM Preview/Debug mode
- Navigate to your site
- Trigger the event (scroll down the page)
- Check the GTM debug panel - your tag should appear under “Tags Fired”
- Check GA4 DebugView (GA4 → Admin → DebugView) to confirm the event arrived
Still didn’t work?
Our team can help. Describe what’s happening and we’ll get back to you within 24 hours.