飯店廣告 - 目錄和摘要

若要在 Facebook 推廣飯店,您必須與 Facebook 分享飯店相關資訊。分享方式為建立飯店目錄,然後填入飯店資訊。填寫及更新目錄資料的方式有 2 種:

您可在商務管理工具中建立和管理飯店目錄。

若要使用 API 管理目錄,請執行以下步驟:

  1. 建立飯店目錄
  2. 使用飯店目錄建立商品組合
  3. 將目錄連結至事件來源

飯店摘要 - 將飯店上傳至 Facebook

飯店摘要為內含飯店庫存資料的檔案。檔案中每一行或每一個項目都代表單一家飯店。您可使用一個以上的飯店摘要,只要所有摘要合計起來包含完整的飯店庫存即可。

支援的飯店摘要格式

CSV

CSV 範例 | TSV 範例(扁平化)| TSV 範例(JSON 樣式)

  • 第一列必須按照指定值的順序列出所選欄位名稱。後續資料列才會出現每家飯店的對應值。
  • 包含空白字元或逗號的欄位應以半形雙引號("")括住。
  • 若是巢狀或多重值欄位(例如 addressneighborhoodimage),可使用 JSON 編碼值代表,或以一組使用 JSON 路徑語法標記的「扁平化」純文字欄代表(例如 address.cityneighborhood[0]image[0].urlimage[0].tag[0]image[0].tag[1])。您可以在同一個檔案中交替使用這兩種慣例。

XML

XML 範例

  • <listings> XML 根節點包圍著一系列的 <listing> 節點,每一組節點代表了一家飯店。
  • 檔案開頭必須是有效的 <?xml 宣告標籤。

摘要剖析器會自動偵測 UTF8UTF16UTF32 文字編碼,且如果遇到未預期的位元組序列,會預設為 LATIN1。您可在欄位值提供任何語言的文字,不過,欄位名稱必須完全和以下指定的英文名稱相同。

支援的欄位 — 飯店廣告

下列支援欄位是專為新增至商品目錄的項目而設計。

若是本地化目錄,請參閱支援的飯店廣告欄位

欄位和類型說明

hotel_id

類型:字串

必要項目

長度上限:100

飯店在目錄內的專屬識別碼。此編號會與 hotel 應用程式及像素事件中所提供的任何 content_ids 一致。提示:為提升效能,請避免在此專屬識別碼欄位中使用空格。請勿使用重複的編號。

範例:FB_hotel_1234

room_id

類型:字串

新增飯店客房資訊時需要此欄位

請輸入飯店房型的專屬編號。字元上限:100 範例FB_hotel_room_1234

name

類型:字串

必要項目

飯店最常用的名稱。

範例:Facebook Hotel

description

類型:字串

必要項目

大小上限:5000

飯店的簡要說明。

範例:Only 30 minutes away from San Francisco.

checkin_date

類型:字串

新增飯店客房資訊時的必要欄位

入住飯店的入住日期。自摘要上傳日期起最多可加到 180 天。使用 ISO-8601 標準(YYYY-MM-DD)。

範例:2017-08-01

length_of_stay

類型:字串

新增飯店客房資訊時的必要欄位

入住飯店的過夜次數。

範例:7

base_price

類型:字串

新增飯店客房資訊時的必要欄位

飯店客房的每晚基本價格。請務必在價格中加入幣別(例如 USD 代表美元)。以費用格式標示價格,後面接著 ISO 幣別代碼,費用與幣別之間空一格。

範例:199.00 EUR

price

類型:字串

新增飯店客房資訊時的必要欄位

飯店入住總價,根據 checkin_datelength_of_stay。以成本格式標示價格,後面接著 ISO 幣別代碼,成本和幣別之間需有一個空格。

範例:1393.00 USD

tax

類型:字串

新增飯店客房資訊時的必要欄位

價格適用的稅率。以費用格式標示價格,後面接著 ISO 幣別代碼,費用與幣別之間空一格。

範例:14.00 USD

fees

類型:字串

新增飯店客房資訊時的必要欄位

價格適用的服務費。以費用格式標示價格,後面接著 ISO 幣別代碼,費用與幣別之間空一格。

範例:253.00 USD

url

類型:字串

必要項目

可預訂飯店客房的外部網站連結。您也可以使用 template_url_spec 指定廣告層級的網址。廣告層級網址的優先順序高於摘要中的網址。

範例:https://www.facebook.com/hotel

image[0].url

類型:物件

請參閱圖像物件參數

image[0].tag

類型:物件

請參閱圖像物件參數

brand

類型:字串

必要項目

連鎖飯店的品牌名稱。

範例:Hilton

address

類型:物件

請參閱地址物件參數

neighborhood[0]

類型:字串

必要項目

允許的社區上限:20

飯店所在的社區。如果社區不只一個,請為每個社區新增額外的欄,並在每個欄名中使用 JSON-path 語法來表示社區數量。

範例:Belle Haven

latitude

類型:浮點數

必要項目

飯店的緯度。

範例:37.484100

longitude

類型:浮點數

必要項目

飯店的經度。

範例:-122.148252

sale_price

類型:字串

選用項目

飯店每晚入住的促銷價格,根據 checkin_datelength_of_stay。針對飯店原價進行折扣廣告時使用此欄位。請務必在價格中加入幣別(例如 USD 代表美元)。確認飯店的 sale_price 低於其 base_price。以費用格式標示價格,後面接著 ISO 幣別代碼,費用與幣別之間空一格。

範例:149.00 USD

guest_ratings.score

類型:物件

請參閱房客評分物件參數

guest_ratings.rating_system

類型:物件

請參閱房客評分物件參數

star_rating

類型:浮點數

請參閱房客評分物件參數

loyalty_program

類型:字串

選用項目

入住飯店即可累積點數的會員集點計畫。

範例:Premium program

margin_level

類型:整數

選用項目

飯店的獲利能力指標,值為 1 到 10。

範例:9

phone

類型:字串

選用項目

飯店的主要電話號碼。

範例:+61 296027455

applink

類型:物件

選用項目

使用應用程式連結,直達行動應用程式中飯店詳細資料頁面的深層連結。您可以按照優先順序(由高至低)指定深層連結:

  1. 廣告層級使用 template_url_spec
  2. 在此摘要中使用 Applink 物件
  3. 新增應用程式連結中繼標籤至您的網站。

深入瞭解產品深層連結

priority

類型:整數

選用項目

飯店的優先順序指標,值為 0(最低優先順序)到 5(最高優先順序)。範例:5

category

類型:字串

選用項目

資產的類型。此類別可以是所需的任何類型內部說明。範例:ResortDay Room

number_of_rooms

類型:整數

選用項目

此飯店廣告的客房/單位總數。

範例:150

status

類型:字串

控制要銷售目錄中的商品或將其封存。在您的廣告、商店或任何其他管道中,用戶只能看到銷售中的商品。支援的值:activearchived。商品預設為銷售中。深入瞭解封存商品


範例:active


注意:部分合作夥伴平台(例如 Shopify)可能會將商品同步至您的目錄,該狀態稱為預覽,其效果等同於 archived

這個欄位之前稱為 visibility。雖然我們依然支援舊的欄位名稱,但我們建議您使用新的名稱。

圖像物件參數


欄位名稱和類型說明

url

類型:字串

必要項目

項目上限:20。

廣告中將顯示之項目圖像的網址連結。請遵循下列圖像規格:

  • 所有圖像必須為 JPG、GIF 或 PNG 格式。

  • 若要顯示輪播廣告和精選集廣告:請以正方形(1:1)格式顯示圖像。圖像大小至少 500 x 500 像素。建議使用 1024 x 1024 像素以獲得最佳品質。

  • 若要顯示單一圖像廣告:以長寬比 1.91:1 顯示圖像。圖像大小下限為 500 x 500 像素。建議使用 1200 x 628 像素以獲得最佳品質。

  • 如果圖像不只一個,請為每個圖像新增額外的欄,並在每個欄名中使用 JSON-path 語法來表示圖像數量。

範例:image[0].url; image[1].url

範例:https://www.facebook.com/facebook_hotel.jpg

tag

類型:字串

選用項目

附加在圖像中以顯示其內容的標籤。一張圖像可以有多個相關聯的標籤。

範例:Fitness CenterSwimming Poolsuite

INSTAGRAM_STANDARD_PREFERRED - 允許廣告商在其摘要中標註特定圖像,作為用於 Instagram 的預設圖像。此標籤會區別大小寫。


地址物件參數

巢狀或多重值欄位(例如 address)可使用 JSON 編碼值表示,或由一組使用 JSON 路徑語法標記的「扁平化」純文字欄表示(例如 address.region)。您可以在同一個檔案中交替使用這兩種慣例。


欄位名稱和類型說明

addr1address.addr1

類型:物件

必要項目

飯店的主要街道地址。

範例:1600 Pennsylvania Avenue

address.addr2

類型:物件

選用項目

飯店的次要街道地址。

範例:Apartment 1

address.addr3

類型:物件

選用項目

飯店的第三級街道地址。

範例:Downstairs

address.city_idcity_id

類型:字串

選用項目

在廣告創意中用於深層連結網址(template_url)的值。

範例:12345

address.citycity

類型:字串

必要項目

飯店所在地的城市。

範例:New York

address.regionregion

類型:字串

必要項目

飯店所在地的州、縣、省。

範例:California

address.countrycountry

類型:字串

必要項目

飯店所在地的國家/地區。

範例:United States

address.postal_codepostal_code

類型:字串

若該國家/地區使用郵遞區號系統,此為必填項目

飯店的郵遞區號。

範例:94125NW1 3FG

房客評分物件參數


欄位名稱和類型說明

guest_ratings.scorescore

類型:物件

選用項目

評論過飯店的總人數。若指定此欄位,必須同時提供 scoremax_scorenumber_of_reviewersrating_system

範例:9.0/10

guest_ratings.number_of_reviewersnumber_of_reviewers)類型:整數

選用項目

為此飯店打過分數的總人數。

範例:5287

guest_ratings.rating_systemrating_system

類型:字串

選用項目

用於房客評論的系統。

範例:ExpediaTripAdvisor

max_score

類型:整數

必要項目

飯店評分的最大值。必須大於或等於 0,小於或等於 100。

範例:10

飯店 API - 直接建立和管理飯店

您可以使用飯店 API 直接在目錄中新增、編輯和移除飯店。如需深入瞭解如何使用 API 管理飯店,請參閱飯店 API 參考資料

下列章節只適用於以 API 管理目錄的情況。

使用 API 建立飯店目錄

飯店目錄內含飯店庫存資料。若要使用目錄 API,請確認是否具備合適的行銷 API 存取層級,並且藉由透過企業管理平台建立第一個目錄,確認已接受服務條款

若要建立用於飯店廣告的飯店目錄,請將 vertical 設為 hotels

curl -X POST \
  -F 'name="Test Hotel Catalog"' \
  -F 'vertical="hotels"' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v10.0/BUSINESS_ID/owned_product_catalogs

透過 API 上傳飯店摘要

建立目錄後,您必須將飯店摘要上傳至 Facebook。請針對您要上傳的每個摘要,使用 API 來建立摘要物件。我們支援排程上傳和直接上傳。

將飯店目錄篩選為飯店組合

飯店組合是目錄的子集。若要設定飯店廣告,您需要飯店組合。因此,您必須建立至少一個飯店組合。

飯店組合是由套用於飯店目錄的篩選條件來定義。例如,您建立的飯店組合可以包含所有 star_rating 高於 3 的飯店。注意:您也可以建立不套用任何篩選條件的飯店組合。在不套用任何篩選條件的情況下,飯店組合會包含目錄中所有飯店。

若要建立一個飯店組合,其中包含 brand 欄位中含「sample brand」(品牌範例)的所有飯店:

curl -X POST \ -F 'name="Test Hotel Set"' \ -F 'filter={ "brand": { "i_contains": "sample brand" } }' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v19.0/<PRODUCT_CATALOG_ID>/product_sets
'use strict'; const bizSdk = require('facebook-nodejs-business-sdk'); const ProductCatalog = bizSdk.ProductCatalog; const ProductSet = bizSdk.ProductSet; const access_token = '<ACCESS_TOKEN>'; const app_secret = '<APP_SECRET>'; const app_id = '<APP_ID>'; const id = '<PRODUCT_CATALOG_ID>'; const api = bizSdk.FacebookAdsApi.init(access_token); const showDebugingInfo = true; // Setting this to true shows more debugging info. if (showDebugingInfo) { api.setDebug(true); } const logApiCallResult = (apiCallName, data) => { console.log(apiCallName); if (showDebugingInfo) { console.log('Data:' + JSON.stringify(data)); } }; let fields, params; fields = [ ]; params = { 'name' : 'Test Hotel Set', 'filter' : {'brand':{'i_contains':'sample brand'}}, }; const product_sets = (new ProductCatalog(id)).createProductSet( fields, params ); logApiCallResult('product_sets api call complete.', product_sets);
require __DIR__ . '/vendor/autoload.php'; use FacebookAds\Object\ProductCatalog; use FacebookAds\Object\ProductSet; use FacebookAds\Api; use FacebookAds\Logger\CurlLogger; $access_token = '<ACCESS_TOKEN>'; $app_secret = '<APP_SECRET>'; $app_id = '<APP_ID>'; $id = '<PRODUCT_CATALOG_ID>'; $api = Api::init($app_id, $app_secret, $access_token); $api->setLogger(new CurlLogger()); $fields = array( ); $params = array( 'name' => 'Test Hotel Set', 'filter' => array('brand' => array('i_contains' => 'sample brand')), ); echo json_encode((new ProductCatalog($id))->createProductSet( $fields, $params )->exportAllData(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.productcatalog import ProductCatalog from facebook_business.adobjects.productset import ProductSet from facebook_business.api import FacebookAdsApi access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<PRODUCT_CATALOG_ID>' FacebookAdsApi.init(access_token=access_token) fields = [ ] params = { 'name': 'Test Hotel Set', 'filter': {'brand':{'i_contains':'sample brand'}}, } print ProductCatalog(id).create_product_set( fields=fields, params=params, )
import com.facebook.ads.sdk.*; import java.io.File; import java.util.Arrays; public class SAMPLE_CODE_EXAMPLE { public static void main (String args[]) throws APIException { String access_token = \"<ACCESS_TOKEN>\"; String app_secret = \"<APP_SECRET>\"; String app_id = \"<APP_ID>\"; String id = \"<PRODUCT_CATALOG_ID>\"; APIContext context = new APIContext(access_token).enableDebug(true); new ProductCatalog(id, context).createProductSet() .setName(\"Test Hotel Set\") .setFilter(\"{\\"brand\\":{\\"i_contains\\":\\"sample brand\\"}}\") .execute(); } }
require 'facebook_ads' access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<PRODUCT_CATALOG_ID>' FacebookAds.configure do |config| config.access_token = access_token config.app_secret = app_secret end product_catalog = FacebookAds::ProductCatalog.get(id) product_sets = product_catalog.product_sets.create({ name: 'Test Hotel Set', filter: {'brand':{'i_contains':'sample brand'}}, })

filter 參數是由下列運算子和資料所組成:

運算子篩選條件的類型

i_contains

包含子字串。運算子不會區別大小寫。

i_not_contains

不包含子字串。運算子不會區別大小寫。

contains

包含子字串。運算子不會區別大小寫。

not_contains

不包含子字串。運算子不會區別大小寫。

eq

等於。運算子不會區別大小寫。

neq

不等於。運算子不會區別大小寫。

lt

小於。僅限數值欄位。

lte

小於或等於。僅限數值欄位。

gt

大於。僅限數值欄位。

gte

大於或等於。僅限數值欄位。

資料所要篩選的資料。

hotel_id

飯店在目錄內的專屬識別碼。

brand

連鎖飯店的品牌。

base_price_amount

此飯店的每晚基本價格。價格以美分為單位(4999 代表 $49.99 美元)。

sale_price_amount

此飯店的每晚售價。價格以美分為單位(4999 代表 $49.99 美元)。

currency

幣別

city

飯店所在城市。

country

飯店的國家/地區。

name

飯店最常用的名稱。

star_rating

飯店星級。有效值介於 1 到 5 之間,且應為 0.5 的倍數。