カタログ

Facebook Business Extension (FBE)では、カタログを使用することにより、ビジネスのインベントリーを取り込みます。取り込んだインベントリーは、ダイナミック広告、ページショップ、おすすめサービスカードなど、さまざまな機能を強化するのに使用されます。統合プロセスにおいてカタログの使用は任意ですが、一部の機能には必須です。

Facebookのカタログには独自のAPIがありますが、FBEにはその中のいくつかが直接統合されており、それにより実際のプラットフォーム上でビジネスのインベントリーを簡単にアップデートすることができます(開発者の側でFacebookカタログIDを管理する必要はありません)。

ダイナミック広告やコマース事例(ページショップ、Instagramショッピング、Marketplace)のためのカタログの中のすべての必須フィールドに正しくデータが設定されるようにするには、サポートフィールドをご覧ください。

インベントリーをアップデートする

インベントリーをアップデートする方法は2つあります。

  • プッシュ: APIを通じてカタログをFacebookにプッシュする(推奨)
  • プル: Facebookに該当プラットフォームから定期的にカタログをプルさせる(これは、インベントリーの期限切れにつながり、サーバーに不必要な負荷をかけることになるため、推奨されません)

プッシュ方式

Metaは、いずれかのプッシュ方式(バッチAPIまたはワンタイムフィードアップロードAPI)の使用を強く推奨しています。この方式では、インベントリーの即時アップデートが有効になり、双方のサーバー負荷が軽減されるからです。ここで使用されるaccess_tokenは、ビジネスログインおよびWebhookから返されるものと同じです。

新しいインストールWebhookを受け取ったら、直ちにビジネスのフルインベントリーをMetaに送信する必要があります。開発者のウェブサイトでビジネスがインベントリーに変更を加えるたびに、開発者はアップデートを送信する必要があります。

バッチAPI

ほとんどのEコマースビジネスで推奨されますバッチAPIは標準のFacebookカタログAPIであり、大規模インベントリー(アイテムが100個以上)を備えたビジネスやアイテムの頻繁なアップデートに適しています。

ワンタイムフィードアップロードAPI

予約(サービス)ビジネスで利用できますワンタイムフィードアップロードAPIは標準のFacebookカタログAPIであり、小規模インベントリー(アイテムが100個以下)のビジネスに適しています。

この方式では、アップデートのたびにフルインベントリーを送信することになります。そうすると、Facebookカタログでインベントリーの完全置換が実行されます。

ステップ1: 接続されたカタログIDを送信して(Webhook通知またはFBEインストールAPIエンドポイントから)、FBEインストールの際に作成されたフィードIDを取得します。

curl -G \
-d "access_token=<ACCESS_TOKEN>" \
https://graph.facebook.com/<API_VERSION>/<CATALOG_ID>/product_feeds

製品フィードAPIの詳細については、こちらをご覧ください。

ステップ2: フィードに対してワンタイムアップロードを実行します。

— 公開された場所でホストされているフィードファイル。

グラフAPIエクスプローラ
curl -X POST \
  -F 'url="http://www.example.com/sample_feed.xml"' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/{FEED_ID}/uploads
POST /{FEED_ID}/uploads HTTP/1.1
Host: graph.facebook.com

url=http%3A%2F%2Fwww.example.com%2Fsample_feed.xml
/* PHP SDK v5.0.0 */
/* make the API call */
try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->post(
    '/{FEED_ID}/uploads',
    array (
      'url' => 'http://www.example.com/sample_feed.xml',
    ),
    '{access-token}'
  );
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();
/* handle the result */
/* make the API call */
FB.api(
    "/{FEED_ID}/uploads",
    "POST",
    {
        "url": "http:\/\/www.example.com\/sample_feed.xml"
    },
    function (response) {
      if (response && !response.error) {
        /* handle the result */
      }
    }
);

— ローカルマシンからフィードファイルを直接アップロードする場合。ファイルのパスは、各自の使用事例に応じて適宜変更する必要があります。

グラフAPIエクスプローラ
curl -X POST \
  -F 'file=@catalog.csv;type=text/csv' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/{FEED_ID}/uploads
POST /{FEED_ID}/uploads HTTP/1.1
Host: graph.facebook.com

file=%40catalog.csv%3Btype%3Dtext%2Fcsv
/* PHP SDK v5.0.0 */
/* make the API call */
try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->post(
    '/{FEED_ID}/uploads',
    array (
      'file' => '@catalog.csv;type=text/csv',
    ),
    '{access-token}'
  );
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();
/* handle the result */
/* make the API call */
FB.api(
    "/{FEED_ID}/uploads",
    "POST",
    {
        "file": "@catalog.csv;type=text\/csv"
    },
    function (response) {
      if (response && !response.error) {
        /* handle the result */
      }
    }
);

サポートされているフォーマット

特に指定がない限り、リクエストと返信のすべてのフォーマットは、元のエンドポイントについて説明されているものと同じです。

バーティカル CSVフィードの例 TSVフィードの例 XMLフィードの例

Eコマース

EコマースサンプルCSV

EコマースサンプルTSV

EコマースサンプルXML

予約

予約サンプルCSV

予約サンプルTSV

予約サンプルXML

予約(サービス)カタログでサポートされるフィールド」を参照してください。

プル方式

後続プル実行までにインベントリーの期限切れが誘発されるため、この方式は推奨されません。ただし、公開アクセス可能なインベントリーファイルを備えたセルフホストの小規模ビジネスの場合には、有用です。ビジネスでこの方式を採用した場合、ビジネス構成で、ビジネスログイン経由で渡されるcatalog_feed_scheduled機能を指定する必要があります。この機能が定義されると、アップデートの有無に関係なく、指定された公開URLからビジネスのインベントリーが定期的に取り出されます。

フィードプルのスケジュールの詳細については、こちらをご覧ください。