How to Implement Custom JavaScript in GTM for Advanced Tracking
Custom JavaScript in GTM helps track advanced user interactions, modify data before sending it to analytics, and handle complex tracking needs. This guide explains how to implement custom JavaScript in GTM, set it up correctly, and avoid common mistakes. Learn best practices, practical examples, and how to improve your tracking for more accurate data and insights.
3/15/20253 min read


How to Implement Custom JavaScript in GTM for Advanced Tracking
Google Tag Manager (GTM) allows you to track user interactions without modifying website code. While built-in tags cover most tracking needs, there are cases where custom JavaScript is required.
Using custom JavaScript in GTM helps capture complex interactions, format data before sending it to analytics platforms, and handle tracking conditions that standard GTM settings cannot.
This guide explains how to implement custom JavaScript in GTM, set it up correctly, and avoid common mistakes.
Why Use Custom JavaScript in GTM?
Built-in GTM tags handle basic tracking, but they have limitations. Custom JavaScript helps:
Track advanced user interactions like scrolling, video engagement, or dynamic element clicks
Modify and clean data before sending it to Google Analytics or other platforms
Generate unique identifiers for tracking users across sessions
Create conditional logic for when and how data is sent
If your tracking requires specific data that GTM cannot collect by default, custom JavaScript is the solution.
How Custom JavaScript Works in GTM
Custom JavaScript runs inside a GTM variable or a custom HTML tag. It executes before sending data to analytics or marketing platforms.
The process follows these steps:
A user performs an action, such as clicking a button or visiting a page
GTM detects the event using triggers
Custom JavaScript processes the event data, such as extracting values or reformatting it
The processed data is sent to a tag, which forwards it to an analytics or tracking tool
Setting Up Custom JavaScript in GTM
Step 1: Open Google Tag Manager
Log in to Google Tag Manager
Select the container for your website
Step 2: Create a Custom JavaScript Variable
Click "Variables" in the left menu
Click "New"
Select "Custom JavaScript"
Step 3: Write the JavaScript Code
Custom JavaScript variables must return a value.
Example: Extracting a Page Title
function() {
return document.title;}
This variable returns the current page title, which can be used in Google Analytics or other tracking tools.
Step 4: Save and Test the Variable
Name the variable clearly, such as "JS - Page Title"
Click "Save"
Use GTM’s Preview Mode to test the variable
Step 5: Use the Variable in a Tag
Create a new tag or edit an existing one
Use the custom JavaScript variable in a field that accepts dynamic values
Set a trigger to determine when the tag should fire
Practical Examples of Custom JavaScript in GTM
Tracking Scroll Depth
If built-in scroll depth triggers do not meet your needs, use custom JavaScript to track how far users scroll.
Example: Detecting Scroll Percentage
function() {
return Math.round((window.scrollY + window.innerHeight) / document.body.scrollHeight * 100);}
This variable calculates the scroll percentage and can be used in analytics tracking.
Tracking Clicks on Dynamic Elements
Some elements load after the page, making standard click triggers unreliable. Custom JavaScript can track these clicks.
Example: Detecting Button Clicks with Event Delegation
document.addEventListener('click', function(event) {
if (event.target.matches('.dynamic-button')) {
window.dataLayer.push({
'event': 'dynamicButtonClick',
'buttonText': event.target.innerText }); }});
This script listens for clicks on elements with the class "dynamic-button" and sends an event to the GTM data layer.
Generating Unique User IDs
If you need to track users across sessions, generate a unique ID and store it in a cookie.
Example: Creating a Persistent User ID
function() {
var cookieName = "user_id";
var existingID = document.cookie.match('(^|;)\\s*' + cookieName + '\\s*=\\s*([^;]+)');
if (existingID) { return existingID.pop();
} else { var newID = 'user-' + Math.random().toString(36).substr(2, 9);
document.cookie = cookieName + "=" + newID + "; path=/";
return newID; }}
This script assigns a unique user ID and stores it in a cookie for future tracking.
Common Mistakes and How to Avoid Them
JavaScript Does Not Return a Value
Custom JavaScript variables must return a value using the return statement
If a function performs an action but does not return data, use a custom event instead
Script Breaks Due to Errors
Always test JavaScript in the browser console before adding it to GTM
Wrap code in try...catch blocks to handle errors gracefully
Variables Do Not Update Correctly
Check if GTM caches the variable; some values update only when a new event occurs
Use custom event triggers to refresh variables when needed
Tags Fire at the Wrong Time
Set up triggers that match the expected user actions
Use GTM’s debug mode to see when the tag fires and adjust triggers if necessary
Best Practices for Using Custom JavaScript in GTM
Keep Code Short – Use only the necessary JavaScript for tracking needs
Test Before Publishing – Always use GTM’s Preview Mode to check if the script works
Use Clear Naming Conventions – Label custom JavaScript variables with a "JS -" prefix to stay organized
Avoid Using document.write – This can break page rendering and cause tracking issues
Minimize Dependency on External Scripts – If a script relies on another script that loads later, it may not work properly
How Custom JavaScript Improves Tracking
Adding custom JavaScript to GTM allows for:
Better Data Collection – Track interactions that built-in GTM settings cannot capture
More Accurate Reporting – Process and clean data before sending it to analytics tools
Improved Website Performance – Reduce reliance on external tracking scripts by handling logic within GTM
Why You Should Use Custom JavaScript in GTM
If built-in GTM tags do not capture the data you need, custom JavaScript provides a flexible way to track user interactions. By writing and testing simple scripts, you can improve tracking accuracy, capture complex events, and make better use of your analytics data.
If you want to track specific user actions but find GTM’s built-in options limiting, custom JavaScript is the answer. Start testing today and see how it enhances your tracking setup.
Get in touch with us:
Email: connect@ecommidea.com
WhatsApp: wa.me/919839618999