目錄設定

如要設定動態廣告,您需要目錄、目錄動態和產品組合。

您的目錄為結構化數據檔案,包含您想宣傳的物品清單。每行均包含建立動態廣告所需的全部資訊。產品摘要則為您動態上載的數據,可助您的產品目錄保持最新狀態。

如果您的應用程式正在使用產品目錄,您或會因幾個與安全相關的重大變更而受到影響。請參閱 2018 年 1 月 30 日產品目錄權限的重大變更

如要設定目錄,請遵循以下步驟:

另請參閱開始使用動態廣告透過用戶介面設定動態廣告

第 1 步:建立目錄

如要建立動態廣告目錄:

curl -X POST \ -F 'name="Test Catalog"' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v3.2/{business-id}/owned_product_catalogs
'use strict'; const bizSdk = require('facebook-nodejs-business-sdk'); const Business = bizSdk.Business; const ProductCatalog = bizSdk.ProductCatalog; const access_token = '<ACCESS_TOKEN>'; const app_secret = '<APP_SECRET>'; const app_id = '<APP_ID>'; const id = '<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 Catalog', }; const owned_product_catalogs = (new Business(id)).createOwnedProductCatalog( fields, params ); logApiCallResult('owned_product_catalogs api call complete.', owned_product_catalogs);
require __DIR__ . '/vendor/autoload.php'; use FacebookAds\Object\Business; use FacebookAds\Object\ProductCatalog; use FacebookAds\Api; use FacebookAds\Logger\CurlLogger; $access_token = '<ACCESS_TOKEN>'; $app_secret = '<APP_SECRET>'; $app_id = '<APP_ID>'; $id = '<ID>'; $api = Api::init($app_id, $app_secret, $access_token); $api->setLogger(new CurlLogger()); $fields = array( ); $params = array( 'name' => 'Test Catalog', ); echo json_encode((new Business($id))->createOwnedProductCatalog( $fields, $params )->exportAllData(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.business import Business from facebook_business.adobjects.productcatalog import ProductCatalog from facebook_business.api import FacebookAdsApi access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<ID>' FacebookAdsApi.init(access_token=access_token) fields = [ ] params = { 'name': 'Test Catalog', } print Business(id).create_owned_product_catalog( 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 = \"<ID>\"; APIContext context = new APIContext(access_token).enableDebug(true); new Business(id, context).createOwnedProductCatalog() .setName(\"Test Catalog\") .execute(); } }
require 'facebook_ads' access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<ID>' FacebookAds.configure do |config| config.access_token = access_token config.app_secret = app_secret end business = FacebookAds::Business.get(id) owned_product_catalogs = business.owned_product_catalogs.create({ name: 'Test Catalog', })

如要使用目錄批量 API,您需要取得合適的推廣 API 存取權限,並須於企業管理平台建立第一個目錄,以接受服務條款。詳情請參閱目錄參考資料

第 2 步:設定動態

動態是由企業上載或擷取的一系列物品,以確保產品目錄擁有最新資料。產品項目是您網上商鋪的單一物品,如 SKU。您可使用單一產品摘要以代表目錄中的所有產品,或使用多個產品摘要,而每個摘要則代表一個國家/地區或區域的產品。

如要上載產品摘要,您需要使用 ads_management 權限。請參閱推廣 API 權限。建立產品目錄後,請使用 catalog id 建立及安排產品摘要

curl -X POST \ -F 'name="Test Feed"' \ -F 'schedule={ "interval": "DAILY", "url": "http://www.example.com/sample_feed.tsv", "hour": "22" }' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v3.2/{product-catalog-id}/product_feeds
'use strict'; const bizSdk = require('facebook-nodejs-business-sdk'); const ProductCatalog = bizSdk.ProductCatalog; const ProductFeed = bizSdk.ProductFeed; const access_token = '<ACCESS_TOKEN>'; const app_secret = '<APP_SECRET>'; const app_id = '<APP_ID>'; const id = '<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 Feed', 'schedule' : {'interval':'DAILY','url':'http://www.example.com/sample_feed.tsv','hour':'22'}, }; const product_feeds = (new ProductCatalog(id)).createProductFeed( fields, params ); logApiCallResult('product_feeds api call complete.', product_feeds);
require __DIR__ . '/vendor/autoload.php'; use FacebookAds\Object\ProductCatalog; use FacebookAds\Object\ProductFeed; use FacebookAds\Api; use FacebookAds\Logger\CurlLogger; $access_token = '<ACCESS_TOKEN>'; $app_secret = '<APP_SECRET>'; $app_id = '<APP_ID>'; $id = '<ID>'; $api = Api::init($app_id, $app_secret, $access_token); $api->setLogger(new CurlLogger()); $fields = array( ); $params = array( 'name' => 'Test Feed', 'schedule' => array('interval' => 'DAILY','url' => 'http://www.example.com/sample_feed.tsv','hour' => '22'), ); echo json_encode((new ProductCatalog($id))->createProductFeed( $fields, $params )->exportAllData(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.productcatalog import ProductCatalog from facebook_business.adobjects.productfeed import ProductFeed from facebook_business.api import FacebookAdsApi access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<ID>' FacebookAdsApi.init(access_token=access_token) fields = [ ] params = { 'name': 'Test Feed', 'schedule': {'interval':'DAILY','url':'http://www.example.com/sample_feed.tsv','hour':'22'}, } print ProductCatalog(id).create_product_feed( 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 = \"<ID>\"; APIContext context = new APIContext(access_token).enableDebug(true); new ProductCatalog(id, context).createProductFeed() .setName(\"Test Feed\") .setSchedule(\"{\\"interval\\":\\"DAILY\\",\\"url\\":\\"http://www.example.com/sample_feed.tsv\\",\\"hour\\":\\"22\\"}\") .execute(); } }
require 'facebook_ads' access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<ID>' FacebookAds.configure do |config| config.access_token = access_token config.app_secret = app_secret end product_catalog = FacebookAds::ProductCatalog.get(id) product_feeds = product_catalog.product_feeds.create({ name: 'Test Feed', schedule: {'interval':'DAILY','url':'http://www.example.com/sample_feed.tsv','hour':'22'}, })

schedule 參數讓您可以安排動態上載。選項包括 intervalurlhour。其中亦可以包括 day_of_weekminuteusernamepassword。例如:

schedule: {"day_of_week":"FRIDAY","hour":17,"interval_count":1,"interval":"DAILY","minute":42,"next_scheduled_upload_time":"","password":pwd123,"status":"active","timezone":"Atlantic/Canary","url":"https://www.abc.com","username":aname}

請參閱動態參考資料物品參考資料

受支援的動態格式

提供的產品摘要必須為以下其中一種格式:

動態格式 描述 動態範例

CSV

逗點分隔值。第一行為欄標題。請將包含逗號的欄位置於 "雙引號"

下載(點擊右鍵並另存連結)

TSV

定位鍵分隔值。第一行為欄標題。請將包含逗號的欄位置於 "雙引號"

下載(點擊右鍵並另存連結)

RSS XML

格式一般由自動動態提供系統或網絡伺服器產生。一系列代表產品清單的項目 XML 節點,並必須以 <?xml 聲明標籤開頭。

下載(點擊右鍵並另存連結)

ATOM XML

格式一般由自動動態提供系統或網絡伺服器產生。一系列代表產品清單的項目 XML 節點,並必須以 <?xml 聲明標籤開頭。

下載(點擊右鍵並另存連結)

必填欄位

請以英文提供所有欄名稱。

名稱 類型 描述

id


大小上限:100

字串

項目唯一編號。可為產品的變種。如有多個例項擁有同一個編號,我們將略過所有例項。匯入產品後,這將對應至 retailer_id

availability

字串

貨品是否有存貨。允許使用的值為:


in stock - 貨品可立即發貨。


out of stock - 不會補貨。


preorder- 未來將會有貨。


available for order - 將於 1 至 2 個星期內發貨。


discontinued - 已停產


condition

字串

產品狀況:newrefurbishedused

description


大小上限:5000

字串

描述產品的簡短文字。

image_link


字串

廣告所使用的產品圖像連結。提供適合的圖像大小。


若是單一圖像、動態廣告 - 圖像解像度下限為 500px * 500px。寬高比下限為 4:5,寬高比上限則為 1:91:1.。如果圖像超出此寬高比範圍,Facebook 將根據原始寬高比,將之裁剪為最接近寬高比上限或下限的大小。


若是輪播廣告圖像、動態廣告 - 圖像解像度下限為 500px * 500px,而且 Facebook 會將之裁剪為 1:1 的寬高比。

link


字串

讓用戶購買物品的商戶網站連結。

title


大小上限:100

字串

產品標題。

price

字串

產品價格及貨幣。貨幣必須遵循 ISO 4217 貨幣代碼,如 9.99 USD

gtinmpnbrand


大小上限:70

字串

gtin - 全球貿易項目編號 (GTIN) 可包含 UPC、EAN、JAN 及 ISBN。

mpn - 產品的不重複製造商編號。

brand - 品牌名稱。

必須提供:gtinmpnbrand

選填欄位、產品深層連結

請按照應用程式連結規格,提供產品摘要的深層連結。產品摘要的深層連結資訊將優先於 Facebook 透過其網絡爬蟲所收集的應用程式連結中繼資料的任何相關資訊。

如果您已有應用程式連結的深層連結資訊,則無需指定此數據。Facebook 會使用應用程式連結的資訊,以展示正確的深層連結。如欲在廣告中展示深層連結,請參閱動態廣告的廣告範本

名稱 描述 範例

ios_url

iOS 應用程式的自訂方案(以網址形式提供)

example-ios://electronic

ios_app_store_id

App Store 的應用程式編號

1234

ios_app_name

應用程式的展示名稱

Electronic Example iOS

iphone_url

iPhone 應用程式的自訂方案(以網址形式提供)

example-iphone://electronic

iphone_app_store_id

App Store 的應用程式編號

5678

iphone_app_name

應用程式的展示名稱

Electronic Example iPhone

ipad_url

iPhone 應用程式的自訂方案

example-ipad://electronic

ipad_app_store_id

App Store 的應用程式編號

9010

ipad_app_name

應用程式的展示名稱

Electronic Example iPad

android_url

Android 應用程式的自訂方案(以網址形式提供)

example-android://electronic

android_package

用於意向產生的完整格式套件名稱

com.electronic

android_app_name

應用程式的展示名稱

Electronic Example Android

windows_phone_url

Windows Phone 應用程式的自訂方案(以網址形式提供)

example-windows://electronic

windows_phone_app_id

App Store 的應用程式編號(如 GUID)

ee728e01-7727-4168-9c8f-85c7eef40112

windows_phone_app_name

應用程式的展示名稱

Electronic Example Windows

對於 iOS,如果相關內容與一般 iOS 應用程式的資訊不同,則只需提供 iPhone iPad 應用程式資訊。

請使用產品群組,以為所有產品變種分組。提供產品群組以識別幾乎相同,但規格(如顏色、物料、尺寸或圖案)有所不同的產品。群組讓您可更輕鬆地宣傳特定產品的其他顏色、風格或圖案。同一個產品群組的所有產品均共用相同的 item_group_id。在動態廣告中,我們會根據由像素或應用程式所收到的訊號,僅從群組中挑選一個項目。

以下為您可加入的選填欄位:

名稱 類型 大小上限

additional_image_link


字串

您可以額外提供最多 20 張圖像,並以逗號分隔網址的形式提供。

age_group

字串

產品年齡段。允許使用的值為 newborninfanttoddlerkidsadult

color


大小上限:100

字串

項目顏色。

expiration_date

ISO-8601 (YYYY-MM-DD)

產品到期日。產品過期後,Facebook 會將之排除至所有產品組合以外,並且不會再在廣告中展示此產品。

gender

字串

選項包括:malefemaleunisex

item_group_id

字串

適用於作為產品變種的項目。請為所有變種項目提供相同 item_group_id。例如,「紅色 Polo 衫」是「Polo 衫」的變種。一旦我們收到您的動態後,Facebook 便會將此內容對應至 retailer_product_group_id。在動態廣告中,我們會根據由像素或應用程式所收到的訊號,僅從群組中挑選一個項目。

google_product_category


大小上限:250

字串

來自 Google 產品分類法的預先定義值(字串或類別編號)。例如 Apparel & Accessories > Clothing > Dresses2271

material


大小上限:200

字串

產品的製作物料,如 leatherdenimcotton

pattern


大小上限:100

字串

產品上的圖案或圖像印花。

product_type


大小上限:750

字串

由零售商定義的產品類別。

例如:
Home & Garden > Kitchen & Dining > Appliances > Refrigerators(TSV 格式)

例如:<product_type>Home & Garden > Kitchen & Dining > Appliances > Refrigerators</product_type>(XML 格式)

sale_price

字串

折扣價格(如項目有任何促銷活動)。貨幣必須遵循 ISO 4217 貨幣代碼。指定為 9.99 USD

sale_price_effective_date

ISO-8601 (YYYY-MM-DD)

銷售的開始日期、結束日期及時間(以正斜線分隔):


2014-11-01T12:00-0300/2014-12-01T00:00-0300

shipping

字串

每個國家及地區均設不同價格的二進位大型物件。不同地區需以逗號分隔。格式必須為 COUNTRY:STATE:SHIPPING_TYPE:PRICE

例如

US:CA:Ground:9.99 USD,US:NY:Air:15.99 USD

shipping_weight

字串

貨品的裝運重量。我們僅接受以下重量單位:lbozgkg。範例:3 lbs

size

字串

產品尺寸。例如,一件襯衫可以是 SmallXL

custom_label_0


大小上限:100

字串

此為選填欄位,包含有關產品的額外資訊。

custom_label_1


大小上限:100

字串

此為選填欄位,包含有關產品的額外資訊。

custom_label_2


大小上限:100

字串

此為選填欄位,包含有關產品的額外資訊。

custom_label_3


大小上限:100

字串

此為選填欄位,包含有關產品的額外資訊。

custom_label_4


大小上限:100

字串

此為選填欄位,包含有關產品的額外資訊。

使用我們的產品動態除錯網頁測試產品動態。若是 CSV/TSV,請複製第一列(即欄標題列)及數項產品;若是 XML,請複製含有數項產品/條目的 XML,並將內容貼上文字區域及驗證。

透過 API 設定國家/地區及語言動態

此功能目前限量提供。請聯絡您的 Facebook 業務代表以瞭解更多詳情。

如要覆寫特定國家/地區及語言之目錄的某些欄位,並在其中上載覆寫動態,請參閱如何建立覆寫欄位

API 調用範例

您可直接複製 API 範例,並將其貼至現有文件中,詳情請參閱透過 API 設定您的動態

在 XML 動態檔案中設定中繼標籤

此 API 僅供部分用戶使用。請聯絡您的 Facebook 業務代表以要求權限。

您可以選擇在 XML 目錄動態檔案中設定中繼資料標籤。此舉可讓 Facebook 將使用此動態的目錄歸因至您的應用程式。目前只有 RSS XML 和 Atom XML 動態支援這些標籤。

...
<?xml version="1.0"?>
<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
  ...
  <metadata>
    <ref_application_id>/<YOUR_APP_ID></ref_application_id>
    <ref_asset_id>/<YOUR_ASSET_ID></ref_asset_id>
  </metadata>
  ...
</rss>
...
  • 在動態檔案的 metadata 標籤內加入以下兩個元素:
    • ref-application-id - 您的 Facebook 應用程式編號
    • ref-asset-id - 此目錄在您系統中的不重複識別碼。

包含中繼標籤的 XML 動態範例如下所示:

動態格式 描述 動態範例

RSS XML

RSS XML 動態範例,其中繼標籤內包含參考資訊

下載(點擊右鍵並另存連結)

ATOM XML

Atom XML 動態範例,其中繼標籤內包含參考資訊

下載(點擊右鍵並另存連結)

第 3 步:更新選項

如要確保產品資訊為最新內容,請使用以下任一選項:

  1. 安排產品摘要擷取
  2. 直接上載產品摘要
  3. 更新產品

請注意:如果您正在使用我們的 API 來建立及管理動態,則需要向我們傳送 API 要求,並提供與您想建立的更新時間表相關的詳情:

curl \
  -F 'name=Test Feed' \
  -F 'update_schedule={ 
    "interval": "HOURLY", 
    "url": "http:\/\/www.example.com\/sample_feed_updates.tsv",
    "hour": 22
  }' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/<VERSION>/<PRODUCT_CATALOG_ID>/product_feeds

安排產品摘要擷取

Facebook 會按照您定期的時間表,從您的系統擷取產品摘要。您可以定義兩種類型的時間表:update_scheduleschedule。透過 update_schedule 建立的上載項目會建立新項目,或者使用動態檔案中的資訊來更新現有項目。透過 schedule 建立的上載項目會完全重新整理動態的運作:我們會刪除檔案中沒有的產品、更新現有產品,以及建立新產品。您可以視乎需要,使用一種或兩種時間表。

例如:使用 HOURLY 頻率的 update_schedule,以及使用 DAILY 頻率的替換 schedule

我們建議只使用動態檔案中的已變更數據設定 update_schedule,以便更快處理動態。這種操作對假日減價,以及更快更新價格和供應情況的消息特別有用。同時我們亦建議您將產品項目標記為「售罄」而不是從動態中刪除它,以便 Facebook 重新指定用戶為目標,並向他們展示有存貨的類似產品。

curl \
  -F 'name=Test Feed' \
  -F 'schedule={ 
    "interval": "DAILY", 
    "url": "http:\/\/www.example.com\/sample_feed.tsv"
  }' \
  -F 'update_schedule={ 
    "interval": "HOURLY", 
    "url": "http:\/\/www.example.com\/sample_feed_updates.tsv",
    "hour": 22
  }' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/<VERSION>/<PRODUCT_CATALOG_ID>/product_feeds

回應如下:

{ "id" : {PRODUCT_FEED_ID} }

請參閱產品摘要參考資料產品摘要安排參考資料


直接上載產品摘要

除了安排擷取動態外,您也可手動執行一次性上載。

這個範例適用於寄存在公開位置的動態檔案。

curl \
-F "url=http://www.example.com/sample_feed.xml" \
-F "access_token={ACCESS_TOKEN}" \
https://graph.facebook.com/{API_VERSION}/{PRODUCT_FEED_ID}/uploads

這個範例適用於直接從本地裝置上載動態檔案。檔案的路徑需要根據您的使用個案予以變更。

curl \
-F "file=@catalog.csv;type=text/csv" \
-F "access_token={ACCESS_TOKEN}" \
https://graph.facebook.com/{API_VERSION}/{PRODUCT_FEED_ID}/uploads

您亦可選擇將 update_only 設定為 true。我們會於動態內建立新項目及更新現有項目,但不會刪除其中的項目。如要更新現有項目,您只需提供 id 即可。這可節省擷取及處理檔案的時間。

例如,如果您只想更新動態中 100 個項目的價格及自訂標籤,請使用直接上載。為這些項目提供只含 idpricecustom_label_0 的檔案,並將 update_only 設定至 true。我們支援所有已列出的檔案格式,當中最常見的為 TSV 及 CSV。

檔案範例如下:

動態格式 用例 動態範例

CSV

為項目子集更新 priceavailability

下載(點擊右鍵並另存連結)

TSV

為項目子集重設 sale_price 及更新 custom_label_0

下載(點擊右鍵並另存連結)

請參閱手動上載參考資料

如果您的產品摘要出現錯誤,請參閱產品摘要上載錯誤參考資料


更新個別產品

即時更新個別產品的數據。在 HTTP POST 中包含已更新欄位:

https://graph.facebook.com/catalog:{PRODUCT_CATALOG_ID}:{base64urlencode(retailer_id)}

其中 retailer_id 代表您產品摘要的產品編號。此編號必須以 base64url 編碼。如欲了解更多有關易變產品欄位的資訊,請參閱產品目錄產品參考資料

請勿提供使用 API 更新、建立或刪除個別產品的產品摘要。此動作會中斷您對透過 API 建立的項目之任何更新或刪除活動,因為我們不會使用動態追蹤這些活動。

另請參閱:

大型目錄批量上載

上載包含數百萬產品及經常變更存貨的超大型目錄。您可透過單一 HTTP 要求建立、更新及刪除多項產品。此 API 擁有兩個端點:

  • POST [/{product_catalog_id}/batch](#send-batch-request) - 傳送批量要求,以在目錄中建立、更新、刪除項目。
  • GET [/{product_catalog_id}/check_batch_request_status](#batch-request-status) - 檢查要求狀態。

傳送產品更新資訊

如要建立、更新或刪除目錄中的產品,請結合您想要執行的變更作出 HTTP POST。每次呼喚可執行最多 5000 項更新。對於每個目錄,每小時最多可作出 100 次呼喚。

use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;

$requests =  array(
    array(
        'method' => 'CREATE',
        'retailer_id' => 'retailer-product-id-123',
        'data' => array(
          'availability' => 'in stock',
          'brand' => 'Niky',
          'category' => 't-shirts',
          'currency' => 'USD',
          'description' => 'This is the product description.',
          'image_url' => 'http://www.images.example.com/t-shirts/1.png',
          'name' => 'My product name',
          'price' => '100',
          'url' => 'http://www.example.com/t-shirts/1.html',
        ),
    ),
);


$data = Api::instance()->call(
  '/'.<CATALOG_ID>.'/batch',
  RequestInterface::METHOD_POST,
  array('requests' => $requests))->getContent();
curl \
  -F 'requests=[ 
    { 
      "method": "CREATE", 
      "retailer_id": "retailer-product-id-123", 
      "data": { 
        "availability": "in stock", 
        "brand": "Niky", 
        "category": "t-shirts", 
        "currency": "USD", 
        "description": "This is the product description.", 
        "image_url": "http:\/\/www.images.example.com\/t-shirts\/1.png", 
        "name": "My product name", 
        "price": "100", 
        "url": "http:\/\/www.example.com\/t-shirts\/1.html" 
      } 
    } 
  ]' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<CATALOG_ID>/batch

此調用會傳回控制代碼,讓您用於檢查批量要求的狀態。請參閱取得要求狀態

{
  "handles": ["AczwaOW7j_EuQ5peV3kGq8X9qc7cDiv_kFrrHkdKuG7LkpkkqK5939wgdoduSQ45FGK5vKdVqOaSDJEun-fvbsR1kk8Rd53AZyD1WThSemo26I"]
}
參數 類型 描述

requests

對象

包含所有要求的 JSON 對象。

requests.method

字串

CREATEUPDATEDELETE

requests.retailer_id

字串

由零售商提供的產品 id

requests.data

對象

包含產品欄位及值的 JSON 對象。如果 methodCREATE,此對象必須包含產品的所有必填欄位。如果 methodUPDATE,對象可包含任何欄位。Facebook 只會更新您提供的欄位。

以下為您可用於 CREATEUPDATE 項目,且 data 欄位支援的值:

  • additional_image_urls
  • availability
  • age_group
  • applinks
  • brand
  • category
  • color
  • condition
  • currency
  • custom_label_0
  • custom_label_1
  • custom_label_2
  • custom_label_3
  • custom_label_4
  • description
  • gender
  • gtin
  • image_url
  • manufacturer_part_number
  • name
  • pattern
  • price
  • product_type
  • sale_price
  • sale_price_end_date
  • sale_price_start_date
  • shipping
  • size
  • url

您可將 applinks 用於深層連結資訊,其功能與深層連結連結相似。格式如下所示:

"applinks" : {
  "ios": [{
    "url":"example-ios://electronic",
    "app_store_id":42,
    "app_name":"Electronic Example iOS"
  }],
  "iphone": [{
    "url":"example-iphone://electronic",
     "app_store_id":43,
     "app_name":"Electronic Example iPhone"
  }],
  "ipad": [{
    "url":"example-ipad://electronic",
     "app_store_id":44,
     "app_name":"Electronic Example iPad"
  }],
  "android": [{
    "url":"example-android://electronic",
     "package":"com.electronic",
     "class":"com.electronic.Example",
     "app_name":"Electronic Example Android",
  }],
  "windows_phone": [{
    "url":"example-windows://electronic",
     "app_id":"64ec0d1b-5b3b-4c77-a86b-5e12d465edc0",
     "app_name":"Electronic Example Windows"
  }]
}

請參閱建立產品目錄參考資料

取得要求狀態

如要取得批量要求狀態,請使用向 {product_catalog_id}/batch 作出的調用傳回的控制代碼:

curl -G \
-d 'handle=AczwaOW7j_EuQ5peV3kGq8X9qc7cDiv_kFrrHkdKuG7LkpkkqK5939wgdoduSQ45FGK5vKdVqOaSDJEun-fvbsR1kk8Rd53AZyD1WThSemo26I'
-d 'access_token={ACCESS_TOKEN}'
https://graph.facebook.com/{API_VERSION}/{PRODUCT_CATALOG_ID}/check_batch_request_status

回應:

{
  "data": [
    {
      "handle": "AczwaOW7j_EuQ5peV3kGq8X9qc7cDiv_kFrrHkdKuG7LkpkkqK5939wgdoduSQ45FGK5vKdVqOaSDJEun-fvbsR1kk8Rd53AZyD1WThSemo26Q",
      "status": "finished",
      "errors_total_count": 1,
      "errors": [
        {
          "line": 0,
          "id": "retailer-4",
          "message": "Invalid value: Value passed at position 0 (id=retailer-199) is invalid: \"You cannot create a EntProductItem without required field Availability\""
        }
      ]
    }
  ]
}

請參閱產品目錄參考資料,檢查批量狀態

產品摘要規則

使用規則修改及防止持續出現的動態上載錯誤。您可提供 Facebook 用於每次動態上載的規則。請按 Facebook 須應用的屬性(欄)、規則類型,以及參數列明規則。您現時無法將規則與批量 API 配搭使用。您可提供以下類型的規則:

  • 對應規則 - 將動態檔案內的屬性(欄名稱)對應至我們能識別的屬性。
  • 值對應規則 - 將動態檔案內的欄位(欄值)對應至我們能識別的欄位。
  • 字母大小楷規則 - 更改欄位文字的大小楷。例如,將所有大楷描述改為小楷。

例如,您可使用對應規則及值對應規則修改以下問題:

  • 將錯誤輸入的屬性 gavailability 改為 availability
  • 將無法識別的列舉 InStock 改為 in stock
  • 將價格格式由 45$ 改為 45.00 USD
  • 將狀況:Neu 改為狀況:New

您可使用字母大小楷規則處理以下類型的問題:

  • 將全大楷的描述 BRAND NEW WITH LEATHER DETAIL... 改為 Brand new with leather detail...
  • 將全大楷的標題 FACEBOOK T-SHIRT 改為 Facebook T-shirt

建議規則

Facebook 可為您提供建議規則,以便您修改動態的錯誤。如欲查看上載作業階段的建議規則,請遵循以下步驟。

  • 擷取上載作業階段:
https://graph.facebook.com/{API_VERSION}/{PRODUCT_FEED_ID}/uploads
  • 擷取上載作業階段的錯誤:
https://graph.facebook.com/{API_VERSION}/{UPLOAD_SESSION_ID}/errors
  • 擷取上載錯誤的建議規則:
curl -i -X GET 
 "https://graph.facebook.com/{API_VERSION}/{UPLOAD_ERROR_ID}/suggested_rules?access_token={ACCESS_TOKEN}

包含建議的回應範例如下所示:

"data": [
  
    "attribute": "description",
    "type": "letter_case_rule",
    "params": [
      
        "key": "type",
        "value": "capitalize_first"
      
    ]
  
]

請參閱建議規則 API 參考資料

解決產品目錄遺失項目的問題

如果目錄管理工具的報告遺失了您目錄中的一些項目,或無法找到這些項目,則您可能需要檢查是否已正確地設定您的 Facebook 像素或應用程式。您可能在以下情況遇到這種錯誤:

  • 您的像素或應用程式事件包含的 content_id 與目錄資料摘要中的編號不相符。
  • 像素或應用程式尚未與目錄建立連繫。
  • 目錄中沒有此項目。

如欲瞭解詳情,請前往此處


將規則加入動態

如要將規則套用至動態,您需要為規則與動態建立聯繫。向以下內容執行 HTTP POST 調用:

https://graph.facebook.com/{API_VERSION}/{PRODUCT_FEED_ID}/rules?attribute={ATTRIBUTE}&amp;rule_type={RULE_TYPE}&amp;params={PARAMS}

例如:

curl -i -X POST 
 -d "attribute=google_product_category" 
 -d "rule_type=mapping_rule" 
 -d "params=%7B'map_from'%3A%20'gcategory'%7D" 
 -d "access_token={ACCESS_TOKEN}" 
 "https://graph.facebook.com/<VERSION>/{PRODUCT_FEED_ID}/rules" 
 // sample response
 
  "id": "{RULE_ID}"

您必須按照以下指示格式化 params

規則類型 格式 範例 備註

對應規則

"map_from": <string>

"map_from": "gavailability"

值對應規則

<string> : <string>

"InStock": "in stock"

對於值對應規則,對應次數上限為 10,而字串長度則為 20。

字母大小楷規則

"type": one of : "capitalize_first", "capitalize_all", "to_upper", "to_lower"

"type": "capitalize_first"

詳情請參閱產品動態規則 API 參考資料

取得現有規則

如要列出所有與動態相關的規則,請向以下內容執行 HTTP GET 調用:

https://graph.facebook.com/{API_VERSION}/{PRODUCT_FEED_ID}/rules

詳情請參閱產品摘要規則 API 參考資料

更新並刪除規則

如欲更改與動態相關的規則,請作出 HTTP POST 調用,以更新任何參數,並作出 HTTP DELETE 調用以刪除參數。您只可以更新參數。如果您想更改 attributerule_type,請務必刪除及重新建立規則。

https://graph.facebook.com/{API_VERSION}/{PRODUCT_FEED_RULE_ID}?params={PARAMS}

詳情請參閱產品摘要規則 API 參考資料

下一步:收集廣告受眾訊號及建立產品廣告受眾

建立產品廣告受眾