目录设置

如需设置动态广告,您需要目录、目录信息库和商品系列。

您的目录是一个结构化数据文件,其中包含您要投放广告的商品的列表。每行都包含创建动态广告所需的全部信息。商品信息库是动态上传的数据,用于保持您的商品目录处于最新状态。

如果您目前在应用程序中使用商品目录,则或会受一些重大安全变更的影响。请参阅 2018 年 1 月 30 日商品目录权限的重大变更

如需设置目录,请执行以下步骤:

另请参阅动态广告入门通过 UI 设置动态广告

步骤 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-encoded。请参阅商品目录产品参考中的产品字段。

请勿提供使用 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 应用于每次信息库上传的规则。按照应该应用规则的属性(列)、规则类型和参数指定规则。您当前无法将规则与批处理 API 结合使用。可以提供以下类型的规则:

  • 映射规则 - 将信息库文件中的属性(列名称)映射到我们可以识别的属性。
  • 值映射规则 - 将信息库文件中的字段(列值)映射到我们可以识别的字段。
  • 字母大小写规则 - 更改字段中单词的大小写。例如,将所有大写描述更改为小写。

例如,可以使用映射和值映射规则解决以下问题:

  • 将属性 availability 错误地输入为 gavailability
  • 将无法识别的枚举 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": 以下其中一项:"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 参考文档

下一步:收集受众信号和构建产品受众

构建产品受众