Ir al contenido

Glosario Data Layer (capa de datos)

¿Qué es el data layer (capa de datos)?

Definición

La capa de datos, o data layer, es un array de JavaScript que vive en la propia página, normalmente window.dataLayer, donde el sitio publica de forma estructurada los datos y las acciones del usuario para que herramientas como Google Tag Manager puedan leerlos.

En esta página 5
  1. Qué significa la capa de datos
  2. Cómo funciona
  3. Por qué importa
  4. Buenas prácticas
  5. Errores frecuentes
En breve

Qué es la capa de datos, en qué se diferencia de Google Tag Manager y de GA4, y por qué el orden de inicialización decide si los valores llegan.

Qué significa la capa de datos

La capa de datos es una estructura de JavaScript que el propio sitio web crea y rellena. En la práctica es un array llamado window.dataLayer, y cada elemento que se añade es un objeto con pares de clave y valor: el tipo de página, el identificador de un producto, el importe de un pedido o el nombre de la acción que acaba de ocurrir. Nada más. No hay red, no hay servidor, no hay informe.

Conviene separarla de Google Tag Manager. El gestor de etiquetas lee la capa de datos, pero no es su dueño. El array existe en cuanto una línea de código lo declara, aunque no haya ningún contenedor instalado, y sigue siendo legible por cualquier otra herramienta que quiera suscribirse a él. Esa independencia es justo lo que hace útil el patrón: el equipo de desarrollo publica los datos una sola vez y quién los consume se decide después.

Tampoco es Google Analytics 4. Muchos artículos tratan los dos conceptos como si fueran el mismo paso, y de ahí salen implementaciones confusas. GA4 recibe eventos con sus parámetros y los guarda en una propiedad de medición. La capa de datos ocurre antes de eso, en el navegador, y no envía nada por sí misma. Un valor puede estar perfectamente disponible en window.dataLayer y no aparecer jamás en los informes de GA4 porque falta la etiqueta que lo recoja.

Cómo funciona

El mecanismo tiene dos momentos, y el orden entre ellos decide si los valores llegan o se pierden. Primero, antes de que se cargue el contenedor, la página declara el array con window.dataLayer = window.dataLayer || []. Esa forma es deliberada: si el array ya existe se reutiliza, y si no existe se crea vacío. Los datos que ya se conocen en el momento de servir el HTML se empujan ahí, y el contenedor los encuentra listos al arrancar.

Después, cuando el usuario hace algo, se usa dataLayer.push(). Ese método añade un objeto al final de la cola sin borrar lo anterior. Si el objeto incluye la clave event, el gestor de etiquetas lo interpreta como una señal con nombre y puede disparar las etiquetas asociadas a ese nombre. El array no es una cola pasiva: el contenedor instala un oyente sobre él nada más arrancar, procesa los mensajes en el orden en que fueron llegando y conserva, para cada nombre de variable, el último valor empujado.

<script>
// Antes del contenedor de etiquetas
window.dataLayer = window.dataLayer || [];

window.dataLayer.push({
  page_type: 'producto',
  currency: 'EUR'
});
</script>

<!-- Aquí carga el contenedor -->

<script>
// Después, cuando ocurre la acción
var btn = document.querySelector('#comprar');

if (btn) {
  btn.addEventListener('click', addToCart);
}

function addToCart() {
  window.dataLayer.push({
    event: 'add_to_cart',
    value: 49.90,
    currency: 'EUR',
    item_id: 'SKU-1183'
  });
}
</script>

La diferencia práctica está en no volver a asignar el array una vez que el contenedor ha cargado. Escribir window.dataLayer = [] en ese punto sustituye el objeto que el gestor vigila por uno nuevo, y todos los push posteriores quedan invisibles para él. Los valores, además, viven solo mientras el visitante permanece en la página actual: al navegar a otra URL hay que volver a empujarlos.

Por qué importa

La decisión que depende de la capa de datos es si el negocio puede medir algo nuevo sin abrir un ticket de desarrollo. Cuando el sitio publica sus datos de forma ordenada, añadir una etiqueta de conversión, un público de remarketing o un evento de embudo es trabajo de configuración en el gestor de etiquetas, cuesta minutos y no toca el código de la web. Cuando no existe, cada requisito de medición vuelve al backlog y compite con las funcionalidades de producto.

El segundo efecto es la calidad de los datos. Leer el precio del texto de la página o adivinar el tipo de plantilla a partir de la URL funciona hasta el primer rediseño. Un valor empujado explícitamente sobrevive a los cambios de maquetación porque no depende del HTML visible. Esto se nota sobre todo en comercio electrónico, donde el importe, la moneda y el identificador de pedido tienen que coincidir con la facturación para que el ROAS signifique algo.

Hay un tercer motivo, más aburrido y más caro de ignorar: el gobierno del dato. Con una capa de datos documentada existe un contrato entre desarrollo y marketing sobre qué nombres hay, qué contienen y cuándo se disparan. Sin ese contrato, dos personas miden lo mismo con nombres distintos y las cifras del informe dejan de ser comparables entre trimestres.

Buenas prácticas

  • Declara window.dataLayer = window.dataLayer || [] por encima del contenedor y empuja ahí todo lo que ya se conoce al servir el HTML.
  • Envía el evento y sus parámetros en el mismo objeto, en un solo push, para que la etiqueta encuentre el contexto completo cuando se dispare.
  • Fija una convención de nombres en minúsculas y con guion bajo, y escíbela en un documento que desarrollo y marketing compartan.
  • Respeta los tipos: los importes y las cantidades van como número, no como texto, o las métricas agregadas fallarán en silencio.
  • Para eventos que dependen de una confirmación, como una compra, empuja tras la respuesta del servidor y no en el clic del botón.
  • Comprueba cada implementación en el modo de vista previa del gestor y en la consola del navegador antes de publicar el contenedor.

Errores frecuentes

  • Reasignar el array después de que el contenedor haya cargado, con lo que el gestor pierde de vista la cola y deja de recibir los push siguientes.
  • Empujar el evento y navegar a otra URL en el mismo instante: la página se descarga antes de que la etiqueta llegue a enviarse.
  • Dar por hecho que un push ya es un evento de GA4, cuando entre ambos falta la etiqueta que lo recoja y lo traduzca.
  • Meter en la capa correos, teléfonos o identificadores de cliente en claro, un dato personal que queda expuesto en el navegador.
  • Suponer que los valores persisten entre páginas y no volver a empujarlos en cada carga.
Manuel Riveiro Rodriguez CEO & Digital Strategist

Una auditoría técnica revisa esto y el resto en un solo paso.

Solicitar auditoría

Preguntas frecuentes

¿La capa de datos es lo mismo que Google Tag Manager?

No. La capa de datos es un array de JavaScript que la web crea y rellena; Google Tag Manager es una herramienta que lo lee. El array puede existir sin ningún contenedor instalado y puede alimentar a cualquier otra plataforma de medición que se suscriba a él.

¿Dónde hay que colocar el código de inicialización?

Por encima del contenedor de etiquetas, en el head del documento. Así los valores conocidos al servir el HTML ya están disponibles cuando el contenedor arranca. Si se declara después, las etiquetas que dependen de esos valores se disparan con campos vacíos.

¿Un push a la capa de datos ya envía el evento a GA4?

No. El push solo deja el objeto en la cola del navegador. Para que llegue a GA4 hace falta un activador que reconozca el nombre del evento y una etiqueta configurada que construya el evento de GA4 con sus parámetros y lo envíe a la propiedad.

¿Los valores de la capa de datos se mantienen entre páginas?

No. Cada variable declarada en la capa vive mientras el visitante permanece en la página actual. Al cargar otra URL el array se crea de nuevo y vacío, así que los valores que se necesiten en todas las vistas hay que empujarlos en cada carga.

¿Se pueden incluir datos personales en la capa de datos?

En claro no. El contenido del array es visible para cualquiera que abra la consola del navegador y para cualquier script de terceros presente en la página. Los identificadores de cliente deben ir cifrados o convertidos en un hash, y siempre condicionados al consentimiento.

Fuentes

  1. Documentación oficial de Google Tag Manager sobre la capa de datos: incluye el código de inicialización recomendado por encima del contenedor, el uso de la clave event y la advertencia de que las variables solo persisten mientras el visitante sigue en la página.
  2. Guía oficial de eventos de Google Analytics 4, actualizada en junio de 2026. Sirve para delimitar dónde acaba la capa de datos y dónde empieza GA4: describe los eventos y parámetros que la propiedad recibe, no la estructura que los produce en la página.
  3. Referencia técnica de Simo Ahava sobre el modelo interno del array y su cola de mensajes. El texto es de 2014 y sigue en línea; el mecanismo que describe, el listener sobre los push y el orden de procesamiento, no ha cambiado y coincide con la documentación vigente.