En esta guía, se describe cómo etiquetar tu sitio web con microdatos y atributos de navegación para que el rastreador de precisión del precio de Google pueda navegar automáticamente por tu embudo de reservas y validar las tarifas de tus habitaciones.
Para obtener la especificación técnica completa de todas las propiedades de datos estructurados disponibles (incluidos los impuestos, las tarifas y los detalles de las habitaciones desglosados), consulta la referencia de datos estructurados de precios de hoteles.
1. Implementación de navegación (data-nav-*)
Usa atributos HTML data-nav-* personalizados para anotar elementos interactivos y declarar etapas del embudo para que el rastreador pueda recorrer tu flujo de reservas.
1.1 Declaración de la etapa superior de la página (data-nav-stage)
Cada página de tu embudo de reservas que muestra tarifas debe declarar su
etapa, adjunta a la etiqueta <body> o a una etiqueta de contenedor principal (como
<div>, <section>, o <main>). Esto le indica al rastreador qué etapa del
flujo de reservas está activa y ayuda a solucionar problemas más adelante.
data-nav-stage(recomendado): Declara la etapa activa del embudo. Si bien no es estrictamente obligatorio, especificar nombres (por ejemplo,"landing","room-selection","checkout","ready-for-payment") ayuda a identificar la etapa activa durante la validación.
1.2 Indicador de etapa final (data-nav-stage-final)
En la página final que muestra los precios antes de que el usuario ingrese información personal o de pago
información, agrega la marca de etapa final a tu contenedor superior de la página
junto con una declaración de etapa (por ejemplo,
data-nav-stage="ready-for-payment").
data-nav-stage-final(Opcional): Se establece en"true"(data-nav-stage-final="true") en la página de precios final antes del pago. Esto le indica al rastreador que esta página es la final y que se puede extraer el precio para la validación. Esta página debe contener la estructura de precios con el etiquetado de microdatos.
1.3 Atributos de interacción de ruta crítica
En las páginas intermedias, etiqueta los elementos interactivos (botones o vínculos) que hacen avanzar al usuario por la ruta crítica de la reserva. Si se requieren varias acciones en la misma página, especifica el orden de ejecución. El rastreador sigue el orden especificado antes de intentar extraer el precio en la página final.
| Atributo | Valor obligatorio | Objetivo |
|---|---|---|
data-nav-criticalpath |
"true" |
Marca el botón o vínculo obligatorio en el que el rastreador debe hacer clic para avanzar. |
data-nav-interactiontype |
"CLICK" |
Declara que se requiere una acción de clic para avanzar en el flujo. |
data-nav-interactionorder |
"1", "2", ... |
Declara la secuencia de ejecución si se requieren varias acciones en la misma página. |
Ejemplo de navegación mínima
<button data-nav-criticalpath="true"
data-nav-interactiontype="CLICK"
data-nav-interactionorder="1">
Continue
</button>
2. Declaración de precios (microdatos)
En la página accesible final de tu embudo de reservas (antes de ingresar información personal o de pago), etiqueta la oferta de precios (una oferta de precios) con etiquetas de microdatos. Solo se debe etiquetar una oferta en la página, lo que indica qué tarifa extrae el rastreador, que corresponde a la tarifa seleccionada en Google antes de que el usuario llegue a tu sitio web. Para obtener detalles sobre la definición de parámetros de la página de destino, consulta variables y condiciones.
Si bien Google admite por completo la jerarquía completa en la referencia de datos estructurados de precios de hoteles (incluidas las tarifas base desglosadas, los impuestos individuales, las tarifas y los detalles de las habitaciones), Google también acepta un árbol de datos estructurados simplificado para que te resulte más fácil etiquetar los precios de los hoteles en tus páginas web.
El precio total de la estadía es obligatorio para las tarifas disponibles. Si un itinerario o una habitación no están disponibles o están agotados, declara https://schema.org/SoldOut en makesOffer sin un priceSpecification:
<div itemprop="makesOffer" itemscope itemtype="https://schema.org/Offer">
<meta itemprop="availability" content="https://schema.org/SoldOut"/>
Sold Out
</div>
Para obtener más información, consulta la
availability propiedad
especificación.
2.1 Árbol de datos estructurados simplificado
Para simplificar el etiquetado en tus páginas de reservas, solo debes declarar el hotel raíz
y el contenedor de reservas, las fechas de estadía (YYYY-MM-DD), la ocupación y una
sola oferta que contenga el precio total de la estadía:
Hotel / LodgingReservation (Root Container)
├── identifier [Meta/Attribute] Hotel ID
├── name [Visible text] Hotel Name
├── checkinTime / checkoutTime [Visible text with YYYY-MM-DD in content="..."] Stay Dates
├── numAdults / numChildren [Visible text] Occupancy
└── makesOffer (Offer)
└── priceSpecification (CompoundPriceSpecification)
├── priceCurrency [ISO Code, such as "USD"] Currency
└── price [Visible text] Total Stay Price (Taxes & Fees Included)
2.2 Reglas de visibilidad críticas
Para garantizar una extracción de precios confiable, sigue estas reglas de visibilidad cuando etiquetes tu HTML:
- El precio total de la estadía debe ser visible: Etiqueta el número de precio visible directamente
en la página con
itemprop="price". No uses metadatos ocultos (<meta>) ni valores de atributos (value="..."ocontent="...") para el número de precio. - Fechas de estadía legibles por máquinas: Etiqueta las fechas de estadía visibles en la página tanto como sea posible. Si es necesario, puedes usar el atributo
content="..."en<span>elementos para proporcionar un formatoYYYY-MM-DDestándar mientras se muestra la fecha visible (por ejemplo,<span itemprop="checkinTime" content="2026-08-10">August 10, 2026</span>). - Campos no visibles: Los campos que no se muestran directamente en la página
(como el ID del hotel o el código de moneda) pueden usar
<meta>etiquetas ocontent="..."atributos.
3. Ejemplos
En los siguientes ejemplos de extremo a extremo, se muestra cómo etiquetar los pasos intermedios del embudo y las páginas de finalización de compra finales con atributos de navegación y microdatos.
Ejemplo 1: Página intermedia con botón en el que se puede hacer clic
En el siguiente fragmento, se muestra una página intermedia de selección de habitaciones (room-selection) con un solo botón de acción de ruta crítica etiquetado para avanzar en el flujo:
<body data-nav-stage="room-selection">
<!-- Main page content -->
<button class="btn-continue"
data-nav-criticalpath="true"
data-nav-interactiontype="CLICK"
data-nav-interactionorder="1">
Book This Room
</button>
</body>
Ejemplo 2: Página de precios final con indicador de etapa y microdatos mínimos
En el siguiente fragmento, se muestra la última página antes del pago
(ready-for-payment) en la que se declara data-nav-stage-final="true" en el
contenedor y el precio de estadía autorizado se expone de forma visible:
<body data-nav-stage="ready-for-payment" data-nav-stage-final="true">
<!-- Root Container: Co-Typed Hotel & LodgingReservation -->
<div itemscope itemtype="https://schema.org/Hotel https://schema.org/LodgingReservation">
<!-- Hotel Identifier (Can be hidden meta tag) -->
<meta itemprop="identifier" content="grand-view-001" />
<h1 itemprop="name">Grand View Hotel</h1>
<!-- Visible Stay Dates & Occupancy -->
<p>
Check-in: <span itemprop="checkinTime" content="2026-08-10">Aug 10, 2026</span> |
Check-out: <span itemprop="checkoutTime" content="2026-08-15">Aug 15, 2026</span> |
Guests: <span itemprop="numAdults">2</span> Adults, <span itemprop="numChildren">1</span> Child
</p>
<!-- Single Minimal Rate Offer -->
<div itemprop="makesOffer" itemscope itemtype="https://schema.org/Offer">
<div itemprop="priceSpecification" itemscope itemtype="https://schema.org/CompoundPriceSpecification">
<p class="summary-total">
Total Stay Price (Taxes & Fees Included):
<!-- 3-letter ISO Currency Code (can use content="" for hiding the 3-letter currency code while displaying a symbol) -->
<span itemprop="priceCurrency" content="EUR">€</span>
<!-- VISIBLE TOTAL STAY PRICE (Directly wrapped, no hidden attributes) -->
<span itemprop="price">650.00</span>
</p>
</div>
</div>
</div>
</body>
4. Verifica tu implementación
Antes de implementar los cambios, prueba el lenguaje de marcado y el etiquetado de navegación para asegurarte de que el rastreador pueda validar correctamente tus datos de precios.
4.1 Verifica la estructura de precios y microdatos
Puedes usar el
Validador de Schema.org
o
la Prueba de resultados enriquecidos de Google
para inspeccionar los microdatos extraídos de la URL de tu página o del contenido HTML. Verifica
los campos extraídos con la especificación en la
referencia de datos estructurados de precios de hoteles,
y asegúrate de que tu itemprop="price" elemento sea un elemento visible en la página.
4.2 Verifica la navegación
Para verificar tus etiquetas, abre las Herramientas para desarrolladores del navegador en Google Chrome. Para ello, haz clic con el botón derecho en tu página web y selecciona Inspeccionar (o presiona F12) para examinar el DOM de HTML.
Confirma que tu implementación cumpla con los siguientes requisitos de navegación:
- Se declara la etapa superior de la página: Cada página del flujo de reservas
incluye
data-nav-stage="..."en su etiqueta<body>o de contenedor raíz, y la página de precios final incluyedata-nav-stage-final="true". - La ruta crítica está completa: Las páginas intermedias tienen sus elementos interactivos (botones o vínculos) marcados con
data-nav-criticalpath="true",data-nav-interactiontypeydata-nav-interactionorder. Si hay varias acciones, asegúrate de que los números de pedido estén configurados correctamente.
4.3 Verifica la visibilidad y la calidad del lenguaje de marcado
Confirma que tus microdatos cumplan con todos los requisitos de estructura y visibilidad (para obtener detalles, consulta el árbol de datos estructurados simplificado y las reglas de visibilidad críticas):
- Jerarquía estricta: Asegúrate de que tu lenguaje de marcado siga el orden de anidación requerido (ya sea el árbol simplificado o la especificación completa de la referencia de datos estructurados ). El rastreador podría omitir los elementos fuera de orden o anidados de forma incorrecta.
- Precio visible:
itemprop="price"contiene directamente el número de precio visible sin atributos ocultos ni etiquetas<meta>. - Fechas de estadía legibles por máquinas:
checkinTimeycheckoutTimecontienen estándarYYYY-MM-DD(opcionalmente, se usan atributoscontent="..."). - Etiquetado directo de elementos: Todas las propiedades visibles (nombre del hotel, fechas de estadía, ocupación) contienen texto visible de la página.