Ir al contenido principal

Google Tag Manager en el motor de reservas

Escrito por Jordi

Google Tag Manager (GTM) en el motor de reservas permite medir reservas confirmadas (evento purchase) y ejecutar etiquetas de analítica o marketing —GA4, Google Ads, Meta Pixel u otras— sin tocar código. El hotel configura el ID de contenedor en Marketplace y el propio motor lo inyecta cuando el huésped navega.

Dónde está

  • Marketplace > Motor de reservas > Configurar — campo Google Tag Manager (GTM)

  • En el motor público (bookings.hotelgest.com): el contenedor se inyecta automáticamente si hay ID guardado

Antes de empezar

  • Integración Motor de reservas activa en Marketplace.

  • Contenedor de Google Tag Manager creado en tagmanager.google.com con un ID en formato GTM-XXXXXXX (prefijo GTM- en mayúsculas seguido de alfanuméricos).

  • (Opcional pero recomendado) Propiedad GA4 vinculada al contenedor si el objetivo es medir conversiones.

Configurar en el motor

Paso 1: Abre la integración Motor de reservas

Marketplace → tarjeta Motor de reservasConfigurar (o Habilitar si aún no está activa).

Paso 2: Introduce el ID de GTM

Localiza el campo Google Tag Manager (GTM) en el formulario de configuración. Introduce el ID de tu contenedor, por ejemplo GTM-ABC1234. El campo acepta solo el formato GTM- seguido de caracteres en mayúsculas; si lo dejas vacío el motor no carga ningún script.

Paso 3: Guarda y verifica

Pulsa Guardar con la integración Activa. Abre el motor en una ventana de incógnito y comprueba en la consola del navegador que aparece ✅ GTM Dinámico Inyectado: GTM-XXXXXXX. En la pestaña Red, filtra por gtm.js para confirmar que el script se descarga.

¿Cuándo se inyecta el script GTM en la página?

El script de GTM se carga una sola vez por sesión de página en cuanto el motor detecta un ID de GTM guardado para la propiedad. Si el huésped navega entre pasos (búsqueda, habitación, checkout) sin recargar, el script no se duplica.

¿Cuánto tiempo tarda en reflejarse un cambio de ID?

Tras cambiar el ID de GTM en Marketplace puede pasar un tiempo hasta que el motor cargue el nuevo contenedor. Prueba en ventana de incógnito. Si el cambio no se refleja, espera unos minutos y vuelve a intentarlo.

Evento de compra: purchase

Tras una reserva confirmada, el motor envía un evento purchase al dataLayer compatible con GA4. El evento se dispara en la página de confirmación cuando:

  • La URL de confirmación contiene status=ok.

  • Hay un código de reserva en la URL de confirmación.

  • El carrito tiene al menos una habitación seleccionada.

  • El evento no se ha enviado ya en esa visita (control anti-duplicado).

Tras enviarlo, el motor limpia la selección del carrito para que recargar la página de confirmación no lo reenvíe.

Estructura del evento

// 1. Limpiar ecommerce previo (patrón GA4 obligatorio en SPAs)
window.dataLayer.push({ ecommerce: null });// 2. Enviar purchasewindow.dataLayer.push({  event: "purchase",  ecommerce: {    transaction_id: "RS123456",   // Código de reserva (localizador)    value: 350.00,                 // Total: habitaciones + extras + tasa turística    tax: 0,    shipping: 0,    currency: "EUR",    affiliation: "booking",    items: [ / habitaciones y extras — ver abajo / ]  },  // Campos raíz adicionales para configuraciones GTM que no leen el objeto ecommerce  totalValue: 350.00,  transactionId: "RS123456",  currency: "EUR"});

El value incluye el precio de habitaciones, extras y la tasa turística cuando aplica.

Estructura de los items: habitaciones y extras

Cada habitación reservada genera un item:

Campo

Valor

item_id

Identificador de la variante reservada

item_name

Nombre de la habitación + fechas (ej. Doble Superior 15/05 - 17/05)

item_brand

"BookingEngine"

item_category

"room"

item_variant

Código de régimen (BB, HB, AI…)

price

Precio de la habitación

quantity

1

rtcode

Código de tipo de habitación

policy

Política de cancelación (NR, FL…)

Cada extra seleccionado genera un item:

Campo

Valor

item_id

"EXTRA-{id}"

item_name

Nombre del extra

item_category

"extra"

price

Precio base del extra

quantity

Cantidad elegida

Las habitaciones aparecen primero en el array items; los extras continúan el índice (index) a continuación.

Campos raíz totalValue, transactionId y currency

Además del objeto ecommerce estándar de GA4, el motor expone totalValue, transactionId y currency directamente en el primer nivel del evento. Están pensados para configuraciones GTM que usan variables de capa de datos directas en lugar de leer dentro del objeto ecommerce. Ambas formas devuelven los mismos datos; usa la que mejor encaje con tu configuración existente.

Configurar GA4 en GTM (guía rápida)

Paso 4: Crea variables del dataLayer

En GTM crea cuatro variables de tipo Variable de capa de datos:

Nombre

Nombre de variable

DL - Transaction ID

ecommerce.transaction_id

DL - Value

ecommerce.value

DL - Currency

ecommerce.currency

DL - Items

ecommerce.items

Paso 5: Crea el activador

Nuevo activador → tipo Evento personalizado → nombre de evento: purchase (exactamente así).

Paso 6: Crea la etiqueta GA4

Nueva etiqueta → Google Analytics: evento GA4. Usa tu etiqueta de configuración GA4 existente (o crea una nueva con tu Measurement ID G-XXXXXXXX). Nombre del evento: purchase. Parámetros del evento:

Parámetro

Variable GTM

transaction_id

variable GTM DL - Transaction ID

value

variable GTM DL - Value

currency

variable GTM DL - Currency

items

variable GTM DL - Items

Activa con el trigger purchase creado en el paso anterior.

Paso 7: (Opcional) Conversión en Google Ads

Crea una etiqueta de Seguimiento de conversiones de Google Ads. Usa el mismo trigger purchase. Pasa el valor con la variable GTM DL - Value y la moneda con DL - Currency.

Paso 8: Prueba y publica

Usa Vista previa en GTM con la URL del motor, completa una reserva de prueba y verifica en el panel de debug que aparece el evento purchase con sus parámetros. Cuando todo funcione, pulsa Enviar para publicar el contenedor.

Meta Pixel (Facebook) vía GTM

Hotelgest PMS no tiene un campo aparte para Meta Pixel en Marketplace. Configúralo dentro del contenedor GTM ya enlazado al motor.

Paso 9: Crea la etiqueta Meta en GTM

En GTM añade la plantilla Meta Pixel (o una etiqueta HTML personalizada con tu Pixel ID de Meta Business).

Paso 10: Configura el activador purchase

Crea un activador de tipo Evento personalizado con nombre purchase. La etiqueta solo se activará en reservas completadas, no en búsquedas.

Paso 11: Mapea valor e ID

En la etiqueta Meta usa las variables del dataLayer:

  • transaction_id → ID de reserva

  • value y currency → importe y moneda

Paso 12: Publica y verifica

Publica el contenedor GTM. Abre el motor en ventana privada, completa una reserva de prueba y verifica en Meta Events Manager o con la extensión Meta Pixel Helper.

¿Puedo usar el mismo contenedor GTM en la web del hotel y en el motor?

Sí. La web del hotel y el motor son dominios distintos, pero puedes apuntar ambos al mismo contenedor GTM o usar contenedores separados. Desde la web del hotel insertas el snippet de GTM en tu CMS. En el motor, Unified lo inyecta automáticamente con el ID de Marketplace. Usa activadores con condición de URL si quieres que algunas etiquetas solo se ejecuten en uno de los dos contextos.

GTM y el widget embebible

El widget de reservas (widget.js) que insertas en tu web solo renderiza el formulario de búsqueda. Al pulsar BUSCAR, el huésped es redirigido al motor de reservas (bookings.hotelgest.com) que se abre normalmente en una pestaña nueva.

  • El widget no carga GTM en la web del hotel donde está embebido.

  • GTM se carga en el dominio del motor, no en tu web corporativa.

  • El evento purchase se dispara en la página de confirmación del motor.

  • Las visitas al widget (clics en BUSCAR en tu web) no aparecen en los datos del GTM del motor. Si necesitas medir esos clics, configura etiquetas en el GTM de tu web corporativa, independiente del GTM del motor.

Limitaciones

Limitación

Detalle

Solo evento purchase

No hay tracking de pasos intermedios del funnel (búsqueda, selección de habitación, checkout). Solo se registra la conversión final.

Moneda fija EUR

El evento purchase envía siempre currency: "EUR".

Sin pageviews automáticos

El motor es una SPA: GTM no recibe pageviews al cambiar de ruta. Configura un activador de tipo Historial de cambios en GTM si necesitas pageviews por paso.

Caché de configuración

Cambios en el ID de GTM en Marketplace pueden tardar en reflejarse en el motor. Si el cambio no aparece, espera unos minutos y prueba en ventana de incógnito.

Un contenedor por propiedad

Cada propiedad configura su propio GTM-XXXXXXX en Marketplace.

Reservas fallidas

Si la confirmación llega con status=ko o status=FAILED, el evento purchase no se envía.

Problemas frecuentes

El script de GTM no aparece en la página

Comprueba que el campo Google Tag Manager (GTM) en Marketplace tiene un valor guardado y que el formato es GTM- seguido de alfanuméricos en mayúsculas. Si acabas de guardar el ID, puede pasar un tiempo hasta que el motor lo aplique. Prueba en ventana de incógnito. Si el problema persiste, abre las DevTools → pestaña Red y busca la llamada a la API del motor para verificar que la respuesta incluye el ID de GTM configurado.

El evento purchase no llega a GTM

Verifica en la página de confirmación del motor que la URL contiene status=ok y un código de reserva. Si recargas esa página el evento no se reenvía (es intencional para evitar duplicados). Para probarlo de nuevo, haz una reserva de prueba completa desde cero. Comprueba también en la consola del navegador que no hay errores de JavaScript antes del evento.

GA4 recibe el evento pero sin ingresos

Comprueba que la etiqueta GA4 en GTM mapea value, currency y transaction_id como parámetros del evento usando las variables del dataLayer (ecommerce.value, etc.). Verifica que el activador es de tipo Evento personalizado con nombre exactamente purchase (minúsculas).

Veo datos duplicados en GA4

El motor ya ejecuta dataLayer.push({ ecommerce: null }) antes de cada purchase para limpiar el objeto ecommerce anterior (patrón obligatorio en SPAs con GA4). Si ves duplicados, revisa que no tienes dos etiquetas en GTM escuchando el mismo evento purchase.

Universal Analytics (UA): compatibilidad

Universal Analytics dejó de procesar datos en julio de 2023. El motor envía el evento en formato GA4 ecommerce (event: "purchase" con objeto ecommerce). Usa GA4 a través de GTM.

¿Ha quedado contestada tu pregunta?