Tealium iQ trabaja con un data layer conocido como el ‘Universal Data Object’ (UDO), un objeto javascript sencillo que se declara por delante de la librería utag.js
. Esta capa de datos pasa por varios estados. Se inicializa como un objeto llamado utag_data
y se procesa y amplía con más información para pasar a denominarse utag.data. Es en este momento cuando su información puede usarse en la configuración de este gestor de etiquetas (tags, extensiones, ‘load rules’, variables…)
Entender este proceso bien y saber qué información expone a Tealium IQ su data layer en cada momento es importante. Así las cosas, en este post te voy a explicar cómo se procesa el objeto utag_data
hasta convertirse en el objeto utag.data
. Ojalá te sirva y ayude en tus implementaciones
El objeto utag_data, a.k.a Universal Data Object (UDO)
Como te decía al comienzo de este post, el data layer de Tealium iQ se conoce como ‘Universal Data Object’ (UDO) y se inicializa con el nombre utag_data
, por delante de la librería utag.js
. De esta forma, Tealium puede procesar los valores de esta capa de datos cuando se carga.
Para ilustrar este post voy a usar la ‘home’ del ‘ecommerce’ de prueba que Tealium pone a tu disposición. Si inspeccionas el código fuente de la página puedes ver el objeto utag_data
, fíjate:
window.utag_data
o utag_data
sin más. Fíjate: utag_data
que imprime tu consola de depuración tiene más propiedades que el objeto declarado antes de la librería utag.js
. ¿Por qué es esto? Porque el objeto utag.data
ya se ha procesado y está disponible: se ha creado como una referencia al objeto utag_data
. En javascript, cuando dos objetos están referenciados los cambios que se hacen en uno afectan al otro, y viceversa, En otras palabras: estás viendo en el objeto
utag_data los cambios que se han procesado en el objeto utag.data
.
Pero me estoy adelantando. De momento basta con ver que el Universal Data Object (UDO) ha cambiado de estado: utag_data
es ahora utag.data
. El objeto utag.data: el data layer de Tealium iQ se enriquece con más datos
Llegados a este punto toca hablar del ‘Tealium iQ order of operations’ (‘orden de operaciones’ en castellano). Tealium sigue un orden determinado en la ejecución de sus procesos, y esto influye sobre la lógica que puedas haber configurado en este tag manager: extensiones, tags, ‘load rules’… y el data layer. No voy a entrar a describir en detalle este ‘order of operations, pero si lo voy a enumerar para que veas en qué momento se procesa el objeto utag_data
:
- utag Sync. (este es el primer paso del orden de ejecución de Tealium iQ, pero sólo si se ha implementado la librería utag.sync.js)
- Pre loader. En este momento Tealium iQ procesa el Universal Data Object (UDO), es decir, el objeto
utag_data
, que pasa a ser el objetoutag.data
- Before load rules
- After load rules
- Prioritized tags
- DOM Ready
- After tags
Como ves, es en el segundo paso de su orden de operaciones cuando Tealium procesa el objeto utag_data
y lo referencia en el objeto utag.data
. En este instante, el Universal Data Object (UDO) se enriquece y amplía con más datos que pueden estar presentes en tu página web: componentes de la url (host, pathname, query strings..), variables javascript, etiquetas meta, configuraciones hechas con extensiones… Cada una de estas ‘fuentes de datos’ (por así decirlo) se identifica con un prefijo determinado en el objeto data layer (justo debajo incluyo unas capturas de pantalla a modo de ejemplo).
Es esta versión final de la capa de datos de Tealium iQ la que puedes explotar y aprovechar en tu configuración en este tag manager.
El objeto utag.data
es dinámico. Se procesa conforme a la información disponible en todas estas ‘fuentes de datos’. Te pongo un ejemplo: si el objeto document.location
(la url de la página) incluye unos query stings, éstos se capturan en el data layer. Si estos parámetros de consulta no están disponibles en la url, no se exponen en la capa de datos.
El objeto data layer b: una copia local del data layer de Tealium iQ
Este post no estaría completo sin hablar del objeto data layer b: una copia local de la última versión del data layer (es decir, del objeto utag.data
) que puede usarse en los tag templates y extensiones de Tealium iQ. Tiene dos ventajas con respecto a referenciar directamente al objeto utag.data
:
- Al ser un nombre más corto (‘b’) es más eficiente desde el punto de vista del tiempo de carga de una librería javascript en un ‘site’.
- Al ser una copia local, el objeto data layer b de Tealium iQ se puede modificar sin temor a romper o modificar el objeto global del que se nutre el resto de tu configuración.
También puedes usar el objeto data layer b en tus tracking calls utag.view()
y utag.link()
, pero en este caso el objeto b es una copia del objeto que has pasado a cada uno de estos tracking calls, y no del objeto utag.data
procesado en la carga del DOM.
Reflexiones finales
Tealium iQ ofrece un soporte online de primera categoría. Yo siempre he estado más involucrado en implementaciones y desarrollos de analítica vía Google Tag Manager (GTM). Cuando he tenido ponerme manos a la obra con Tealium, su documentación y comunidad ‘online’ me han servido de mucha ayuda.
Cuando empecé a investigar sobre el tema desarrollado en este post, en seguida encontré una entrada en la comunidad de Tealium que hacía referencia justo a la diferencia entre los objetos utag_data
y utag.data
. No lo dudes, trabaja con la documentación de Tealium iQ a mano. Es un recurso de mucho valor.