高效速成+ 目錄廣告可讓您依照用戶的跨裝置購買意願來顯示廣告。您可以從行動應用程式和網站收集用戶意願的訊號,然後利用此資料建立廣告受眾,以設定目標潛在顧客。
本文件說明以下做法:
若要收集用戶訊號,請使用應用程式事件(適用於行動應用程式)或 Meta 像素(適用於網站)。
如果您有應用程式,並且只在桌上型電腦上刊登廣告,仍應安裝 Facebook SDK。如此有助於擷取訊號並擴大目標廣告受眾。
您必須透過 iOS 和 Android 版 Facebook SDK,將下列事件加入應用程式:
事件 | iOS 事件 | Android 事件 |
---|---|---|
Search |
|
|
View Content |
|
|
Add To Cart |
|
|
Purchase | // 透過 logPurchase 傳送 |
|
所有這些事件均應包含 content_id
(或 content_id
的 JSON 陣列)。
不同於 Meta 像素,應用程式事件沒有 product_catalog_id
參數。因此,您必須利用下文描述的 external_event_sources
端點,在目錄與應用程式之間建立關聯。
iOS 上的「加到購物車」事件:
[[FBSDKAppEvents shared] logEvent:FBSDKAppEventNameAddedToCart valueToSum:54.23 parameters:@{ FBSDKAppEventParameterNameCurrency : @"USD", FBSDKAppEventParameterNameContentType : @"product", FBSDKAppEventParameterNameContentID : @"123456789" } ];
在 iOS 上購買兩項不同商品的購買事件,包含商品數量:
[[FBSDKAppEvents shared] logPurchase:21.97 currency:@"USD" parameters:@{ FBSDKAppEventParameterNameContent : @"[{\"id\":\"1234\",\"quantity\":2},{\"id\":\"5678\",\"quantity\":1}]", FBSDKAppEventParameterNameContentType : @"product" } ];
在 Android 上購買兩項商品的購買事件,包含商品數量:
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 );
在 Android 上購買兩項商品的購買事件:
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 );
請注意,CONTENT_ID
或 CONTENT
可與高效速成+ 目錄廣告搭配用來回報商品編號。CONTENT
參數可讓您提供商品的其他相關資訊。
若要使用高效速成+ 目錄廣告搭配行動衡量合作夥伴(MMP),應在用戶使用您的應用程式時,觸發個別的必要事件。您應追蹤的關鍵互動點包括:當用戶搜尋商品、瀏覽商品、將商品加入購物車,以及購買商品時。您應在 MMP 選擇對應於下列標準高效速成+ 目錄廣告事件的事件:
名稱 | 說明 |
---|---|
| 用戶搜尋商品 |
| 帳號管理中心帳號瀏覽商品時 |
| 用戶將商品加入購物車 |
| 帳號管理中心帳號購買一或多項商品 |
此外,每個事件需要兩個附加參數,才能成功註冊為有效的高效速成+ 目錄廣告事件。這兩個參數代表被瀏覽、加入購物車或購買的商品編號,以及該編號是商品編號或商品群組編號。可用的附加參數如下:
名稱 | 說明 |
---|---|
字串 |
|
字串 |
|
字串 | 選用項目。 若未提供 如需瞭解詳情,請參閱「選擇適當的 |
字串 | 選用項目。 |
字串 | 選用項目。 |
附註:建議在用戶進行購買時,傳送 _valueToSum
和 fb_currency
參數。
必須將下列事件加入網站(如適用):
Search
ViewCategory
ViewContent
AddToCart
Purchase
這些事件應與下列資料參數一起傳送:
名稱 | 說明 |
---|---|
字串或字串陣列 |
|
物件陣列 |
|
字串 | 選用項目。 若未提供 如需瞭解詳情,請參閱「選擇適當的 |
字串 | 選用項目。 |
Search
標準事件如下所示。建議在 content_ids
中提供熱門搜尋結果中的前 5 至 10 項商品。
<!-- 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
事件如下所示。建議在 content_ids
中提供熱門結果中的前 5 至 10 項商品。請注意,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 & 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
標準事件取決於電子商務平台如何處理將商品加入購物車的程序。如為動態方式,應將其放在 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>
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 -->
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_type
使用 product
,並在 content_ids
中傳遞商品編號(即「商品摘要」中的 id
欄位)。所有 AddToCart
和 Purchase
事件都應使用 content_type=product
,因為用戶會購買特定產品。用戶不會購買尺寸和顏色不明的不定形式襯衫;他們會購買特定尺寸和顏色的特定襯衫。
如果網頁是關於一組尺寸、顏色等不同的相關商品,但屬於同一個商品群組,則使用 product_group
,並在 content_ids
中傳遞商品群組編號(即「商品摘要」中的 item_group_id
欄位)。常見的使用案例是 ViewContent
頁面,在這個頁面中,用戶尚未選擇尺寸。請勿將 AddToCart
或 Purchase
與 product_group
搭配使用。
重要的是,content_type
必須符合 content_ids
或 contents
參數包含的編號類型。
傳遞特定商品編號(content_type=product
),有助於 Meta 推薦更多相關產品,因為 Facebook 知道用戶對哪些特定變數(尺寸、顏色等)感興趣。即使您傳遞的是 content_type=product_group
,我們還是會顯示產品(而不是產品群組)。
若未提供 content_type
,Meta 會將事件與具有相同編號的每個項目進行配對(與其類型無關)。建議您傳送 content_type
,因其可讓您更好地控制要與事件配對的特定編號。
您需要將事件來源與各商品目錄建立關聯,讓 Facebook 能取得此資料並在廣告中顯示正確的商品。若要建立關聯,請前往企業管理平台的目錄頁面,然後點擊連結事件來源按鈕。請務必選擇要接收高效速成+ 目錄廣告事件的應用程式和像素。
或者,您可以使用外部事件來源清單做為 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
附註:您必須有目錄、像素、應用程式和企業的權限。
名稱 | 說明 |
---|---|
| 必要項目。 |
接下來的步驟是要根據行動應用程式和網站上的活動,建置商品廣告受眾。您可選擇要使用哪些事件,並使用商品廣告受眾來鎖定廣告。
針對標準應用程式事件,廣告受眾將依廣告像素事件名稱彙整:
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
名稱 | 說明 |
---|---|
字串 | 必要項目。 |
字串 | 選用項目。 |
數值字串 | 必要項目。鎖定此廣告受眾的商品組合。 |
JSON 物件 | 必要項目。 |
整數 | 必要項目。 |
物件陣列 | 必要項目。 |
JSON 物件 | 選用項目。 |
整數 | 如果指定排除關係,則此為必要項目。 |
物件陣列 | 如果指定排除關係,則此為必要項目。 |
不論是做為頂層規則或是頂層 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
如果想要鎖定使用 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
建立商品廣告受眾後,可使用自訂廣告受眾 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 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>