商品のダイナミックオーディエンス

Advantage+カタログ広告では、クロスデバイスでの利用者の購入インテントに基づいて広告を表示できます。利用者のインテントシグナルをモバイルアプリとウェブサイトから収集し、このデータを使用して見込み客をターゲットにしたオーディエンスを作成することができます。

このドキュメントでは、以下の方法について説明します。

ステップ1: イベント用のユーザーシグナルを設定する

ユーザーシグナルを収集するには、モバイルアプリの場合はアプリイベント、ウェブサイトの場合はMetaピクセルを使用します。

デスクトップにのみ広告を掲載しているアプリの所有者であっても、Facebook SDKをインストールしてください。そうすれば、シグナルをキャプチャし、ターゲットとするオーディエンス層を広げるのに役立ちます。

モバイルのアプリイベント

iOS用およびAndroid用のFacebook SDKを使用して、アプリに以下のイベントを追加する必要があります。

イベントiOSイベントAndroidイベント

検索

FBSDKAppEventNameSearched

EVENT_NAME_SEARCHED

コンテンツ表示

FBSDKAppEventNameViewedContent

EVENT_NAME_VIEWED_CONTENT

カートに追加

FBSDKAppEventNameAddedToCart

EVENT_NAME_ADDED_TO_CART

購入

// logPurchaseで送信
[[FBSDKAppEvents shared] logPurchase:(double) currency:(NSString *) parameters:(NSDictionary *)];

EVENT_NAME_PURCHASED

これらすべてのイベントには、content_id(またはcontent_idのJSON配列)が指定されていなければなりません。

Metaピクセルとは異なり、アプリイベントにはproduct_catalog_idパラメーターがありません。そのため、external_event_sourcesエンドポイント(下記を参照)を使用してカタログとアプリの間に関連付けを設定する必要があります。

以下は、iOSのAdd To Cartイベントの例です。

[[FBSDKAppEvents shared] logEvent:FBSDKAppEventNameAddedToCart
      valueToSum:54.23
      parameters:@{
        FBSDKAppEventParameterNameCurrency    : @"USD",
        FBSDKAppEventParameterNameContentType : @"product",
        FBSDKAppEventParameterNameContentID   : @"123456789"
      }
];

以下は、数量を指定して2種類のアイテムを購入するiOSのPurchaseイベントの例です。

[[FBSDKAppEvents shared] logPurchase:21.97
    currency:@"USD"
    parameters:@{
      FBSDKAppEventParameterNameContent   : @"[{\"id\":\"1234\",\"quantity\":2},{\"id\":\"5678\",\"quantity\":1}]",
      FBSDKAppEventParameterNameContentType : @"product"
    }
];

以下は、数量を指定して2種類のアイテムを購入するAndroidのPurchaseイベントの例です。

Bundle parameters = new Bundle();
parameters.putString(AppEventsConstants.EVENT_PARAM_CURRENCY, "USD");
parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT_TYPE, "product");
parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT, "[{\"id\":\"1234\",\"quantity\":2},{\"id\":\"5678\",\"quantity\":1}]");

logger.logEvent(
  AppEventsConstants.EVENT_NAME_PURCHASED,
  21.97,
  parameters
);

以下は、2種類のアイテムを購入するAndroidのPurchaseイベントの例です。

Bundle parameters = new Bundle();
parameters.putString(AppEventsConstants.EVENT_PARAM_CURRENCY, "USD");
parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT_TYPE, "product");
parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT_ID, "[\"1234\",\"5678\"]");

logger.logEvent(
  AppEventsConstants.EVENT_NAME_PURCHASED,
  21.97,
  parameters
);

Advantage+カタログ広告では、CONTENT_IDまたはCONTENTを使って商品IDを報告できます。CONTENTパラメーターを使えば、商品に関する追加の情報を指定できます。

モバイル測定パートナーの利用

Advantage+カタログ広告をモバイル測定パートナー(MMP)と共に利用するには、利用者がアプリを使ったときに必要な個々のイベントをトリガーするようにします。トラッキングする必要のある重要な利用者の行動は、商品の検索、商品の閲覧、カートへの追加、アイテムの購入です。Advantage+カタログ広告の以下の標準イベントに対応するイベントをMMPで選択する必要があります。

名前説明

fb_mobile_search

利用者が商品を検索した

fb_mobile_content_view

アカウントセンターアカウントが商品を表示した

fb_mobile_add_to_cart

利用者がアイテムをカートに追加した

fb_mobile_purchase

アカウントセンターアカウントが1つ以上のアイテムを購入した

また、各イベントを有効なAdvantage+ カタログ広告イベントとして正常に登録するには、2つの追加パラメーターが必要です。これらの2つのパラメーターは、表示、カートに追加、購入されたアイテムのIDと、そのIDが商品IDと商品グループIDのどちらであるかを表します。追加できるパラメーターは以下のとおりです。

名前説明

fb_content_id

文字列

fb_content_idまたはfb_contentのどちらかが必須。
小売店の商品IDまたは商品グループID。これは、JSONでエンコードされたIDの配列を含む文字列にする必要があります。より的確なターゲット設定のためにも、できるだけ商品IDを使用してください。

fb_content

文字列

fb_content_idまたはfb_contentのどちらかが必須。
EAN(International Article Number)(該当する場合)、その他の商品IDやコンテンツIDに加え、商品の数量や価格を含むJSONオブジェクトのリスト。


idフィールドとquantityフィールドが必須
例:
"[{\"id\": \"1234\", \"quantity\": 2}, {\"id\": \"5678\", \"quantity\": 1}]"

fb_content_type

文字列

任意。
productまたはproduct_groupのいずれか。fb_content_idとして使用するIDのタイプと同じにする必要があります。


fb_content_typeが指定されていない場合、Metaはイベントを同じIDを持つすべてのアイテム(型は問わない)とマッチングさせます。


詳しくは、「正しいcontent_typeの選択」をご覧ください。

_valueToSum

文字列

任意。
商品の合計額。

fb_currency

文字列

任意。
商品価格または購入額の通貨。

注: 商品が購入されたときには、_valueToSumおよびfb_currencyパラメーターを送信することをおすすめします。

ウェブサイトにMetaピクセルを使用する

ウェブサイトに次のイベントを追加する必要があります(該当する場合)。

  • Search
  • ViewCategory
  • ViewContent
  • AddToCart
  • Purchase

これらのイベントは、次のデータパラメーターと一緒に送信する必要があります。

名前説明

content_ids

文字列またはstring[]

content_idsまたはcontentsのどちらかが必須。
小売店の商品IDまたは商品グループID。より的確なターゲット設定のためにも、できるだけ商品IDを使用してください。

contents

オブジェクト[]

content_idsまたはcontentsのどちらかが必須。
小売店の商品IDまたは商品グループIDに加えて、商品の補足情報を含んだJSONオブジェクトのリスト。


idフィールドとquantityフィールドが必須
例:[{"id": "1234", "quantity": 2}, {"id": "5678", "quantity": 1}]

content_type

文字列

任意。
productまたはproduct_groupのいずれか。content_idsとして使用するIDのタイプと同じにする必要があります。


content_typeが指定されていない場合、Metaはイベントを同じIDを持つすべてのアイテム(型は問わない)とマッチングさせます。


詳しくは、「正しいcontent_typeの選択」をご覧ください。

product_catalog_id

文字列

任意。
使用する商品カタログ。これを指定した場合、このカタログはピクセルの起動が関連付けられる唯一のカタログになります。指定されない場合は、ピクセルに関連付けられているカタログ(複数可)が使用されます。
詳しくは、商品カタログにユーザーシグナルを関連付けるをご覧ください。

以下はSearch標準イベントの例です。検索結果の上位5~10件のアイテムをcontent_idsに指定することをおすすめします。

<!-- Facebook Pixel Code -->
<script>
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,'script','https://connect.facebook.net/en_US/fbevents.js');
// Insert Your Facebook Pixel ID below. 
fbq('init', '<FB_PIXEL_ID>');
fbq('track', 'PageView');

fbq('track', 'Search', { 
  search_string: 'leather sandals',
  content_ids: ['1234', '2424', '1318', '6832'], // top 5-10 search results
  content_type: 'product'
});
</script>
<!-- End Facebook Pixel Code -->

以下はViewCategoryイベントの例です。結果の上位5~10件のアイテムをcontent_idsに指定することをおすすめします。なお、ViewCategoryは標準イベントではないため、trackCustom関数を使用する点にご注意ください。

<!-- Facebook Pixel Code -->
<script>
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,'script','https://connect.facebook.net/en_US/fbevents.js');
// Insert Your Facebook Pixel ID below. 
fbq('init', '<FB_PIXEL_ID>');
fbq('track', 'PageView');

fbq('trackCustom', 'ViewCategory', {
  content_name: 'Really Fast Running Shoes',
  content_category: 'Apparel &amp; Accessories > Shoes',
  content_ids: ['1234', '2424', '1318', '6832'], // top 5-10 results
  content_type: 'product'
});
</script>
<!-- End Facebook Pixel Code -->

以下は、ViewContent標準イベントの例です。ピクセルの設定について詳しくは、Metaピクセルをご覧ください。

<!-- Facebook Pixel Code -->
<script>
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,'script','https://connect.facebook.net/en_US/fbevents.js');
// Insert Your Facebook Pixel ID below. 
fbq('init', '<FB_PIXEL_ID>');
fbq('track', 'PageView');

fbq('track', 'ViewContent', {
  content_ids: ['1234'],
  content_type: 'product',
  value: 0.50,
  currency: 'USD'
});
</script>
<!-- End Facebook Pixel Code -->

AddToCart標準イベントは、ご使用のEコマースプラットフォームでアイテムをカートに追加する処理がどのように実行されるかに応じて異なります。この処理が動的に実行される場合、イベントをonclickイベントハンドラーに配置して、ボタンがクリックされるとトリガーされるようにします。別個のページが読み込まれる場合には、ピクセルイベントを通常どおりに起動させることができます。

<!-- Facebook Pixel Code -->
<script>
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,'script','https://connect.facebook.net/en_US/fbevents.js');
// Insert Your Facebook Pixel ID below. 
fbq('init', '<FB_PIXEL_ID>');
fbq('track', 'PageView');

// If you have a separate add to cart page that is loaded.
fbq('track', 'AddToCart', {
  content_ids: ['1234', '1853', '9386'],
  content_type: 'product',
  value: 3.50,
  currency: 'USD'
});
</script>
<!-- End Facebook Pixel Code -->

ボタンをクリックしてイベントを起動する必要があり、別個のページが読み込まれることがない場合は、次のようにします。

<!-- The below method uses jQuery, but that is not required -->

<button id="addToCartButton">Add To Cart</button>
<!-- Add event to the button's click handler -->

<script type="text/javascript">
  $( '#addToCartButton' ).click(function() {
    fbq('track', 'AddToCart', {
      content_ids: ['1234'],
      content_type: 'product',
      value: 2.99,
      currency: 'USD' 
    });  
  });
</script>

以下は、数量を指定して2種類のアイテムを購入するPurchase標準イベントの例です。

<!-- Facebook Pixel Code -->
<script>
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,'script','https://connect.facebook.net/en_US/fbevents.js');
// Insert Your Facebook Pixel ID below. 
fbq('init', '<FB_PIXEL_ID>');
fbq('track', 'PageView');

fbq('track', 'Purchase', {
  contents: [
    {'id': '1234', 'quantity': 2},
    {'id': '4642', 'quantity': 1}
  ],
  content_type: 'product',
  value: 21.97,
  currency: 'USD'
});
</script>

<!-- End Facebook Pixel Code -->

以下は、2つのアイテムを指定するPurchase標準イベントの例です。

<!-- Facebook Pixel Code -->
<script>
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,'script','https://connect.facebook.net/en_US/fbevents.js');
// Insert Your Facebook Pixel ID below. 
fbq('init', '<FB_PIXEL_ID>');
fbq('track', 'PageView');

fbq('track', 'Purchase', {
  content_ids: ['1234', '4642'],
  content_type: 'product',
  value: 21.97,
  currency: 'USD'
});
</script>

<!-- End Facebook Pixel Code -->

適切なcontent_typeを選択する

注:fb_content_typeはモバイル用のコンテンツタイプです。

特定のSKU(特定のサイズ、色など)に関するページの場合は、content_typeproductを使用し、content_idsに商品ID(商品フィードのid)を渡します。AddToCartイベントとPurchaseイベントでは、必ずcontent_type=productを使用する必要があります。これは、人々が具体的な商品を購入するからです。例えば、シャツを購入する際はサイズと色を指定します。サイズや色があいまいなシャツを購入しようとする人はいません。

関連商品(色やサイズが異なるが同じ商品グループに属する商品)のグループに関するページの場合は、product_groupを使用し、content_idsには商品グループID (商品フィードのitem_group_id)を渡します。これは通常、ユーザーがまだサイズを選択していない状態のViewContentページで使用されています。AddToCartPurchaseでは、product_group使用しない でください。

content_typeが、content_idsパラメーターやcontentsパラメーターに指定するIDのタイプと同じであることが重要です。

具体的な製品ID (content_type=product)を渡すと、ユーザーが興味を示した具体的なバリエーション(サイズ、色など)が明確になるので、Metaでより関連性の高い商品が推奨されるようになります。content_type=product_groupであっても、Metaが表示するのは常に個々の商品であり、商品グループではありません。

content_typeが指定されていない場合、Metaはイベントを同じIDを持つすべてのアイテム(型は問わない)とマッチングさせます。content_typeを送信することをおすすめします。そうすると、イベントとマッチさせる特定のIDをより詳細にコントロールできるようになります。

ステップ2: 商品カタログにユーザーシグナルを関連付ける

イベントソースをそれぞれの商品カタログに関連付けて、Facebookがそのデータを取得して正しい商品を広告に表示できるようにする必要があります。これは、ビジネスマネージャの[カタログ]ページに移動し、[イベントソースを関連付け]ボタンをクリックすると関連付けることができます。Advantage+カタログ広告のイベントを受け取るアプリとピクセルを必ず選択してください。

あるいは、外部イベントソースのリストをUTF-8でエンコードされた照会文字列パラメーターとして指定して、POST API呼び出しを実行することもできます。

use FacebookAds\Object\ProductCatalog;

$product_catalog = new ProductCatalog(<PRODUCT_CATALOG_ID>);
$product_catalog->createExternalEventSource(array(), array(
  'external_event_sources' => array(
    <PIXEL_ID>,
    <APP_ID>,
  ),
));
from facebookads.adobjects.productcatalog import ProductCatalog

product_catalog = ProductCatalog(<PRODUCT_CATALOG_ID>)
product_catalog.add_external_event_sources([
    <PIXEL_ID>,
    <APP_ID>,
])
curl \
  -F 'external_event_sources=["<PIXEL_ID>","<APP_ID>"]' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<PRODUCT_CATALOG_ID>/external_event_sources

注: カタログ、ピクセル、アプリに対するアクセス許可に加えて、ビジネスに対するアクセス許可が必要です。

パラメーター

名前説明

external_event_sources

必須。
UTF-8でエンコードされたクエリ文字列パラメーターとして関連付けられる、アプリIDとピクセルIDの配列

ステップ3: 商品オーディエンスを作成する

次に、モバイルアプリとウェブサイトにおけるアクティビティに基づいて、商品オーディエンスを作成します。使用するイベントを選択したり、商品オーディエンスを使って広告のターゲットを設定したりできます。

標準のアプリイベントの場合、次の広告のピクセルイベント名の下にオーディエンスが集計されます。

  • Search
  • ViewContent
  • AddToCart
  • Purchase

オーディエンスルールでは、オーディエンスにAndroidやiOSのユーザーが含まれている場合であっても、これらのイベント名を使用します。

/act_{ad-account-id}/product_audiencesエンドポイントにPOST API呼び出しを行って、商品オーディエンスを作成します。

https://graph.facebook.com/v21.0/act_AD_ACCOUNT_ID/product_audiences

パラメーター

名前説明

name

文字列

必須。
オーディエンスの名前。

description

文字列

任意。
オーディエンスの説明。

product_set_id

数値文字列

必須。このオーディエンスをターゲットとして設定する商品セット。

inclusions

JSONオブジェクト

必須。
ターゲット設定を行うためのイベントのセット。包含条件は少なくとも1つ必要です。それぞれの包含条件に、イベントを必ず1つだけ設定する必要があります。

inclusions.retention_seconds

整数

必須。
アカウントセンターアカウントをオーディエンス内に保持する秒数。

inclusions.rule

オブジェクト[]

必須。
1つのeventを参照しているウェブサイトのカスタムオーディエンスルール

exclusions

JSONオブジェクト

任意。
特定のアカウントセンターアカウントをターゲット設定から除外するイベント。
除外では、これらのイベントが指定されているアカウントセンターアカウントが、同じ商品グループのいずれかの商品(商品フィードに同じitem_group_id inがある商品など)で該当するイベントを発生させた場合に、ターゲットから除外されます。
例として、商品のオーディエンスで、ViewContentを包含イベントとして、Purchaseを除外イベントとして設定される場合が挙げられます。あるアカウントセンターアカウントが商品Aと商品Bを閲覧し、商品Bを購入したとします。このとき、商品Aと商品Bが同じ商品グループに属していれば、AとBは同じ商品のバリエーションであるため、このアカウントセンターアカウントはこの商品のオーディエンスから除外されます。一方、商品Aと商品Bが同じ商品グループに属していない場合、そのアカウントセンターアカウントは商品Aに対するViewContentイベントを起動しているので、引き続きその商品のオーディエンスに留まります。

exclusions.retention_seconds

整数

除外条件が指定されている場合は必須。
除外を存続させる秒数。

exclusions.rule

オブジェクト[]

除外条件が指定されている場合は必須。
1つのeventを参照しているウェブサイトのカスタムオーディエンスルール

各ルールには、最上位ルールまたは最上位のandルールの一部としてeq演算子を指定したeventが含まれていなければなりません。

同じeventを包含条件と除外条件の両方で使用する場合は、それ以外のパラメーターチェックもまったく同じ設定にする必要があります。

以下は、商品を閲覧したりカートに追加したりしたものの、商品を購入しなかった利用者をターゲットとするオーディエンスを作成する方法の例です。

curl -X POST \ -F 'name="Test Product Audience"' \ -F 'product_set_id="<PRODUCT_SET_ID>"' \ -F 'inclusions=[ { "retention_seconds": 86400, "rule": { "event": { "eq": "AddToCart" } } }, { "retention_seconds": 72000, "rule": { "event": { "eq": "ViewContent" } } } ]' \ -F 'exclusions=[ { "retention_seconds": 172800, "rule": { "event": { "eq": "Purchase" } } } ]' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/product_audiences
'use strict'; const bizSdk = require('facebook-nodejs-business-sdk'); const AdAccount = bizSdk.AdAccount; const CustomAudience = bizSdk.CustomAudience; const access_token = '<ACCESS_TOKEN>'; const app_secret = '<APP_SECRET>'; const app_id = '<APP_ID>'; const id = '<AD_ACCOUNT_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 Product Audience', 'product_set_id' : '<productSetID>', 'inclusions' : [{'retention_seconds':86400,'rule':{'event':{'eq':'AddToCart'}}},{'retention_seconds':72000,'rule':{'event':{'eq':'ViewContent'}}}], 'exclusions' : [{'retention_seconds':172800,'rule':{'event':{'eq':'Purchase'}}}], }; const product_audiences = (new AdAccount(id)).createProductAudience( fields, params ); logApiCallResult('product_audiences api call complete.', product_audiences);
require __DIR__ . '/vendor/autoload.php'; use FacebookAds\Object\AdAccount; use FacebookAds\Object\CustomAudience; use FacebookAds\Api; use FacebookAds\Logger\CurlLogger; $access_token = '<ACCESS_TOKEN>'; $app_secret = '<APP_SECRET>'; $app_id = '<APP_ID>'; $id = '<AD_ACCOUNT_ID>'; $api = Api::init($app_id, $app_secret, $access_token); $api->setLogger(new CurlLogger()); $fields = array( ); $params = array( 'name' => 'Test Product Audience', 'product_set_id' => '<productSetID>', 'inclusions' => array(array('retention_seconds' => 86400,'rule' => array('event' => array('eq' => 'AddToCart'))),array('retention_seconds' => 72000,'rule' => array('event' => array('eq' => 'ViewContent')))), 'exclusions' => array(array('retention_seconds' => 172800,'rule' => array('event' => array('eq' => 'Purchase')))), ); echo json_encode((new AdAccount($id))->createProductAudience( $fields, $params )->exportAllData(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.adaccount import AdAccount from facebook_business.adobjects.customaudience import CustomAudience from facebook_business.api import FacebookAdsApi access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_ACCOUNT_ID>' FacebookAdsApi.init(access_token=access_token) fields = [ ] params = { 'name': 'Test Product Audience', 'product_set_id': '<productSetID>', 'inclusions': [{'retention_seconds':86400,'rule':{'event':{'eq':'AddToCart'}}},{'retention_seconds':72000,'rule':{'event':{'eq':'ViewContent'}}}], 'exclusions': [{'retention_seconds':172800,'rule':{'event':{'eq':'Purchase'}}}], } print AdAccount(id).create_product_audience( 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 = \"<AD_ACCOUNT_ID>\"; APIContext context = new APIContext(access_token).enableDebug(true); new AdAccount(id, context).createProductAudience() .setName(\"Test Product Audience\") .setProductSetId(\"<productSetID>\") .setInclusions(\"[{\\"retention_seconds\\":86400,\\"rule\\":{\\"event\\":{\\"eq\\":\\"AddToCart\\"}}},{\\"retention_seconds\\":72000,\\"rule\\":{\\"event\\":{\\"eq\\":\\"ViewContent\\"}}}]\") .setExclusions(\"[{\\"retention_seconds\\":172800,\\"rule\\":{\\"event\\":{\\"eq\\":\\"Purchase\\"}}}]\") .execute(); } }
require 'facebook_ads' access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_ACCOUNT_ID>' FacebookAds.configure do |config| config.access_token = access_token config.app_secret = app_secret end ad_account = FacebookAds::AdAccount.get(id) product_audiences = ad_account.product_audiences.create({ name: 'Test Product Audience', product_set_id: '<productSetID>', inclusions: [{'retention_seconds':86400,'rule':{'event':{'eq':'AddToCart'}}},{'retention_seconds':72000,'rule':{'event':{'eq':'ViewContent'}}}], exclusions: [{'retention_seconds':172800,'rule':{'event':{'eq':'Purchase'}}}], })

iPhoneを使ってウェブで商品を閲覧したものの、どのデバイスでも商品を購入しなかった利用者をターゲットに設定するには、以下のようなオーディエンスを作成します。

ここでは、次のようにMetaピクセルにuserAgentパラメーターを組み込んだことを想定しています。

curl -X POST \ -F 'name="Test Iphone Product Audience"' \ -F 'product_set_id="<PRODUCT_SET_ID>"' \ -F 'inclusions=[ { "retention_seconds": 86400, "rule": { "and": [ { "event": { "eq": "AddToCart" } }, { "userAgent": { "i_contains": "iPhone" } } ] } } ]' \ -F 'exclusions=[ { "retention_seconds": 172800, "rule": { "event": { "eq": "Purchase" } } } ]' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/product_audiences
'use strict'; const bizSdk = require('facebook-nodejs-business-sdk'); const AdAccount = bizSdk.AdAccount; const CustomAudience = bizSdk.CustomAudience; const access_token = '<ACCESS_TOKEN>'; const app_secret = '<APP_SECRET>'; const app_id = '<APP_ID>'; const id = '<AD_ACCOUNT_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 Iphone Product Audience', 'product_set_id' : '<productSetID>', 'inclusions' : [{'retention_seconds':86400,'rule':{'and':[{'event':{'eq':'AddToCart'}},{'userAgent':{'i_contains':'iPhone'}}]}}], 'exclusions' : [{'retention_seconds':172800,'rule':{'event':{'eq':'Purchase'}}}], }; const product_audiences = (new AdAccount(id)).createProductAudience( fields, params ); logApiCallResult('product_audiences api call complete.', product_audiences);
require __DIR__ . '/vendor/autoload.php'; use FacebookAds\Object\AdAccount; use FacebookAds\Object\CustomAudience; use FacebookAds\Api; use FacebookAds\Logger\CurlLogger; $access_token = '<ACCESS_TOKEN>'; $app_secret = '<APP_SECRET>'; $app_id = '<APP_ID>'; $id = '<AD_ACCOUNT_ID>'; $api = Api::init($app_id, $app_secret, $access_token); $api->setLogger(new CurlLogger()); $fields = array( ); $params = array( 'name' => 'Test Iphone Product Audience', 'product_set_id' => '<productSetID>', 'inclusions' => array(array('retention_seconds' => 86400,'rule' => array('and' => array(array('event' => array('eq' => 'AddToCart')),array('userAgent' => array('i_contains' => 'iPhone')))))), 'exclusions' => array(array('retention_seconds' => 172800,'rule' => array('event' => array('eq' => 'Purchase')))), ); echo json_encode((new AdAccount($id))->createProductAudience( $fields, $params )->exportAllData(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.adaccount import AdAccount from facebook_business.adobjects.customaudience import CustomAudience from facebook_business.api import FacebookAdsApi access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_ACCOUNT_ID>' FacebookAdsApi.init(access_token=access_token) fields = [ ] params = { 'name': 'Test Iphone Product Audience', 'product_set_id': '<productSetID>', 'inclusions': [{'retention_seconds':86400,'rule':{'and':[{'event':{'eq':'AddToCart'}},{'userAgent':{'i_contains':'iPhone'}}]}}], 'exclusions': [{'retention_seconds':172800,'rule':{'event':{'eq':'Purchase'}}}], } print AdAccount(id).create_product_audience( 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 = \"<AD_ACCOUNT_ID>\"; APIContext context = new APIContext(access_token).enableDebug(true); new AdAccount(id, context).createProductAudience() .setName(\"Test Iphone Product Audience\") .setProductSetId(\"<productSetID>\") .setInclusions(\"[{\\"retention_seconds\\":86400,\\"rule\\":{\\"and\\":[{\\"event\\":{\\"eq\\":\\"AddToCart\\"}},{\\"userAgent\\":{\\"i_contains\\":\\"iPhone\\"}}]}}]\") .setExclusions(\"[{\\"retention_seconds\\":172800,\\"rule\\":{\\"event\\":{\\"eq\\":\\"Purchase\\"}}}]\") .execute(); } }
require 'facebook_ads' access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_ACCOUNT_ID>' FacebookAds.configure do |config| config.access_token = access_token config.app_secret = app_secret end ad_account = FacebookAds::AdAccount.get(id) product_audiences = ad_account.product_audiences.create({ name: 'Test Iphone Product Audience', product_set_id: '<productSetID>', inclusions: [{'retention_seconds':86400,'rule':{'and':[{'event':{'eq':'AddToCart'}},{'userAgent':{'i_contains':'iPhone'}}]}}], exclusions: [{'retention_seconds':172800,'rule':{'event':{'eq':'Purchase'}}}], })

商品オーディエンスを取得する

商品オーディエンスを作成すると、カスタムオーディエンスAPIを使ってそのオーディエンスを取得できるようになります。オーディエンスの作成に使用された元のパラメーターは、data_sourceパラメーターを使用すれば取得できます。

商品オーディエンスは、商品イベントから動的に生成される、特定のタイプのカスタムオーディエンスです。act_{ad-account-id}/product_audiencesエンドポイントは、このようなオーディエンスを作成するための特別なPOSTエンドポイントです。

以下は、カスタムオーディエンスを取得する方法の例です。

curl -X GET \ -d 'fields="data_source,subtype"' \ -d 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/customaudiences
'use strict'; const bizSdk = require('facebook-nodejs-business-sdk'); const AdAccount = bizSdk.AdAccount; const CustomAudience = bizSdk.CustomAudience; const access_token = '<ACCESS_TOKEN>'; const app_secret = '<APP_SECRET>'; const app_id = '<APP_ID>'; const id = '<AD_ACCOUNT_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 = [ 'data_source', 'subtype', ]; params = { }; const customaudiencess = (new AdAccount(id)).getCustomAudiences( fields, params ); logApiCallResult('customaudiencess api call complete.', customaudiencess);
require __DIR__ . '/vendor/autoload.php'; use FacebookAds\Object\AdAccount; use FacebookAds\Object\CustomAudience; use FacebookAds\Api; use FacebookAds\Logger\CurlLogger; $access_token = '<ACCESS_TOKEN>'; $app_secret = '<APP_SECRET>'; $app_id = '<APP_ID>'; $id = '<AD_ACCOUNT_ID>'; $api = Api::init($app_id, $app_secret, $access_token); $api->setLogger(new CurlLogger()); $fields = array( 'data_source', 'subtype', ); $params = array( ); echo json_encode((new AdAccount($id))->getCustomAudiences( $fields, $params )->getResponse()->getContent(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.adaccount import AdAccount from facebook_business.adobjects.customaudience import CustomAudience from facebook_business.api import FacebookAdsApi access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_ACCOUNT_ID>' FacebookAdsApi.init(access_token=access_token) fields = [ 'data_source', 'subtype', ] params = { } print AdAccount(id).get_custom_audiences( 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 = \"<AD_ACCOUNT_ID>\"; APIContext context = new APIContext(access_token).enableDebug(true); new AdAccount(id, context).getCustomAudiences() .requestField(\"data_source\") .requestField(\"subtype\") .execute(); } }
require 'facebook_ads' access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_ACCOUNT_ID>' FacebookAds.configure do |config| config.access_token = access_token config.app_secret = app_secret end ad_account = FacebookAds::AdAccount.get(id) customaudiencess = ad_account.customaudiences({ fields: { 'data_source''subtype' }, })

以下は、特定の商品オーディエンスを取得する方法の例です。

use FacebookAds\Object\ProductAudience;

$product_audience = new ProductAudience(<PRODUCT_AUDIENCE_ID>);
$product_audience->read();
from facebookads.objects import ProductAudience

product_audience = ProductAudience(<PRODUCT_AUDIENCE_ID>)
product_audience.remote_read()
CustomAudience customAudience2 = new CustomAudience(<PRODUCT_AUDIENCE_ID>, context).get()
  .execute();
curl -G \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<PRODUCT_AUDIENCE_ID>