Integración de GTM Analytics
Puedes conectar cualquier contenedor de Google Tag Manager (GTM) a Wink ingresando su ID de contenedor GTM en el portal de Wink. Una vez conectado, tu contenedor se carga automáticamente para tu propiedad y lee directamente los eventos de reserva de Wink, cubriendo todo el recorrido del huésped desde la búsqueda hasta la reserva completada. Un caso común es un contenedor Sojern para retargeting y publicidad, pero cualquier contenedor GTM funciona de la misma manera.
Lo que necesitas hacer
Sección titulada «Lo que necesitas hacer»-
Obtén tu ID de contenedor GTM
Obtén tu ID de contenedor GTM (formato
GTM-XXXXXXX). Si proviene de un socio como Sojern, solicita específicamente el ID de contenedor GTM — es diferente de un ID de píxel o etiqueta. -
Ingresa el ID en el portal de Wink
Inicia sesión en app.wink.travel, selecciona tu cuenta y ve a la pestaña Personalizaciones. Pega tu ID de contenedor GTM en el campo GTM y guarda. Tu integración ya está activa.
-
(Opcional) Agrega un ID de medición GA4 + secreto API para compra del lado del servidor
Los contenedores GTM se ejecutan completamente en el navegador del huésped, por lo que una reserva completada puede perderse si el huésped cierra la pestaña durante la redirección de pago. Si tu contenedor carga una propiedad GA4 y quieres que las reservas completadas se registren de forma confiable, también ingresa el ID de medición y el secreto de API del protocolo de medición de esa GA4 en la sección GTM. Wink enviará entonces la acción
purchasepara esa propiedad del lado del servidor, exactamente como se describe en la guía de Integración GA4 Analytics. Déjalos en blanco si solo necesitas el seguimiento en el navegador. -
Confirma con tu proveedor
Si tu contenedor proviene de un socio como Sojern, informa a tu gerente de cuenta que la integración está activa. Ellos pueden verificar desde su lado que las etiquetas se disparan correctamente en
wink.travelpara tu propiedad y que los datos fluyen a tu cuenta.
Lo que Wink hace de nuestro lado
Sección titulada «Lo que Wink hace de nuestro lado»Para transparencia, esto es lo que Wink configura para que esta integración funcione:
- Un campo para el ID de contenedor GTM está disponible en la pestaña Personalizaciones de tu portal Wink. Cuando ingresas tu ID de contenedor, Wink valida el formato (
GTM-XXXXXXX) y lo almacena de forma segura asociado a tu propiedad. - En cada página donde tu propiedad está activa en Wink, tu contenedor se inyecta directamente en la página — compartiendo el propio
window.dataLayerde Wink — para que se cargue junto con el contenedor propio de Wink sin depender de ninguna configuración adicional. Esto sucede automáticamente, sin trabajo por propiedad por parte del equipo de Wink. - Tu contenedor se carga de forma asíncrona, por lo que no afecta el rendimiento de carga de página para tus huéspedes.
- El seguimiento propio de Wink y tu contenedor se ejecutan en paralelo, leyendo del mismo
dataLayercompartido. Cada evento de reserva que Wink rastrea está disponible simultáneamente para tu contenedor. - Cuando tu propiedad no está siendo vista — por ejemplo, cuando un huésped navega otro hotel en Wink — tu contenedor no se carga, por lo que solo recibe datos relevantes para tu propiedad.
- Si proporcionaste un ID de medición GA4 + secreto API (paso 3 arriba), la acción
purchasepara reservas completadas se envía adicionalmente del lado del servidor vía el Protocolo de medición GA4, para que una venta se registre incluso si el huésped nunca regresa a la página de confirmación.
Referencia DataLayer
Sección titulada «Referencia DataLayer»Wink envía eventos compatibles con GA4 al dataLayer durante todo el recorrido del huésped. Tu contenedor GTM lee de este mismo dataLayer compartido, por lo que cualquier activador o variable que configures tiene acceso a todas las propiedades descritas a continuación.
Cada evento sigue la estructura estándar de GA4 Enhanced Ecommerce: una cadena event de nivel superior y un objeto ecommerce. Antes de cada push, Wink limpia la carga útil ecommerce previa para evitar que datos antiguos se mezclen en nuevos activadores.
Eventos del recorrido de reserva
Sección titulada «Eventos del recorrido de reserva»Estos eventos se disparan automáticamente a medida que un huésped avanza por el embudo de reserva. Configura tus activadores GTM como activadores de Evento personalizado que coincidan con los nombres de evento a continuación.
| Paso | Evento | Cuándo se dispara |
|---|---|---|
| 1 | view_item_list | Se carga la cuadrícula o lista de inventario hotelero |
| 2 | view_item | El huésped ve la página de una propiedad específica |
| 3 | add_to_cart | El huésped agrega una habitación al carrito |
| 4 | begin_checkout | Se carga la página de pago / checkout |
| 5 | add_payment_info | El huésped selecciona un método de pago |
| 6 | login | El huésped se autentica vía SSO |
| 7 | purchase | Se confirma la reserva |
| 8 | refund | Se cancela la reserva |
view_item_list
Sección titulada «view_item_list»Se dispara cuando se renderiza una cuadrícula o lista de inventario hotelero.
{ "event": "view_item_list", "ecommerce": { "item_list_id": "featured_hotels", "item_list_name": "Featured Hotels", "items": [ ] }}view_item
Sección titulada «view_item»Se dispara cuando un huésped ve una propiedad específica.
{ "event": "view_item", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}add_to_cart
Sección titulada «add_to_cart»Se dispara cuando un huésped agrega una habitación a su carrito.
{ "event": "add_to_cart", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}begin_checkout
Sección titulada «begin_checkout»Se dispara cuando se carga la página de pago / checkout.
{ "event": "begin_checkout", "ecommerce": { "currency": "USD", "value": 299.00, "coupon": "SUMMER10", "items": [ ] }}coupon solo está presente cuando se aplicó un código de descuento.
add_payment_info
Sección titulada «add_payment_info»Se dispara cuando el huésped selecciona o confirma un método de pago.
{ "event": "add_payment_info", "ecommerce": { "currency": "USD", "value": 299.00, "coupon": "SUMMER10", "payment_type": "STRIPE", "items": [ ] }}payment_type se llena con el tipo de adquirente de pago. coupon solo está presente cuando se aplicó un código de descuento.
Se dispara cuando un huésped se autentica vía inicio de sesión único.
{ "event": "login", "ecommerce": { "method": "IAM" }}purchase
Sección titulada «purchase»Se dispara cuando se confirma una reserva.
{ "event": "purchase", "ecommerce": { "currency": "USD", "transaction_id": "bc-a1b2c3d4", "value": 299.00, "coupon": "SUMMER10", "shipping": 0.00, "tax": 0.00, "items": [ { "item_id": "rr-xyz789", "item_name": "Deluxe Ocean Suite", "item_brand": "Grand Resort", "item_category": "GUEST_ROOM", "price": 299.00, "quantity": 1, "property_id": "prop-abc123", "property_name": "Grand Resort Maldives", "property_brand": "Grand Collection", "property_chain": "Luxury Hotels International", "city_name": "Malé", "country_code": "MV", "start_date": "2026-06-01", "end_date": "2026-06-05", "num_adults": 2, "num_children": 0, "cancellation_policy": "Refundable", "rate_plan_id": "rp-summer2026", "room_rate_id": "rr-xyz789", "room_rate_name": "Summer Escape — Bed & Breakfast", "num_perks": 2, "room_location": "Overwater", "room_view": "Ocean", "room_classification": "Suite" } ] }}transaction_id es el identificador único del contrato de reserva. coupon, shipping y tax solo están presentes cuando aplican.
Se dispara cuando se cancela una reserva.
{ "event": "refund", "ecommerce": { "currency": "USD", "transaction_id": "bc-a1b2c3d4", "value": 299.00, "coupon": "SUMMER10", "shipping": 0.00, "tax": 0.00, "items": [ ] }}transaction_id coincide con el evento purchase para la misma reserva. coupon, shipping y tax solo están presentes cuando aplican.
Propiedades de los ítems
Sección titulada «Propiedades de los ítems»Todos los eventos que incluyen un arreglo items comparten el mismo esquema de ítem. Cada propiedad es opcional a menos que se indique como requerida.
Campos estándar GA4
Sección titulada «Campos estándar GA4»Estos campos son entendidos nativamente por GA4 y aparecen en reportes estándar de ecommerce sin configuración adicional.
| Propiedad | Tipo | Requerido | Descripción |
|---|---|---|---|
item_id | string | Sí | Identificador único para la habitación o producto |
item_name | string | — | Nombre de la habitación o producto |
affiliation | string | — | Nombre del afiliado o vendedor |
coupon | string | — | Código de cupón aplicado al ítem |
currency | string | — | Código de moneda ISO 4217 (ej. USD) |
creative_name | string | — | Nombre creativo usado en una promoción |
creative_slot | string | — | Posición del espacio de la promoción creativa |
discount | number | — | Monto de descuento aplicado |
index | number | — | Posición en la lista (basado en 1) |
item_brand | string | — | Nombre del hotel o marca |
item_category | string | — | Tipo de producto — ej. GUEST_ROOM, ACTIVITY, ATTRACTION, MEETING_ROOM, RESTAURANT, SPA |
item_list_id | string | — | Identificador de la lista a la que pertenece el ítem |
item_list_name | string | — | Nombre visible de la lista |
location_id | string | — | Coordenadas geográficas de la propiedad |
price | number | — | Precio unitario |
promotion_id | string | — | Identificador de la promoción |
promotion_name | string | — | Nombre visible de la promoción |
quantity | number | — | Cantidad (por defecto 1) |
Parámetros personalizados a nivel ítem
Sección titulada «Parámetros personalizados a nivel ítem»Estos parámetros llevan contexto específico de reserva de Wink. GA4 no los muestra automáticamente en reportes — debes registrar cada uno como una dimensión personalizada a nivel ítem en tu propiedad GA4 antes de que aparezcan en exploraciones o reportes estándar. Consulta Dimensiones personalizadas en GA4 abajo para instrucciones.
| Propiedad | Tipo | Descripción |
|---|---|---|
property_id | string | Identificador de propiedad Wink |
property_name | string | Nombre visible de la propiedad |
property_brand | string | Marca a la que pertenece la propiedad |
property_chain | string | Cadena a la que pertenece la propiedad |
property_url_name | string | Slug amigable para URL de la propiedad |
city_name | string | Ciudad donde está ubicada la propiedad |
country_code | string | Código de país ISO 3166-1 alfa-2 |
start_date | string | Fecha de check-in en formato YYYY-MM-DD |
end_date | string | Fecha de check-out en formato YYYY-MM-DD |
num_adults | number | Número de adultos en la reserva |
num_children | number | Número de niños en la reserva |
cancellation_policy | string | Uno de: Refundable, Non-Refundable, Refundable-With-Restrictions, Non-Refundable-With-Restrictions |
rate_plan_id | string | Identificador del plan tarifario |
room_rate_id | string | Identificador de la tarifa específica de la habitación |
room_rate_name | string | Nombre visible de la tarifa de habitación |
num_perks | number | Número de beneficios incluidos con la tarifa |
room_location | string | Descripción de la ubicación de la habitación (ej. Overwater, Garden) |
room_view | string | Descripción de la vista de la habitación (ej. Ocean, City) |
room_classification | string | Clasificación o nivel de la habitación (ej. Suite, Standard) |
bed_type | string | Configuración de camas para la habitación (ej. King, Twin) |
Dimensiones personalizadas en GA4
Sección titulada «Dimensiones personalizadas en GA4»GA4 ignora los parámetros personalizados a nivel ítem en reportes hasta que los registras explícitamente como dimensiones personalizadas a nivel ítem. Solo necesitas registrar los parámetros que planeas usar en reportes — no es necesario registrar los 20.
-
Abre Definiciones personalizadas
En GA4, ve a Administrador (icono de engranaje abajo a la izquierda) → selecciona tu propiedad → Visualización de datos → Definiciones personalizadas.
-
Crea una nueva dimensión personalizada
Haz clic en Crear dimensiones personalizadas.
-
Llena los detalles de la dimensión
- Nombre de la dimensión — la etiqueta legible que aparece en los reportes GA4 (ver tabla abajo)
- Ámbito — selecciona Ítem
- Parámetro de evento — el nombre exacto del parámetro como aparece en el dataLayer (ver tabla abajo)
- Descripción — opcional pero recomendado
-
Guarda y repite
Haz clic en Guardar, luego repite para cada parámetro que quieras rastrear.
Usa la siguiente tabla como referencia al crear dimensiones personalizadas. El valor de Parámetro de evento debe coincidir exactamente — GA4 distingue mayúsculas y minúsculas.
| Nombre de dimensión | Parámetro de evento | Tipo |
|---|---|---|
| ID de propiedad | property_id | Texto |
| Nombre de propiedad | property_name | Texto |
| Marca de propiedad | property_brand | Texto |
| Cadena de propiedad | property_chain | Texto |
| Nombre URL de propiedad | property_url_name | Texto |
| Nombre de ciudad | city_name | Texto |
| Código de país | country_code | Texto |
| Fecha de check-in | start_date | Texto |
| Fecha de check-out | end_date | Texto |
| Número de adultos | num_adults | Número |
| Número de niños | num_children | Número |
| Política de cancelación | cancellation_policy | Texto |
| ID de plan tarifario | rate_plan_id | Texto |
| ID de tarifa de habitación | room_rate_id | Texto |
| Nombre de tarifa de habitación | room_rate_name | Texto |
| Número de beneficios | num_perks | Número |
| Ubicación de habitación | room_location | Texto |
| Vista de habitación | room_view | Texto |
| Clasificación de habitación | room_classification | Texto |
| Tipo de cama | bed_type | Texto |
Eventos adicionales disponibles
Sección titulada «Eventos adicionales disponibles»Los siguientes eventos están disponibles en el dataLayer de Wink pero no forman parte del embudo estándar de reserva. Pueden dispararse por otras interacciones en la plataforma.
add_to_wishlist
Sección titulada «add_to_wishlist»{ "event": "add_to_wishlist", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}remove_from_cart
Sección titulada «remove_from_cart»{ "event": "remove_from_cart", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}select_item
Sección titulada «select_item»{ "event": "select_item", "ecommerce": { "item_list_id": "featured_hotels", "item_list_name": "Featured Hotels", "items": [ ] }}view_cart
Sección titulada «view_cart»{ "event": "view_cart"}No se incluye carga útil ecommerce con este evento.
view_promotion
Sección titulada «view_promotion»{ "event": "view_promotion", "ecommerce": { "creative_name": "Summer Banner", "creative_slot": "hero", "promotion_id": "promo_001", "promotion_name": "Summer Sale", "items": [ ] }}select_promotion
Sección titulada «select_promotion»{ "event": "select_promotion", "ecommerce": { "creative_name": "Summer Banner", "creative_slot": "hero", "promotion_id": "promo_001", "promotion_name": "Summer Sale", "items": [ ] }}{ "event": "search", "ecommerce": { "search_term": "beachfront resort" }}select_content
Sección titulada «select_content»{ "event": "select_content", "ecommerce": { "content_type": "hotel", "content_id": "prop_12345" }}{ "event": "share", "ecommerce": { "method": "copy_link", "content_type": "hotel", "item_id": "prop_12345" }}sign_up
Sección titulada «sign_up»{ "event": "sign_up", "ecommerce": { "method": "email" }}generate_lead
Sección titulada «generate_lead»{ "event": "generate_lead", "ecommerce": { "currency": "USD", "value": 0.00 }}join_group
Sección titulada «join_group»{ "event": "join_group", "ecommerce": { "group_id": "group_abc" }}earn_virtual_currency
Sección titulada «earn_virtual_currency»{ "event": "earn_virtual_currency", "ecommerce": { "virtual_currency_name": "WinkPoints", "value": 100 }}spend_virtual_currency
Sección titulada «spend_virtual_currency»{ "event": "spend_virtual_currency", "ecommerce": { "virtual_currency_name": "WinkPoints", "value": 50, "item_name": "Room Upgrade" }}level_start
Sección titulada «level_start»{ "event": "level_start", "ecommerce": { "level_name": "Gold" }}level_end
Sección titulada «level_end»{ "event": "level_end", "ecommerce": { "level_name": "Gold", "success": true }}level_up
Sección titulada «level_up»{ "event": "level_up", "ecommerce": { "level": 2, "character": "traveler" }}post_score
Sección titulada «post_score»{ "event": "post_score", "ecommerce": { "score": 980, "level": 2, "character": "traveler" }}unlock_achievement
Sección titulada «unlock_achievement»{ "event": "unlock_achievement", "ecommerce": { "achievement_id": "first_booking" }}tutorial_begin
Sección titulada «tutorial_begin»{ "event": "tutorial_begin", "ecommerce": {}}tutorial_complete
Sección titulada «tutorial_complete»{ "event": "tutorial_complete", "ecommerce": {}}virtualPageView
Sección titulada «virtualPageView»Este es un evento personalizado de Wink — no forma parte del conjunto estándar de eventos GA4. Se envía en cada navegación de página y lleva contexto de dispositivo y sesión. No incluye un objeto ecommerce.
{ "event": "virtualPageView", "device": "Desktop", "deviceAgent": "Mozilla/5.0 ...", "os": "MacOS", "path": "/hotels/grand-resort", "title": "Grand Resort — Wink", "userId": "user_abc123", "startDate": "2026-06-01", "endDate": "2026-06-05", "guests": "2", "rooms": "1"}| Propiedad | Descripción |
|---|---|
device | Tipo de dispositivo detectado — Desktop, Android, iPhone, iPad o similar |
deviceAgent | Cadena cruda del agente de usuario |
os | Sistema operativo detectado — Windows, MacOS, Linux, UNIX |
path | Ruta actual de la página |
title | Título actual de la página |
userId | Identificador de usuario autenticado (omitido si no está logueado) |
startDate | Fecha de check-in de la sesión de búsqueda actual |
endDate | Fecha de check-out de la sesión de búsqueda actual |
guests | Número de huéspedes de la sesión de búsqueda actual |
rooms | Número de habitaciones de la sesión de búsqueda actual |
