你可以運用房型套裝組合為單一房源定義多個房型,也能將房型的行程與費率功能 (費率隨附的額外服務和銷售條件) 相互搭配,而不僅限於標準價格。
重要概念和工作流程
房型套裝組合可讓您提供實體房型與不同服務套裝方案的額外組合。
範例
下圖顯示電腦和行動裝置上的 Room 套裝組合範例:
含圖片的房型套裝組合

這個範例是 Room 套裝組合的行動版,包含所需入住人數的所有房型,以及各房型的圖片。
注意:沒有圖片的房型組合會改用床的預留位置圖片。
費率功能
下圖顯示費率功能的範例:
搜尋結果中顯示的客房組合和房價功能,與標準房價的選取程序相同。
房型套裝組合
您可以在交易訊息中定義房型套裝組合和房價功能。交易訊息的根元素為 <Transaction>
。
「交易」訊息的結構取決於您執行的動作:定義房型組合或房價功能的相關中繼資料,或是更新房型組合的價格或供應情形。
- 中繼資料
- 在
<PropertyDataSet>
元素中,使用<PackageData>
定義房型組合和費率功能中繼資料。詳情請參閱「定義房間和套件中繼資料」。房型套裝組合會使用現有的<RoomData>
元素來描述實體房間。 - 價格與空房資訊
- 在每個套裝行程/行程組合的
<Result>
中,使用<RoomBundle>
元素定義房型套裝組合的價格和供應情形。詳情請參閱「定義價格和供應情形」。
如果未使用房型套裝組合,則必須提供基本房價、稅金和其他費用 (位於 <Result>
下方),如果使用房型套裝組合,則可移除這些資訊。如果您使用正式帳戶導入 Room Bundles,請按照下列步驟操作:
在
<Result>
下方加入基本房型的房價、稅金和其他費用,並新增與基本房型套裝組合相符的房型套裝組合。如有需要,請在同一
<Result>
區塊中,為該房源的其他房型或不同服務套裝組合定義其他房型套裝組合。房型套裝組合推出後,請移除基本房型的房價、稅金和其他費用。
房型套裝組合中繼資料
定義房型套裝組合和房價功能時,通常會預先定義房型套裝組合的說明、房價包含的其他服務,以及其他資訊。這項資訊稱為「會議室組合」中繼資料。然後在價格更新中參照這項中繼資料,但不要將其納入價格更新訊息。
定義 Room Bundle 時,請使用現有的 <RoomData>
元素描述實體房型,並使用 <PackageData>
元素描述費率功能和條款,這些內容不屬於實體房型描述。
使用 <RoomData>
和 <PackageData>
元素可大幅縮減飯店清單和飯店價格動態饋給的大小,因為這會減少交易訊息中傳送的重複資料量。
舉例來說,每個行程通常都會重複顯示房間名稱和說明等資料。您可以使用 <RoomData>
和 <PackageData>
元素定義這類資料一次。然後,系統會將行程專屬的 Room Bundle 資料與儲存的房型和套裝行程定義合併,並顯示給使用者。
Google 會比對中繼資料與行程專屬資料,然後顯示廣告內容。系統會進行特殊處理,合併 <RoomData>
和 <PackageData>
元素中的名稱和說明,以便在 <RoomData>
中描述實體房型,並在 <PackageData>
中提供房價功能和套裝行程詳細資料。
如果為單一房型或房型組合定義房型資料和套裝行程資料,Google 會在廣告輸出內容中同時納入這兩項資料,並以連字號分隔。
相片指南
傳送房間相片時,請遵循下列規範,確保相片會向使用者顯示:
請提供各房型的相片,包括無障礙客房的相片,例如設有各種衛浴設備的無障礙客房,像是可供輪椅進出的淋浴間。
請提供至少四張房間相片,以及至少一張浴室相片。
相片應為房間本身,而非房源。最重要的相片是床、整個房間、浴室、起居空間、房內景觀 (同一張相片中包含房內其他部分),以及陽台、中庭或露台 (如適用)。
此外,拍攝書桌、廚房、咖啡/茶飲沖泡設備和獨特客房特色,也有助於提升房源品質。
請避免上傳人物和房源相片,例如外觀或房源設施、觀光/旅遊和食物。
避免拍攝物體的特寫鏡頭,例如高腳杯的特寫。
避免出現品牌和品牌宣傳元素,但如果照片是拍攝整個浴室區域,則可包含標示或品牌盥洗用品。相片中不應出現大量文字、標誌或浮水印。
提供視野寬廣的標準橫向相片,避免使用魚眼效果和扭曲的相片。以最高解析度拍攝相片,提升排名。你不需要提交各種解析度的同一張相片。
資料優先順序
系統會從所有來源收集並合併 Room Bundle 資料,並使用優先順序規則,為特定飯店、行程和 Room Bundle 產生最終資料。優先順序由低至高如下:
- (最低) 合作夥伴資料
- 房源資料
<RoomData>
,其中<RoomID>
與<RoomBundle>
區塊中的<RoomID>
相符<PackageData>
,其中<PackageID>
與<RoomBundle>
區塊中的<PackageID>
相符- (最高)
<RoomBundle>
定義價格和供應情形
如要定義房型套裝組合的價格和供應情形,請在每個套裝組合或行程組合的交易訊息中使用 <RoomBundle>
元素。<RoomBundle>
元素應位於 <Result>
元素內。以下顯示兩個 <RoomBundle>
元素的程式碼範例。請注意,在本範例中,這兩個 <RoomBundle>
元素會使用 <RoomID>
和 <PackageID>
參照房間和套件中繼資料。
對於每個 <Result>
,所含的房型組合集會覆寫該屬性或行程組合的現有組合。如果未在 <Result>
元素中定義任何房型套裝組合或費率功能,系統會移除所有房型套裝組合,搜尋結果中只會顯示該飯店或行程的基本房型。
請務必使用 <Name>
等元素,讓房型組合對潛在顧客更具吸引力,並確保這些元素與飯店到達網頁相符。在本例中,您會在 metadata 中定義名稱和其他說明資訊。
<RatePlanID>
為選用項目,代表房型和套裝組合的專屬 ID。強烈建議使用 RatePlanID
做為變數,建構動態到達網頁 (舊稱銷售點) 網址。為獲得最佳成效,長度應在 50 個字元以內。詳情請參閱使用變數和條件。
房型套裝組合的選用元素如下:
<Baserate>
<Tax>
<OtherFees>
<RoomID>
<PackageID>
<Occupancy>
<OccupancyDetails>
在正式帳戶中導入 Room Bundle 時,請在啟用 Room Bundle 後移除 <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>
定義房間和套件中繼資料
如要定義 Room Bundle 中繼資料,請在交易訊息的 <PropertyDataSet>
元素內使用 <PackageData>
和 <RoomData>
元素。
您可以在與價格和供應情形資料分開的交易訊息中,定義房型和套裝行程中繼資料。預先定義這項資料後,價格更新就不必包含重複資訊,例如每個行程中每個房型或套裝組合的說明、相片網址、設施和其他資料。
Google 會儲存中繼資料,並在顯示廣告時插入。你隨時可以透過新的交易訊息更新房源和套裝組合中繼資料。
在交易訊息中,您會在每個區塊設定套裝行程 ID 和房型 ID,然後在價格更新的 <Result>
區塊中參照這些 ID。
如果房型和套裝行程資料有異動 (例如在房源中新增房型),請傳送含有更新房型和套裝行程資料的新交易訊息,Google 就會以新資料取代現有的房型或套裝行程中繼資料。
Google 建議您在初始設定期間定義中繼資料。預先定義中繼資料後,您只需要在價格更新中參照 <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>
入住人數和容量
定義房型組合時,請務必瞭解入住人數和容納人數的差異:
- 可住人數
- 房型套裝組合適用的房客人數。舉例來說,「蜜月套裝方案」的入住人數為兩人。您可以使用
<PackageData>
或<RoomBundle>
元素的<Occupancy>
子元素,設定套裝組合入住人數的值。 - 容量
- 會議室可容納的人數上限。客房的容納人數一律等於或高於入住人數。舉例來說,飯店的「蜜月套房」最多可入住六人,但你為兩位房客設定套裝組合價格。您可以使用
<RoomData>
元素的<Capacity>
子元素,設定套件容量的值。
為房型套裝組合定價時,必須提供套裝組合適用的房客人數價格 (套裝組合 <Occupancy>
元素中指定的值)。如果 <Occupancy>
設為 2,則該套裝組合的價格必須為兩人價格。你無法將 <Occupancy>
設為四位房客,並為兩位房客設定套裝組合的價格。
共用客房
您也可以在房型組合中使用入住人數和容納人數,設定共用房型 (例如青年旅館) 的價格。舉例來說,如要為有 8 張床的宿舍房設定每人價格,請將入住人數設為 1
,容量設為 8
,並在 <RoomData>
名稱中註明。查看範例。
更新房型套裝組合
本節說明如何移除已停售的房型組合,以及如何更新現有房型組合的價格。
移除房型套裝組合
房型套裝組合的移除方式與飯店價格不同。
如要從房源資訊中移除房型或行程組合,請將 <Result>
元素的 <Baserate>
設為 -1
。如要移除特定房型或行程的房型組合,請從交易訊息的 <Result>
區塊中移除 <RoomBundle>
元素。
資料動態饋給中的房型組合視為一組,數量從 0 到數十個不等。將 Room Bundles 寄送給 Google 時,請寄送目前完整的套件組。您不會變更個別房型套裝組合的值,將先前可用的房型標示為無法使用。最新交易訊息中的任何組合集都會取代目前的組合集。
舉例來說,假設有 A、B、C 和 D 四個套裝組合。您首先傳送訊息,定義房型組合 A、B、C 和 D。如果套裝組合 B 售完,請只重新傳送套裝組合 A、C 和 D 的整組資料。如果所有房型套裝組合都已售完,請傳送空白的房型套裝組合。
價格調整
如要變更房型套裝組合的價格,請在 <Result>
元素中設定新的 <Baserate>
。
每次更新交易訊息中的房型/行程 <Result>
區塊時,都必須為每個 <Result>
包含完整的可用房型套裝組合。Google 會以新套組取代現有 Room Bundles 套組。如果沒有在 <Result>
中加入任何房型套裝組合,Google 會移除該房型或行程的所有房型套裝組合。
中繼資料更新
您可以使用 Google 的 <Query>
回應,更新 Room Bundle 中繼資料。
您會使用交易訊息回覆查詢訊息,定義指定飯店的客房和套裝行程中繼資料。詳情請參閱「查詢訊息」。