Preços de hotéis: ativar a navegação do rastreador e a inclusão de tags de preços

Este guia descreve como marcar seu site com microdados e atributos de navegação para que o rastreador de nível de precisão do preço do Google possa navegar automaticamente pelo funil de reservas e validar as diárias.

Para conferir a especificação técnica completa de todas as propriedades de dados estruturados disponíveis (incluindo impostos, taxas e detalhes do quarto discriminados), consulte a referência de dados estruturados de preços de hotéis.


Use atributos HTML data-nav-* personalizados para anotar elementos interativos e declarar etapas do funil para que o rastreador possa percorrer o fluxo de reservas.

1.1 Declaração de etapa na parte de cima da página (data-nav-stage)

Cada página do funil de reservas que mostra tarifas precisa declarar a sua etapa, anexada à tag <body> ou a uma tag de wrapper principal (como <div>, <section>, ou <main>). Isso informa ao rastreador qual etapa do fluxo de reservas está ativa e ajuda a solucionar problemas mais tarde.

  • data-nav-stage (recomendado) : declara a etapa ativa do funil. Embora não seja estritamente necessário, especificar nomes (por exemplo, "landing", "room-selection", "checkout", "ready-for-payment") ajuda a identificar a etapa ativa durante a validação.

1.2 Indicador de etapa final (data-nav-stage-final)

Na página final que mostra os preços antes da entrada de informações pessoais ou de pagamento do usuário, adicione a flag de etapa final ao contêiner da parte de cima da página junto com uma declaração de etapa (por exemplo, data-nav-stage="ready-for-payment").

  • data-nav-stage-final (Opcional): Definido como "true" (data-nav-stage-final="true") na página de preço final antes do pagamento. Isso indica ao rastreador que essa é a página final e o preço pode ser extraído para validação. Essa página precisa conter a estrutura de preços com a marcação de microdados.

1.3 Atributos de interação de caminho crítico

Nas páginas intermediárias, marque os elementos interativos (botões ou links) que avançam o usuário ao longo do caminho crítico da reserva. Se várias ações forem necessárias na mesma página, especifique a ordem de execução. O rastreador segue a ordem especificada antes de tentar extrair o preço na página final.

Atributo Valor necessário Finalidade
data-nav-criticalpath "true" Marca o botão/link obrigatório em que o rastreador precisa clicar para avançar.
data-nav-interactiontype "CLICK" Declara que uma ação de clique é necessária para avançar o fluxo.
data-nav-interactionorder "1", "2", ... Declara a sequência de execução se várias ações forem necessárias na mesma página.

Exemplo mínimo de navegação

<button data-nav-criticalpath="true"
        data-nav-interactiontype="CLICK"
        data-nav-interactionorder="1">
  Continue
</button>

2. Declaração de preço (microdados)

Na página acessível final do funil de reservas (antes da entrada de informações pessoais ou de pagamento), marque a oferta de preço (uma oferta de preço) com tags de microdados. Apenas uma oferta precisa ser marcada na página, indicando qual tarifa o rastreador extrai, correspondente à tarifa selecionada no Google antes que o usuário chegue ao seu site. Para detalhes sobre como definir parâmetros da página de destino, consulte Variáveis e condições.

Embora o Google ofereça suporte total à hierarquia completa na referência de dados estruturados de preços de hotéis (incluindo tarifas básicas discriminadas, impostos individuais, taxas e detalhes do quarto), o Google também aceita uma árvore de dados estruturados simplificada para facilitar a marcação de preços de hotéis nas suas páginas da Web.

O preço total da estadia é obrigatório para as tarifas disponíveis. Se um itinerário ou quarto estiver indisponível ou esgotado, declare https://schema.org/SoldOut em makesOffer sem um priceSpecification:

<div itemprop="makesOffer" itemscope itemtype="https://schema.org/Offer">
  <meta itemprop="availability" content="https://schema.org/SoldOut"/>
  Sold Out
</div>

Para mais informações, consulte a availability propriedade especificação.

2.1 Árvore de dados estruturados simplificada

Para simplificar a marcação nas páginas de reservas, você só precisa declarar o contêiner raiz do hotel e da reserva, as datas de estadia (YYYY-MM-DD), a ocupação e uma única oferta que contenha o preço total da estadia:

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 Regras de visibilidade críticas

Para garantir a extração confiável de preços, siga estas regras de visibilidade ao marcar seu HTML:

  • O preço total da estadia precisa estar visível: marque o número do preço visível diretamente na página usando itemprop="price". Não use metadados ocultos (<meta>) ou valores de atributos (value="..." ou content="...") para o número do preço.
  • Datas de estadia legíveis por máquina:marque as datas de estadia visíveis na página o máximo possível. Se necessário, você pode usar o atributo content="..." em <span> elementos para fornecer um formato YYYY-MM-DD padrão ao mostrar a data visível (por exemplo, <span itemprop="checkinTime" content="2026-08-10">August 10, 2026</span>).
  • Campos não visíveis: os campos que não são mostrados diretamente na página (como o ID do hotel ou o código da moeda) podem usar <meta> tags ou content="..." atributos.

3. Exemplos

Os exemplos completos a seguir mostram como marcar etapas intermediárias do funil e páginas de finalização de compra com atributos de navegação e microdados.

Exemplo 1: página intermediária com botão clicável

O snippet a seguir demonstra uma página intermediária de seleção de quartos (room-selection) com um único botão de ação de caminho crítico marcado para avançar o fluxo:

<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>

Exemplo 2: página de preço final com indicador de etapa e microdados mínimos

O snippet a seguir demonstra a última página antes do pagamento (ready-for-payment), em que data-nav-stage-final="true" é declarado no wrapper e o preço de estadia autorizado é mostrado de forma visível:

<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. Verificar sua implementação

Antes de implantar as mudanças, teste a marcação e a navegação para garantir que o rastreador possa validar seus dados de preços.

4.1 Verificar o preço e a estrutura de microdados

Você pode usar o validador do Schema.org ou teste de pesquisa aprimorada do Google para inspecionar os microdados extraídos do URL da página ou do conteúdo HTML. Verifique os campos extraídos em relação à especificação na referência de dados estruturados de preços de hotéis, e confira se o elemento itemprop="price" é um item visível na página.

4.2 Verificar a navegação

Para verificar as tags, abra as Ferramentas para desenvolvedores do navegador no Google Chrome clicando com o botão direito do mouse na página da Web e selecionando Inspecionar (ou pressionando F12) para examinar o DOM HTML.

Confira se a implementação atende aos seguintes requisitos de navegação:

  • A etapa da parte de cima da página é declarada: cada página no fluxo de reservas inclui data-nav-stage="..." na tag <body> ou de wrapper raiz, e a página de preço final inclui data-nav-stage-final="true".
  • O caminho crítico está completo: As páginas intermediárias têm os elementos interativos (botões ou links) marcados com data-nav-criticalpath="true", data-nav-interactiontype e data-nav-interactionorder. Se várias ações estiverem presentes, confira se os números de ordem estão definidos corretamente.

4.3 Verificar a visibilidade e a qualidade da marcação

Confira se os microdados atendem a todos os requisitos de estrutura e visibilidade (para detalhes, consulte a árvore de dados estruturados simplificada e as regras de visibilidade críticas):

  • Hierarquia estrita: confira se a marcação segue a ordem de aninhamento necessária (a árvore simplificada ou a especificação completa da referência de dados estruturados ). Elementos fora de ordem ou aninhados incorretamente podem ser perdidos pelo rastreador.
  • Preço visível: itemprop="price" envolve diretamente o preço visível número sem atributos ocultos ou <meta> tags.
  • Datas de estadia legíveis por máquina: checkinTime e checkoutTime contêm padrão YYYY-MM-DD (opcionalmente usando atributos content="...").
  • Marcação direta de elementos:todas as propriedades visíveis (nome do hotel, datas de estadia, ocupação) envolvem o texto visível da página.