Tealium Or Google Tag Manager? Weighing Your Options

August 24, 2016
Tealium Or Google Tag Manager? Weighing Your Options

Choosing the right tag management system for your organization can make or break the analytics at your company. Before making that decision, make sure you understand what is important to your company and how each tool will handle your needs. Is Google Analytics your main priority, or do you have a wide variety of tools and pixels that need to be managed? Will simple pageview tracking cover your Google Analytics needs or are you looking for a more complicated implementation with event tracking or custom data brought in from multiple sources? Are you looking to implement Google Analytics enhanced ecommerce tracking?

Focusing on Google Analytics

The purpose of this post is to compare the functionality of Tealium and Google Tag Manager with respect to Google Analytics tracking. Many organizations may wish to implement other tools and marketing pixels through a tag management system, in addition to Google Analytics. This may be an important consideration for your organization, and both of these tools also work well for more than just Google Analytics, but this post won’t cover support for other tools.

Long Story Short

What I like about Tealium & GA

  1. One Tracker – Easily manage custom dimensions and tracker settings across all of your events and pageviews in one place
  2. Bundled Data Sources – Get up and running quickly by bringing in data from your platform or ecommerce set-up through a quick, easy-to-use interface

What I like about Google Tag Manager & GA

  1. Event Tracking – Add robust and templated event tracking for common user actions with no custom code
  2. dataLayer – Easily modify and debug changes to your dataLayer
  3. Modularity – Reduce the risk that updates to your variables or event tracking will unintentionally break other tracking on your site
  4. Documentation – More robust, publicly available documentation that is specific to Google Analytics tracking
  5. Community Support – Many great blogs, forums, books, and training materials
  6. Preview your updates – Great support for quickly and easily testing updates on your live site, no publishing or QA access necessary
  7. Did I mention event tracking?

Conclusion First

I break down pros and cons with each system below, but for the impatient – here is my general takeaway! As a Google Analytics consultant, I prefer the modular approach that Google Tag Manager has taken. While this may not be necessary for every implementation, larger enterprise websites may see greater benefit from the flexibility when implementing Google Analytics.

While both tools can get the job done, it makes sense that the product created by Google specifically for implementing Google Analytics would have more support for advanced features. Google Tag Manager’s focus on event tracking, enhanced ecommerce, and other Google Analytics specific features make it a better choice for a nuanced and strategic Google Analytics implementation.

For more details, check out the full post below:

Event Tracking

One of the biggest selling points of tag management systems is the ability to add and modify tracking code quickly and easy, outside of the standard development cycle. With this power comes great responsibility. Most tag management systems, including Tealium and Google Tag Manager, have the ability to add custom JavaScript code to the site. It is important for tag management systems to give marketers and analytics specialists the ability to make these updates in a reliable way while minimizing the risk that small errors could wreck havoc on the site.


You can set up Google Analytics events through Tealium extensions or writing on-page code. The recommended way to set up event tracking in Tealium is to use a jQuery onHandler extension. In this extension, you can add a jQuery selector and choose to trigger the event on several DOM events, such as mousedown, blur, and focus. There is even a tool in the Tealium Chrome extension that will allow you to click on elements on the page and have a jQuery selector automatically created for you. It will even create the extension for you in your Tealium container.

More advanced tracking, like tracking form submits, video plays, and scroll tracking, custom JavaScript code can be added through the Tealium extensions tab.

Additionally, you can send events from the source code of the page by sending an object into Tealium with the event category, action, and label.


  • I would not recommend letting a chrome extension choose jQuery selectors for your event tracking, especially if you work on a larger or more complicated enterprise site. While jQuery or CSS selectors are often effective ways of identifying elements to target on the page, we handcraft our selectors to include the correct set of elements as well as being as robust as possible to changes on the site.

    Below is an example of the jQuery selector created by the Tealium Tool chrome extension for tracking navigation on the example Tealium ecommerce site:

jQuery Selector

Unfortunately, this selector only identifies one specific element in the navigation. In order to track all navigation links using the Tealium Tool, you would need to create a separate event for every link in your main navigation. While this is somewhat feasible for this site given there are only 26 links in the navigation dropdowns, imagine having to go through this process for all of the downloads or outbound links on your site!

  • Since there is limited support for firing events, you will likely find yourself writing custom JavaScript code for things like tracking form submissions. Even tracking simple link clicks on the page can require writing complicated jQuery selectors. This makes your tracking more difficult to maintain and increases the risk that you may make a small code error that could have negative impacts on your site.

Below is an example of how you can set up outbound link tracking in Tealium:

Tealium Outbound

  • Some tracking is best left to the developers. With Tealium, developers can trigger Google Analytics events from the page. Often, the event information will be included in this trigger. It is possible to modify this event information within the Tealium interface. However, this is not done in a modular way and great care must be taken that modifying one event will not break the tracking for other events. As a result, the most stable and robust way to complete this tracking is to hard code all of the event information with the event trigger. While this approach certainly works, it takes away for the advantages you would otherwise get from a tag management system.

Google Tag Manager

Google Tag Manager provides templated tags for event tracking. There is built-in support for firing these tags on page views, clicks, link clicks, form submits, history changes, JavaScript errors, timers, and custom events that are sent in to the dataLayer from the page or from custom JavaScript in Google Tag Manager. Additionally, you can restrict these tags to only fire when variable meet certain conditions. For example, it is very easy to set up an event to fire for link clicks on the homepage that take you to another site.


  • While custom JavaScript code is sometimes unavoidable, we like to minimize the amount of custom JavaScript we maintain in tag management systems. The availability of templated event tags and the flexibility and power of the built in event triggers in Google Tag Manager often results in very little custom code being required for most of our clients. When we do need custom code, we can often use standard code for scroll tracking or video tracking that are widely in use and vetted by the Google Analytics community.

Below is an example of how you would track outbound links from our website. First, an event trigger should be created using the click hostname variable we configured above:

outbound trigger

Next, the templated event tag should be configured to send the desired event information:

outbound event

No custom code was required to add this event.

  • Sometimes, you may want to track events outside of the standard clicks and form submits. This often requires custom JavaScript being added to the page. Google Tag Manager has a great way to handle this. A developer can send a simple event push to the dataLayer with a short line of code. Information to be passed along with the event may be included in this push but it is not required. Within Google Tag Manager, you have great flexibility to trigger events, virtual pageviews, or even advertising pixels based on this custom event. Event values can be easily added based on all available variables in a modular way without the fear of breaking other tracking.

Variables / Data Layer

Both tag management systems allow the user to bring in data on the page and use this data in different tags.


In Tealium, you can bring in data off of the page within the Data Layer tab. There are several supported types of data that can be brought in, including:

  • UDO Variable
  • JavaScript Variable
  • Meta Data Element
  • First Party Cookie
  • Query String Parameter

Additionally, there are bundles of commonly used data sources that can be automatically added. This includes support for data sources from several different platforms, such as Demandware and WordPress.


  • The built in support for platform specific data sources seems useful. I would expect this might be helpful in fast-tracking a new implementation.


  • There is very little support for modifying or customizing data within the Data Layer tab.

Google Tag Manager

In Google Tag Manager, you can bring in data off of the page under the variables section. Google Tag Manager supports even more data types than Tealium, including:

  • 1st Party Cookie
  • Auto-Event Variable
  • Constant
  • Container ID
  • Container Version
  • Custom Event
  • Custom JavaScript Function
  • Data Layer Variable
  • Debug Mode
  • DOM Element
  • Environment Name
  • HTTP Referrer
  • JavaScript Variable
  • Lookup Table
  • Random Number
  • URL

Google Tag Manager also has several built-in variables that can easily be added, including information about the page, clicks, forms, errors, history, and several other utility variables. These variables tend to be more general and platform-agnostic than the data source bundles provided by Tealium.


  • Easy to bring in data off the page and then modify it through lookup tables or custom JavaScript functions. There is also templated support for pulling out different parts of a URL pulled off of the page. This creates a much more modular and robust environment then trying to modify the data through JavaScript extensions. Pictured below is an example of how you can create a variable for the click hostname:

click hostname


  • The initial set-up may require more time, developer hours, and careful planning.

Data Layer / UDO Object

Both Tealium and Google Tag Manager provide a centralized place on the page to put data related to your analytics tracking. In both cases, this should be populated before the tag manager loads on the page. Both tag management systems can easily interact with this object by bringing in data from the object. You can also modify this object from the page or from within the tag management system.


In Tealium, this location is called the UDO Data Object. The UDO Data Object is structured as a JavaScript object and can be viewed in the console by typing in utag.data. This is sometimes refered to as a “flat” data layer.


  • It is unclear to me how to update the UDO Data Object from the page without triggering a new event or virtual pageview in the process. This is a vital part of many of our client’s implementations.
  • The UDO Data Object can be updated from within Tealium using a set data values or a custom JavaScript code extension. However, these extensions can interact with each other. If you accidentally overwrite or interfere with another extension, it can be difficult to track down where these errors occurred. Pictured below is the first part of the Tealium UDO Object from their ecommerce demo site:

Tealium UDO

Google Tag Manager

This feature is called the dataLayer in Google Tag Manager. You can view the dataLayer by typing in dataLayer in the console. The dataLayer is structured as a JavaScript array into which objects are pushed over time. If the same key is pushed into the dataLayer multiple times, Google Tag Manager will use the value from the most recent object that was pushed.


  • This data layer is much easier to maintain if you have a more complicated implementation where the dataLayer is updated after the page loads. Having the structure of an array allows you to easily see each update that was made, as well as the order and timing in which the updates were made. In Preview Mode, you can also view the state of the dataLayer at the time each event was sent. This can be invaluable for debugging complicated custom code and event tracking.

With the Google Tag Manager dataLayer, you can view a record of all changes to the dataLayer from within the console:

dataLayer pushes

From within the Preview panel of Google Tag Manager, you can view all updates made to the dataLayer, the current values in the dataLayer, as well as the values of each of the variables you are bringing in off of the page. This can be compared to the event information that is sent at that time for quick and effective debugging.

GTM Preview dataLayer

  • We recommend that all of our clients set up the dataLayer in a way that they can progressively add values to the dataLayer without causing any issues. This way, if dataLayer code is added at the top of the page, above the existing dataLayer code, all of the data will still be available to Google Tag Manager without the whole array being over-written. This is invaluable for larger enterprise clients who may need to push data in from multiple sources or at multiple different points of time.

Enhanced Ecommerce

Both Tealium and Google Tag Manager have support for enhanced ecommerce tracking.


Tealium has a very slick enhanced ecommerce implementation that maps product information in the dataLayer to Google Analytics specific formatting of enhanced ecommerce. There is support for mapping product information in various platforms to this ecommerce tracking. In addition, if you already have enhanced ecommerce information in a Google Tag Manager format, and are switching to Tealium, the Tealium team can provide code to transform this data into a way that Tealium can accept.

Also, if certain ecommerce actions are set, such as add or remove from cart, Tealium, by default, will automatically send an event with the ecommerce information.


  • This functionality can make your ecommerce tracking easier to set up as you do not have to adhere to a strict formatting rules and naming conventions.
  • If you already have this product level information on the page, or if you need to use this information in multiple places, the Tealium ecommerce set-up may save your developers significant amounts of time.

Things to Watch Out For

  • Not all ecommerce events are covered under the automatic ecommerce events feature. This is usually a good thing. For example, product detail views are usually sent with the pageview. However, you should not blindly rely on this feature to send all of your ecommerce information. Please check all of your ecommerce tracking to ensure all actions are being sent with a pageview or event.


  • Tealium’s documentation and support around implementing enhanced ecommerce are not as detailed and comprehensive as the Google Tag Manager implementation, which is understandable. Tealium supports many different ecommerce platforms while Google Tag Manager really specializes in supporting Google Analytics, so there are definitely some noticeable differences in support documentation (which I cover more below.)
  • The automatic ecommerce events sent by Tealium are formatted as event category = UX and event action = click. While this matches Google’s documentation for on-page ecommerce tracking, this is not a naming convention we would recommend to our clients.
  • Tealium can have some unexpected behavior when it comes to enhanced ecommerce. For example, by default, if certain product values are missing, they will be set to a default value. In particular, the product price will be set to “1.00”, the quantity to “1”, and the name will be set to the product id (only if these fields are missing). Although you can now opt to remove this functionality, it is unclear to me how to avoid this in older versions of Tealium.

Google Tag Manager

Google recommends a very rigid structure for adding ecommerce information to the dataLayer. While there are certainly ways to get around this, most of our clients stick with the standard formatting. This information is then sent with pageviews or events that are configured using the templated tags in Google Tag Manager.


  • Sticking to the rigid formatting that Google has provided means that you already have documentation on your enhanced ecommerce information. If there is turn-over in your analytics team, new members can easily research how your ecommerce tracking works. Also, there is an entire community of Google Analytics experts out there who will be using the exact same format as you.
  • Having such a rigid set on constraints on the format of your data can keep you organized and help guard against unexpected or unintended mistakes.


  • Setting up this ecommerce information in the dataLayer can be a significant cost in terms of developer hours. These updates are usually made at the very beginning of a project, so you may get very little reward until your developers have put in their time.
  • If you deviate from the recommended format, even slightly, there is a good chance that your ecommerce tracking will not work.

Tracker – One vs Many

Probably the biggest structural difference between Tealium and Google Tag Manager is how each tool handles Google Analytics trackers. For those unaware, the Google Analytics tracker is what’s created on the page to send information to Google Analytics. The typical Google Analytics JavaScript implementation relies on one tracker.

Creating the tracker and using all happens pretty much behind the scenes, most people may not need to use multiple trackers unless they’re dealing with sending data to multiple properties.


By default, Tealium creates one tracker on the page through which all pageviews and events will be sent. This is reflected in the Tealium interface where there is a single tag for Universal Analytics which sets up the tracker and sends the initial pageview hit. As a result, you only have to set up the tracker configurations once, and there is a single place where you can see all of your custom dimensions, cross-domain tracking settings, cookie settings, etc.


  • Within Tealium, these settings are easy to find, update, and keep consistent across all of your pageviews and events.


  • While it can certainly be done, it is a little less straightforward to set up custom dimensions based on specific events.
  • Depending on your implementation, the GA tracker may interfere or be interfered with existing GA implementation on the page.

Google Tag Manager

In contrast, Google Tag Manager constructs a separate tracker for each hit that is sent, unless the user specifies otherwise. Again, this is reflected in the user interface, where events and pageviews have their own separate tags. Within Google Tag Manager, you have to set any tracker level information separately on every single tag.


  • It is very easy to set custom dimensions and other tracker-level information based on specific events.
  • By default, Google Analytics tags from Google Tag Manager will not interfere with code on the page.


  • If you want to update a tracker setting, for example, adding a custom dimension or updating the list of sites included in your cross-domain tracking, you will need to make this update on every single Google Analytics tag (which is why strategically using Variables can save you time in the long run!) If you manage the analytics for an enterprise-level organization, making this small update could take hours. We have several ways to get around this using the Tag Manager API, but it is neither easy, quick, nor straightforward to make these relatively minor updates.
  • Since your custom dimensions are set up separately in every tag, there is room for error in setting these options inconsistently across tags. It is very easy to miss a tag when you are making updates, and therefore cause unexpected errors in your data.

Testing Code Updates

It is important to test your tracking code before publishing it to your live site. Google Tag Manger and Tealium handle testing in very different ways.


Tealium has support for easily publishing your updates to a QA or dev site. The updates can then be thoroughly tested before you publish them. If you do not have a separate testing site, or if your analytics team does not have access to this site, you can preview the QA version of you site by using the Tealium Tools extension or simply injecting the Tealium QA snippet onto your live site.


  • The ability to publish to different environments is very helpful if your development team wants to thoroughly test your updates before they are pushed live.


  • If you do not have access to the QA site, previewing the QA version of the container adds an extra level of complexity.
  • Every time you want to test something, you will need to publish a new version. This can be frustrating if, for example, you have several updates you would like to make and you would like to test each one as you add them.

Google Tag Manager

Google Tag Manager also supports publishing to different environments. In addition, it provides built-in support for previewing your updates on your production site.


  • The preview feature in Google Tag Manager makes testing and debugging your code quick and easy. You do not need access to a test environment and it is simple to check your updates and you make them, in addition to checking them right before you publish live. This preview version can also be shared with others that don’t have access to GTM or the QA version of the site.

GTM Preview Event

Documentation and Community

Having documentation and community support is vital to ensure your tracking is set up correctly and according to best practices


Tealium does have documentation and a community forum. This can only be accessed if you have a Tealium login. I have had difficulty navigating and searching their documentation. In addition, the documentation for tracking specific to Google Analytics seems somewhat limited. For example, I have not been able to find any documentation on the different version of tag templates for Google Analytics. This is important since different versions of the Google Analytics tag template handle tracking differently. For example, whether the tracker is named, details on how enhanced ecommerce is implemented, and whether event information is cleared from the data layer between events varies between different tag template versions.

Google Tag Manager

Although Google’s documentation is not perfect, it is much more extensive and easy to find than Tealium’s documention. Also, there is a large community around Google Tag Manager that provides additional help and support. For example, check out this post on How To Get Google Tag Manager Help from Simo Ahava that includes many options for finding GTM-focused articles and getting support from the community.


Sometimes, you don’t have time to manage your own tracking systems.


As a paid product, Tealium provides support to all of its customers when you sign a contract with them. Tealium will help you set up and maintain your implementation, which may include Google Analytics tracking.

Google Tag Manager

Since Google Tag Manager is free, it does not come with any support. However, Google supports a network of certified partners that have passed knowledge tests and submitted case studies to prove they are capable of providing implementation and support.


This post is designed to give you a nuanced view of how Google Analytics implementation differs between Google Tag Manager and Tealium. The built-in features for event tracking, editing custom dimensions, setting up enhanced ecommerce, bringing in data off the page, and testing and debugging your code differ significantly between the two tools. Understanding these differences before you select a tag management system will save you a lot of time in the long run.