条件の組み合わせ

条件の組み合わせを使用すると、1 つの宿泊施設に対して複数の客室タイプを定義したり、標準料金に加えて、客室の旅行プランと料金機能(販売料金と条件を伴う追加サービス)を組み合わせてユーザーに提供したりできます。

主なコンセプトとワークフロー

条件の組み合わせを使用すると、実際の客室タイプとさまざまなサービス パッケージの組み合わせを提供できます。

次の図は、条件の組み合わせの例を示しています。

この例では、最初のバンドルが基本客室で、大人 1 名のみ割引が適用されます。2 つ目は大人 3 名まで宿泊可能な 異なる客室タイプです3 つ目は同じプロパティ内の 別の客室タイプです4 つ目は、ベースルームの「プレミアム」パッケージで、無料の朝食や後日チェックアウトなどの設備が含まれている場合があります。

次の図は、料金の特徴の例を示しています。

条件の組み合わせと料金に関する機能を検索結果に表示するには、標準の客室料金と同じ選択プロセスが適用されます。

条件の組み合わせ

条件の組み合わせと料金機能は、トランザクション メッセージで定義します。Transaction メッセージのルート要素は <Transaction> です。

Transaction メッセージの構造は、条件の組み合わせや料金機能に関するメタデータの定義、条件の組み合わせの料金設定や空室状況の更新など、何を実行するかによって異なります。

メタデータ
<PropertyDataSet> 要素の <PackageData> を使用して、条件の組み合わせと料金情報のメタデータを定義します。詳しくは、客室とパッケージのメタデータを定義するをご覧ください。条件の組み合わせでは、物理的な客室の説明として既存の <RoomData> 要素を使用します。
料金と空室状況
パッケージと宿泊プランの組み合わせごとに <Result><RoomBundle> 要素を使用して、条件の組み合わせの料金と空室状況を定義します。詳細については、料金と可用性を定義するをご覧ください。

基本客室の料金、税金、その他の手数料は、条件の組み合わせと併用しない場合は <Result> で必須ですが、条件の組み合わせで使用する場合は削除できます。公開中のアカウントを使用して条件の組み合わせを実装する手順は次のとおりです。

  1. 基本客室の料金、税金、その他の手数料を <Result> に含め、基本条件の組み合わせと一致する条件の組み合わせを 1 つ追加します。

  2. 必要に応じて、その宿泊施設の他の客室タイプや異なるサービス パッケージについて、同じ <Result> ブロック内で条件の組み合わせを追加で定義します。

  3. 条件の組み合わせが開始されたら、基本客室の料金、税金、その他の手数料を削除します。

条件の組み合わせのメタデータ

条件の組み合わせと料金機能を定義する際は、通常、条件の組み合わせに関する説明、料金に含まれる追加サービス、その他の情報を事前に定義します。この情報は条件の組み合わせのメタデータと呼ばれます。このメタデータは料金の更新で参照しますが、料金の更新メッセージには含めないでください。

条件の組み合わせを定義する際は、物理的な客室の説明には既存の <RoomData> 要素を使用し、物理的な客室の説明に含まれない料金機能や条件には <PackageData> 要素を使用します。

<RoomData> 要素と <PackageData> 要素を使用すると、トランザクション メッセージで送信される繰り返しデータの量が削減されるため、ホテルリストとホテル料金フィードのサイズを大幅に削減できます。

たとえば、客室の名前や説明などのデータは、通常、旅行プランごとに繰り返されます。<RoomData> 要素と <PackageData> 要素を使用して、このタイプのデータを 1 回定義できます。旅行プラン固有の条件の組み合わせデータは、エンドユーザーに表示するため、保存されている客室とパッケージの定義と統合されます。

Google は、お客様のメタデータと旅行プラン固有のデータを照合して、広告のコンテンツをレンダリングします。<RoomData> 要素と <PackageData> 要素の名前と説明を組み合わせる特別な処理があります。これにより、物理的な客室を <RoomData> で記述し、料金機能とパッケージの詳細を <PackageData> で記述できます。

1 つの客室または条件の組み合わせに対して客室データとパッケージ データの両方を定義した場合、Google は両方をハイフンで区切って広告出力に含めます。

写真に関するガイドライン

客室の写真を送信する際は、次のガイドラインを遵守して写真がユーザーに表示されるようにしてください。

  • バリアフリールームの写真(ロールイン シャワーなど、さまざまなバスルーム設備を備えた指定されたバリアフリーの部屋など)を含む、客室タイプごとの写真を送信します。

  • 部屋の写真を 4 枚以上、浴室の写真を 1 枚以上掲載してください。

  • 写真は、宿泊施設の写真ではなく、部屋の写真を使用する必要があります。最も重要な写真は、ベッド、部屋全体、浴室、リビング スペース、部屋からの眺め(部屋の他の部分は同じ写真に写っている)、該当する場合はバルコニー、パティオ、テラスです。

    また、デスク、キッチン、コーヒー メーカー、部屋の設備などを写真に収めると便利です。

  • 人物や施設の写真(外観や施設の設備、観光、観光、食事など)は避けてください。

  • 脚付きグラスのクローズアップなど、被写体のクローズアップ写真は避けてください。

  • ブランドやブランドは使用しないでください。ただし、ブランドやブランドのアメニティは、浴室全体を撮影する写真に含めても問題ありません。写真に長いテキスト ブロック、ロゴ、透かしを配置しないでください。

  • 画角の広い標準的な横向き(横向き)の写真を用意し、魚眼レンズや歪んだ写真は避けてください。ランキングを上げるために、最高の解像度で写真を撮影します。同じ写真をさまざまな解像度で送信する必要はありません。

データの優先度

条件の組み合わせデータはすべてのソースから収集され、優先順位ルールを使用して組み合わされて、特定のホテル、旅行プラン、条件の組み合わせの最終データが生成されます。優先順位が低いものから高いものの順に、次の順序で並べられています。

  1. (最小)パートナー データ
  2. 宿泊施設データ
  3. <RoomData>。ここで、<RoomID><RoomBundle> ブロックの <RoomID> と一致します。
  4. <PackageData>。ここで、<PackageID><RoomBundle> ブロックの <PackageID> と一致します。
  5. (最高)<RoomBundle>

料金と空室状況を定義する

条件の組み合わせの料金と空室状況を定義するには、パッケージまたは旅行プランの組み合わせごとに、トランザクション メッセージの <RoomBundle> 要素を使用します。<RoomBundle> 要素は <Result> 要素内に含める必要があります。2 つの <RoomBundle> 要素のサンプルコードを以下に示します。この例では、2 つの <RoomBundle> 要素が <RoomID><PackageID> を使用して客室とパッケージのメタデータを参照しています。

<Result> ごとに、含まれている条件の組み合わせのセットによって、そのプロパティまたは旅行プランの組み合わせの既存のセットが上書きされます。<Result> 要素で条件の組み合わせや料金の特徴を定義していない場合、すべての条件の組み合わせが削除され、そのホテルや旅行プランの基本的な客室のみが検索結果に表示されます。

<Name> などの要素を使用して、条件の組み合わせを見込み顧客にとってさらに魅力的にし、ホテルのランディング ページと一致させます。この例では、名前などの説明情報をメタデータで定義します。

<RatePlanID> は省略可能で、客室とパッケージの組み合わせの一意の識別子を表します。動的なランディング ページ(旧 POS)の URL を作成するには、RatePlanID を変数として使用することを強くおすすめします。詳しくは、変数と条件の使用をご覧ください。

条件の組み合わせでは、次の要素は省略可能です。

<Baserate>
<Tax>
<OtherFees>
<RoomID>
<PackageID>
<Occupancy>
<OccupancyDetails>

公開アカウントに条件の組み合わせを実装する場合は、条件の組み合わせを有効にした後、<Baserate> を削除します。

<Result>
  <!-- Note: When using Room Bundles, the top level result price is no
       longer necessary. -->
  <Property>180054</Property>
  <Checkin>2017-10-07</Checkin>
  <Nights>2</Nights>
  <!-- Base Room Bundle -->
  <RoomBundle>
    <RoomID>060773</RoomID>
    <PackageID>P54321</PackageID>
    <Baserate currency="USD">199.99</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <!-- RatePlanID is optional and represents the unique identifier for a
    room and package data combination. We strongly recommend using RatePlanID
    as a variable to build your dynamic landing page (formerly Point of Sale)
    URL. For details, see Using Variables and Conditions. -->
    <RatePlanID>060773-P54321</RatePlanID>
  </RoomBundle>
  <!-- Premium Room Bundle -->
  <RoomBundle>
    <RoomID>436233</RoomID>
    <PackageID>P12345</PackageID>
    <!-- Price for 4 ("occupancy") -->
    <Baserate currency="USD">298.88</Baserate>
    <Tax currency="USD">42.12</Tax>
    <OtherFees currency="USD">10.00</OtherFees>
    <RatePlanID>436233-P12345</RatePlanID>
  </RoomBundle>
</Result>

客室とパッケージのメタデータを定義する

条件の組み合わせのメタデータを定義するには、トランザクション メッセージの <PropertyDataSet> 要素内で <PackageData> 要素と <RoomData> 要素を使用します。

客室とパッケージのメタデータは、料金と空室状況のデータとは別のトランザクション メッセージで定義します。このデータを事前に定義しておくと、料金の更新に、すべての旅行プランのすべての客室やパッケージについて、説明、写真の URL、設備、その他のデータなど、同じ情報を繰り返し含める必要はありません。

Google はメタデータを保存し、広告が表示されるときにそれを広告に挿入します。客室とパッケージのメタデータは、新しいトランザクション メッセージを使用していつでも更新できます。

Transaction メッセージでは、各ブロックにパッケージ ID と客室 ID を設定し、料金更新情報の <Result> ブロックでそれらを参照します。

客室とパッケージのデータが変更された場合(たとえば、プロパティに新しい客室タイプが追加された場合、更新された客室とパッケージのデータを含む新しいトランザクション メッセージを送信した場合)、客室またはパッケージに関する既存のメタデータが新しいデータに置き換えられます。

メタデータは、初期設定時に定義することをおすすめします。メタデータを定義しておけば、これらの情報をすべて再度含めるのではなく、<RoomID><PackageID> の値を料金設定の更新で参照するだけで済みます。Google はこれらの ID を使用して、客室および条件の組み合わせと保存されているメタデータを照合します。これにより、トランザクション メッセージの全体的なサイズを大幅に削減できます。

客室または旅行プランの組み合わせの料金は、客室またはパッケージの説明よりも頻繁に変更されるため、メタデータを一度定義して参照すると、トランザクション メッセージをより効率的に使用できます。また、データをインラインで定義するのではなく、メタデータを使用することで、客室の説明の不一致などのエラーを排除できます。

メタデータと料金を別々に定義する場合に推奨される最も効率的な方法を以下に示します。

<!-- Efficient method of defining Room Bundles -->
<!----- Occupancy of 2 and 4 example ------>

<Transaction timestamp="2019-04-18T16:20:00-04:00" id="12345678">
  <!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
  <!-- Note: Once defined it does not have to be repeated for future Transaction Messages. -->
  <!--       PropertyDataSets can also be defined and sent in their own Transaction Message -->
  <!--       separately from pricing. Google can be configured to pull just PropertyDataSets -->
  <!--       once per day (or on a predefined frequency). -->
  <PropertyDataSet>
    <Property>180054</Property>
    <!-- Can be reused by multiple Room Bundles -->
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Queen Room - Non-Smoking" language="en"/>
        <Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <!-- Room can accommodate 4, but bundle is for 2 -->
      <Capacity>4</Capacity>
      <PhotoURL>
        <URL>http://www.foo.com/static/bar/imageQueen.jpg</URL>
        <Caption>
          <Text text="A bright and breezy way to enjoy your mornin'
            cuppa tea." language="en"/>
          <Text text="Une façon lumineuse et aérée pour profiter
            de votre journée tasse de thé." language="fr"/>
        </Caption>
      </PhotoURL>
    </RoomData>
    <RoomData>
      <RoomID>436233</RoomID>
      <Name>
        <Text text="Premium King Room - Non-Smoking" language="en"/>
        <Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <!-- Room can accommodate 4 and bundle is for 4 -->
      <Capacity>4</Capacity>
      <PhotoURL>
        <URL>http://www.foo.com/static/bar/imageKing.jpg</URL>
        <Caption>
          <Text text="A bright and breezy way to enjoy your mornin'
            cuppa tea." language="en"/>
          <Text text="Une façon lumineuse et aérée pour profiter
            de votre journée tasse de thé." language="fr"/>
        </Caption>
      </PhotoURL>
    </RoomData>
    <!-- Can be reused by multiple Room Bundles -->
    <PackageData>
      <PackageID>P54321</PackageID>
      <Occupancy>2</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="7"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
    <PackageData>
      <PackageID>P12345</PackageID>
      <Occupancy>4</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="1"
           refundable_until_time="18:00:00"/>
      <BreakfastIncluded/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
  </PropertyDataSet>

    <!-- Efficient method of defining Room Bundles -->
    <!-- Part 2: Reference RoomData and PackageData through ID -->
  <Result>
    <Property>180054</Property>
    <Checkin>2017-10-07</Checkin>
    <Nights>2</Nights>

    <!-- Base Room Bundle -->
    <RoomBundle>
      <RoomID>060773</RoomID>
      <PackageID>P54321</PackageID>
      <Baserate currency="USD">199.99</Baserate>
      <Tax currency="USD">25.12</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <!-- RatePlanID is optional and represents the unique identifier for a
      room and package data combination. We strongly recommend using RatePlanID
      as a variable to build your dynamic landing page (formerly Point of Sale)
      URL. For details, see Using Variables and Conditions. -->
      <RatePlanID>060773-P54321</RatePlanID>
    </RoomBundle>
    <!-- Premium Room Bundle -->
    <RoomBundle>
      <RoomID>436233</RoomID>
      <PackageID>P12345</PackageID>
      <!-- Price for 4 ("occupancy") -->
      <Baserate currency="USD">298.88</Baserate>
      <Tax currency="USD">42.12</Tax>
      <OtherFees currency="USD">10.00</OtherFees>
      <RatePlanID>060773-P12345</RatePlanID>
    </RoomBundle>
    <!-- Continue providing all available RoomBundle rates under matched
         property for any other occupancies -->
  </Result>
</Transaction>

占有率と収容人数

条件の組み合わせを定義する際は、定員と収容人数の違いを理解する必要があります。

利用率
条件の組み合わせの適用対象となる宿泊客の数。たとえば、「ハネムーン パッケージ」の定員は 2 名です。パッケージの定員数の値は、<PackageData> 要素または <RoomBundle> 要素の <Occupancy> 子要素を使用して設定します。
容量
客室が物理的に収容できる最大人数。客室の収容人数は、常に定員以上となります。たとえば、ホテルの「ハネムーン スイート」の最大定員は 6 名ですが、セット料金には 2 名分の料金が設定されています。パッケージの容量の値は、<RoomData> 要素の <Capacity> 子要素を使用して設定します。

条件の組み合わせの料金を設定する際は、その条件の組み合わせが対象とする宿泊客の数(条件の組み合わせの <Occupancy> 要素で指定した値)の料金を指定する必要があります。<Occupancy> が 2 に設定されている場合、そのパッケージの料金は 2 人分である必要があります。<Occupancy> を 4 名に設定しても、2 名分のバンドルの料金を設定することはできません。

共有ルーム

また、条件の組み合わせの定員と収容人数を使用して、共用の宿泊施設(ホステルなど)の料金を設定することもできます。たとえば、ベッド 8 台があるドミトリーに 1 人あたりの料金を設定するには、定員を 1、収容人数を 8 に設定し、<RoomData> という名前でそれを指定します。例をご覧ください

条件の組み合わせの更新

このセクションでは、利用できなくなった条件の組み合わせを削除する方法と、既存の条件の組み合わせの料金を更新する方法について説明します。

条件の組み合わせの削除

条件の組み合わせを削除する方法がホテルの料金とは異なります。

客室または旅行プランの組み合わせを広告枠から削除するには、<Result> 要素の <Baserate>-1 に設定します。特定の客室または宿泊プランの条件の組み合わせを削除するには、トランザクション メッセージの <Result> ブロックから <RoomBundle> 要素を削除します。

データフィード内の条件の組み合わせはセットとみなされ、0 ~ 10 の任意の数があります。条件の組み合わせを Google に送信すると、現在のすべての条件の組み合わせが送信されます。個々の条件の組み合わせの値を変更して、以前利用可能だったものを利用不可としてマークすることはできません。最新の Transaction メッセージ内にあるバンドルのセットが、現在のセットを置き換えます。

たとえば、バンドル A、B、C、D があるとします。まず、条件の組み合わせ A、B、C、D のセットを定義するメッセージを送信します。その後、バンドル B が売り切れた場合は、バンドル A、C、D のみを含むセット全体を再送信します。すべての条件の組み合わせが完売している場合は、空の条件の組み合わせ一式を送信します。

価格調整

条件の組み合わせの料金を変更するには、<Result> 要素で新しい <Baserate> を設定します。

トランザクション メッセージで客室や宿泊プランの <Result> ブロックを更新するたびに、各 <Result> で利用可能な条件の組み合わせをすべて含める必要があります。既存の条件の組み合わせのセットが新しい条件の組み合わせに置き換えられます。<Result> に条件の組み合わせが含まれていない場合、その客室または宿泊プランのすべての条件の組み合わせが削除されます。

メタデータの更新

条件の組み合わせのメタデータは、Google からの <Query> に対するレスポンスで更新します。

Query メッセージには、指定したホテルの客室とパッケージのメタデータを定義するトランザクション メッセージで応答します。詳細については、クエリ メッセージをご覧ください。