Tealium iQ and the Adobe Client Data Layer

Brian Johnson
3 min readMay 5, 2023
Atlantic Ocean sunset, Del Mar, CA
Atlantic Ocean sunset, Del Mar, CA

With data collection and tag management, terms like “data layer” and “event-driven” are often thrown about. Everyone in the industry is familiar with these terms, and the majority of the industry understands what they mean. For those who don’t, let’s quickly define them:

  • A data layer is a JavaScript object with a collection of key:value pairs. The object is referenced when building analytics and martech beacons/requests, reducing the need to scrape page content, cookies, or other fragile data sources. This accessible, predictable, central source of data is most commonly created and populated early in the page load process, often not changing until the next page load.
  • An event-driven data layer is typically built as a JavaScript array, accepting new values and information as the data becomes available. As data is pushed into the array, the data layer updates. This approach allows for dynamically enhancing and modifying the data layer throughout the user’s page experience. Any resource watching for updates is immediately notified and able to act (eg// trigger analytics beacons) or ignore the event.

Universal Data Objct — Tealium’s Data Layer

Tealium iQ’s Universal Data Object (UDO), utag_data, is a traditional data layer. When properly used, key values are defined early in the page load process, making the most relevant, important information available for the first — and subsequent — utag.view() and/or utag.link() calls.

What utag_data is not, however, is event-driven. Updates to the data layer occur quietly. Changes do not notify resources that may need to act on the change.

[Yes, Tealium’s utag.js enables dynamically tracking events via utag.view() and utag.link() (or, if you prefer, utag.track()). However, this requires baking vendor-specific code into your site’s core code repository. I will rarely, if ever, recommend this approach. No matter how good the tool (and TiQ is a great tool), I prefer a vendor-agnostic approach that supports use cases outside of the tag manager, thus preventing vendor lock-in.]

The Adobe Client Data Layer (ACDL)

Adobe’s Client Data Layer, or ACDL, is an open-source, event-driven data layer (EDDL). It is freely available, moderately well documented, and easy to work with. For users of Adobe’s Tags/Launch tag manager, the ACDL is natively supported via extension. Tealium iQ users aren’t so lucky, but that doesn’t mean they’re out of luck. It just means to use the ACDL with TiQ requires a little extra effort.

[Don’t let the “Adobe” in “Adobe Client Data Layer” confuse you. As an open-source, freely accessible library, it truly is vendor agnostic. It can be used with any TMS — or with no TMS at all.]

TiQ and the ACDL, Together

Through the power of a TiQ “Advanced Javascript Code” extension and two quite capable APIs, we can leverage TiQ’s impressive tag management features and the ACDL’s powerful data layer management capabilities.

I’ll explore the specifics in a future post, but at a high level, the configuration should be relatively straightforward:

Load and initialize the ACDL

While this can be done directly from TiQ, it is recommended to implement your data layer outside of the TMS.

Add ACDL Event Handlers to TiQ

Using an “Advanced Javascript Code” extension, scoped to Before Load Rules / Run Once, implement logic to act on adobeDataLayer.push() events. This logic will determine when to trigger utag.link() and utag.view() events, when to clear or reset the data layer, or when to do nothing at all.

Other Considerations

Through this process, you will have to determine whether the default TiQ page call should fire or not. You will have to decide which ACDL pushes should trigger TiQ’s load rules, and when — if ever — to reset any or all of the adobeDataLayer.

Decisions for each of these topics, and many others, are based on your business needs.