Debugging Approaches in Tealium iQ
It’s important to understand that debugging in Tealium isn’t limited to a single tool. Since Tealium processes data through multiple stages such as the data layer, extensions, load rules, tags, and vendor requests you’ll often need to use different debugging techniques depending on where the issue occurs.
For example:
If a variable is missing, you’ll inspect the data layer.
If an extension isn’t executing, you’ll debug the extension scope and execution order.
If a tag isn’t firing, you’ll investigate the load rule.
If the tag fires but the vendor doesn’t receive the expected data, you’ll inspect the network request.
If you’re debugging server-side events, Tealium Trace is the preferred tool.
Rather than relying on a single method, experienced Tealium developers follow a structured debugging process, moving through each stage of the execution flow until the root cause is identified.
1. Verify that utag.js is loading
Before investigating load rules, extensions, or data layer values, the first step is to confirm that Tealium is actually loading on the page. Every Tealium iQ implementation starts with the utag.jsfile, which acts as the entry point for loading the data layer, evaluating load rules, executing extensions, and triggering tags.If utag.jsfails to load, none of the configured tags or extensions will execute, making this the most important initial check during debugging.
How to Verify utag.js
Open your website in the browser.
Press F12 (Windows/Linux) or Cmd + Option + I (macOS) to open the browser’s Developer Tools.
Navigate to the Network tab.
Refresh the page.
In the filter box, search for:
utag.js
If Tealium is loading correctly, you should see a request similar to:
https://tags.tiqcdn.com/utag/{account}/{profile}/{environment}/utag.js
A successful request (typically with a 200 status code) confirms that Tealium has been loaded successfully and can continue processing the page.
What if utag.js is Missing?
If you don’t see a request for utag.js, it indicates that Tealium has not been loaded. Some common causes include:
The Tealium script has not been implemented on the page.
The page is pointing to an incorrect environment or profile.
Recent code changes accidentally removed the Tealium snippet.
A Content Security Policy (CSP) is blocking the request.
A browser extension, such as an ad blocker or privacy tool, is preventing the script from loading.
A JavaScript error occurring earlier on the page is interrupting execution.
Until utag.js loads successfully, there is little value in checking load rules, extensions, or tag mappings, as none of these components can execute without the Tealium library.
Once you’ve confirmed that utag.js is loading correctly, the next step is to verify that you’re testing the correct Tealium environment and that the expected version of your implementation has been published.
2. Verify the Correct Environment
Before diving into debugging, make sure you’re testing the correct Tealium environment.
Verify whether you’re testing Dev, QA, or Prod.
Confirm that the correct utag.jsfile is loading.
Check that your latest changes have been saved and published to the environment you’re testing.
A common issue is testing an older published version while expecting newly added changes.
3. Inspect the Universal Data Object (UDO)
Every tag depends on the data available in the Universal Data Object.
In the browser console, inspect the data:
utag.data
Verify that:
Required variables exist.
Variable names are correct.
Values are populated as expected.
Data types are correct.
Missing or incorrect variables frequently prevent load rules from evaluating successfully.
4. Validate Load Rules
After confirming that the required data is available in the Universal Data Object (UDO), the next step is to verify whether the tag’s Load Rule is evaluating correctly.
Load Rules determine whether a tag is eligible to fire. Even if the tag configuration and mappings are correct, the tag will not execute if the Load Rule conditions are not satisfied.
For example, consider a Load Rule:
page_type equals “product”
If the data layer contains:
utag.data.page_type = “product”
the condition passes and the tag can fire.
However, if the value is:
utag.data.page_type = “Product”
the condition may fail because the value does not exactly match the configured rule.
When validating Load Rules, check:
Are all required variables available in utag.data?
Do the variable values exactly match the expected conditions?
Are AND/OR conditions configured correctly?
Is the Load Rule assigned to the correct tag?
Common Load Rule issues include:
Missing data layer variables
Incorrect capitalization or spelling
Unexpected values from the website
Incorrect rule logic
Testing against an outdated published version
You can use the browser console to verify the data:
utag.data
You can also enable Tealium debugging:
document.cookie=”utagdb=true”;
to view whether tags are loading or being skipped due to Load Rule conditions.
If a tag is not firing, always confirm the Load Rule first before investigating the tag configuration itself. Many tag firing issues are caused by conditions not being met rather than a problem with the tag.
5. Debug Extensions
After validating Load Rules, the next step is to check whether Tealium Extensions are working as expected. Extensions are used to modify, enrich, or transform data before it is passed to tags and vendor platforms.
A tag may have the correct configuration, and the Load Rule may evaluate successfully, but an extension issue can still cause incorrect data to be sent or prevent the expected behavior.
Common extension-related issues include:
Extension is not executing.
Incorrect extension scope.
Incorrect execution order.
Data being overwritten by another extension.
JavaScript errors inside custom extensions.
Extension logic not matching the current page or event conditions.
What to Check When Debugging Extensions
a. Verify Extension Scope
The scope determines when an extension executes during the Tealium processing flow.Common scopes include:
Before Load Rules
After Load Rules
Tag Scoped
DOM Ready
The scope is important because an extension may run before or after certain Tealium processes.
For example, if an extension creates a variable that is required for a Load Rule, but the extension runs after Load Rules are evaluated, the tag may not fire because the required data is not available at the right time.
b. Check Extension Execution Order
When multiple extensions modify the same variable, the execution order can affect the final value.
Example:
Extension 1:
page_type = “product”;
Extension 2:
page_type = “category”;
In this case, the final value depends on which extension runs last.
Always verify the order of extensions when the data being sent does not match the expected value.
c. Debug JavaScript Extensions
Custom JavaScript Extensions can introduce errors that prevent data from being processed correctly.
Use console logging to check the values available inside an extension.
Example:
console.log(“Current Page Type:”, b.page_type);
Expected output:
Current Page Type: product;
If the output is:
Current Page Type: undefined;
the issue may be with the data layer or the extension logic.
You can use the following tools to troubleshoot extension issues:
Browser Console
Check the available data:
utag.data
This helps verify whether the extension is creating or modifying the expected variables.
Tealium Debug Mode
Enable Tealium debugging:
document.cookie=”utagdb=true”;
This provides additional information about Tealium execution, including tag loading and extension behavior.
Tealium Web Companion / Tealium Tools
These tools help review the implementation flow and identify whether extensions are executing as expected during page loads and events.
Extensions can change the data before it reaches a tag. If a tag is not firing or the vendor receives unexpected values, always verify whether an extension is modifying, removing, or creating the data incorrectly.
The browser’s Developer Tools are one of the most powerful debugging resources when troubleshooting Tealium iQ implementations. Before making changes in Tealium iQ, many issues can be identified directly from the browser by inspecting data, scripts, HTML elements, and network requests.
To open Developer Tools:
You’ll mainly use four tabs:
Elements
Console
Network
Sources
Each tab helps investigate a different part of the tracking process. The Console helps validate data and JavaScript execution, the Network tab confirms whether requests are being sent, the Elements tab helps debug page interactions, and the Sources tab helps troubleshoot JavaScript execution.
a. Console Tab
The Console allows you to inspect Tealium objects, validate variables, and identify issues while the page is running.
For example, type:
utag
You’ll see the complete Tealium object.
Now inspect the data layer.
utag.data
Example output:
{
page_name: "Home",
page_type: "Landing",
user_type: "Guest",
country: "India"
}
The Console allows you to verify the current Tealium state, inspect variables, and identify missing or unexpected values during debugging.
If instead you see:
page_name: undefined
it indicates that the variable is not available at that point in the data layer and needs further investigation.
i. Checking Individual Variables
Instead of viewing the whole object, inspect a single variable.
utag.data.page_name
Output:
Home
or
Undefined
This is useful when troubleshooting a specific variable used in:
Load Rules
Extensions
Tag mappings
Vendor parameters.
ii. Checking the Current Event Object
Inside JavaScript Extensions, Tealium stores event data in a variable called b.
Example:
console.log(b);