Đối tượng động của sản phẩm

Với quảng cáo danh mục Advantage+, bạn có thể hiển thị quảng cáo cho mọi người dựa trên ý định mua hàng của họ trên nhiều thiết bị. Bạn có thể thu thập tín hiệu về ý định của người dùng từ các ứng dụng di động và trang web, sau đó dùng dữ liệu này để tạo đối tượng nhằm nhắm mục tiêu đến khách hàng tiềm năng.

Tài liệu này đề cập đến cách:

Bước 1: Thiết lập tín hiệu của người dùng cho các sự kiện

Để thu thập tín hiệu của người dùng, bạn cần dùng Sự kiện trong ứng dụng (đối với ứng dụng di động) hoặc Meta Pixel (đối với trang web).

Nếu có một ứng dụng và hiện chỉ chạy quảng cáo trên máy tính, bạn vẫn nên cài đặt Facebook SDK. Nhờ vậy, bạn có thể thu thập tín hiệu và mở rộng đối tượng mục tiêu của mình.

Sự kiện trong ứng dụng đối với di động

Bạn phải thêm những sự kiện sau đây vào ứng dụng của mình thông qua Facebook SDK dành cho iOSAndroid:

Sự kiệnSự kiện trên iOSSự kiện trên Android

Tìm kiếm

FBSDKAppEventNameSearched

EVENT_NAME_SEARCHED

Xem nội dung

FBSDKAppEventNameViewedContent

EVENT_NAME_VIEWED_CONTENT

Thêm vào giỏ hàng

FBSDKAppEventNameAddedToCart

EVENT_NAME_ADDED_TO_CART

Mua hàng

// Gửi thông qua logPurchase
[[FBSDKAppEvents shared] logPurchase:(double) currency:(NSString *) parameters:(NSDictionary *)];

EVENT_NAME_PURCHASED

Tất cả những sự kiện này phải bao gồm content_id (hoặc mảng content_id ở định dạng JSON).

Khác với Meta Pixel, Sự kiện trong ứng dụng không có thông số product_catalog_id. Do đó, bạn phải tạo liên kết giữa danh mục và ứng dụng của mình bằng điểm cuối external_event_sources như mô tả bên dưới.

Ví dụ

Sự kiện Thêm vào giỏ hàng trên iOS:

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

Sự kiện Mua hàng trên iOS có 2 mặt hàng khác nhau được mua kèm theo số lượng:

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

Sự kiện Mua hàng trên Android có 2 mặt hàng khác nhau được mua kèm theo số lượng:

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
);

Sự kiện Mua hàng trên Android có 2 mặt hàng được mua:

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
);

Lưu ý rằng bạn có thể dùng CONTENT_ID hoặc CONTENT với quảng cáo danh mục Advantage+ để báo cáo ID sản phẩm. Với thông số CONTENT, bạn có thể cung cấp thêm thông tin về các sản phẩm.

Sử dụng đối tác đo lường di động

Để sử dụng quảng cáo danh mục Advantage+ với một đối tác đo lường di động (MMP), bạn phải kích hoạt các sự kiện bắt buộc riêng biệt khi ai đó dùng ứng dụng của bạn. Những điểm tương tác chính mà bạn nên theo dõi là khi ai đó tìm kiếm sản phẩm, xem sản phẩm, thêm sản phẩm nào đó vào giỏ hàng và mua hàng. Bạn phải chọn các sự kiện tại MMP của mình tương ứng với những sự kiện tiêu chuẩn sau đây trong quảng cáo danh mục Advantage+:

TênMô tả

fb_mobile_search

Ai đó tìm kiếm sản phẩm

fb_mobile_content_view

Khi một tài khoản trong Trung tâm tài khoản xem sản phẩm

fb_mobile_add_to_cart

Ai đó thêm một mặt hàng vào giỏ hàng

fb_mobile_purchase

Một tài khoản trong Trung tâm tài khoản mua một hoặc nhiều mặt hàng

Ngoài ra, bạn cần có 2 thông số bổ sung cho mỗi sự kiện để đăng ký thành công dưới dạng sự kiện hợp lệ trong quảng cáo danh mục Advantage+. 2 thông số này biểu thị ID của mặt hàng đang được xem/thêm vào giỏ hàng/mua và cho biết liệu ID đó là ID của sản phẩm hay của nhóm sản phẩm. Dưới đây là các thông số bổ sung hiện có:

TênMô tả

fb_content_id

chuỗi

Bắt buộc phải có fb_content_id hoặc fb_content.
(Các) ID sản phẩm hoặc ID nhóm sản phẩm của nhà bán lẻ. Đây phải là chuỗi chứa mảng ID được mã hóa JSON. Hãy sử dụng ID sản phẩm nếu có thể để nhắm mục tiêu chính xác hơn.

fb_content

chuỗi

Bắt buộc phải có fb_content_id hoặc fb_content.
Danh sách đối tượng JSON chứa Số mã hóa hàng hóa quốc tế (EAN) (nếu có) hoặc (các) thông tin nhận dạng nội dung/sản phẩm khác, cũng như thông tin về số lượng và giá của sản phẩm.


Bắt buộc phải có trường idquantity.
Ví dụ:
"[{\"id\": \"1234\", \"quantity\": 2}, {\"id\": \"5678\", \"quantity\": 1}]"

fb_content_type

chuỗi

Không bắt buộc.
product hoặc product_group. Các giá trị này cần phải đồng bộ với loại ID được dùng làm fb_content_id.


Nếu không có fb_content_type nào được cung cấp, Meta sẽ khớp sự kiện với mọi mặt hàng có cùng ID, bất kể loại ID.


Hãy xem phần "Chọn đúng content_type" để tìm hiểu thêm.

_valueToSum

chuỗi

Không bắt buộc.
Tổng giá trị của sản phẩm.

fb_currency

chuỗi

Không bắt buộc.
Đơn vị tiền tệ của sản phẩm hoặc số tiền mua hàng.

Lưu ý: Bạn nên gửi các thông số _valueToSumfb_currency khi một giao dịch mua hàng được thực hiện.

Sử dụng Meta Pixel đối với trang web

Nếu có thể, bạn phải thêm những sự kiện sau đây vào trang web của mình:

  • Search
  • ViewCategory
  • ViewContent
  • AddToCart
  • Purchase

Bạn phải gửi các sự kiện này cùng với những thông số dữ liệu sau đây:

TênMô tả

content_ids

chuỗi hoặc chuỗi[]

Bắt buộc phải có content_ids hoặc contents.
(Các) ID sản phẩm hoặc ID nhóm sản phẩm của nhà bán lẻ. Hãy sử dụng ID sản phẩm nếu có thể để nhắm mục tiêu chính xác hơn.

contents

đối tượng[]

Bắt buộc phải có content_ids hoặc contents.
Danh sách đối tượng JSON chứa (các) ID sản phẩm hoặc ID nhóm sản phẩm của nhà bán lẻ, cũng như thông tin bổ sung về các sản phẩm.


Bắt buộc phải có trường idquantity
Ví dụ:. [{"id": "1234", "quantity": 2}, {"id": "5678", "quantity": 1}]

content_type

chuỗi

Không bắt buộc.
product hoặc product_group. Các giá trị này cần phải đồng bộ với loại ID được dùng làm content_ids.


Nếu không có content_type nào được cung cấp, Meta sẽ khớp sự kiện với mọi mặt hàng có cùng ID, bất kể loại ID.


Hãy xem phần "Chọn đúng content_type" để tìm hiểu thêm.

product_catalog_id

chuỗi

Không bắt buộc.
Danh mục sản phẩm sẽ được sử dụng. Nếu được cung cấp, đây sẽ là danh mục duy nhất liên kết với lượt kích hoạt Pixel. Nếu không được cung cấp, (các) danh mục liên kết với Pixel của bạn sẽ được sử dụng.
Hãy xem phần Liên kết tín hiệu của người dùng với danh mục sản phẩm để tìm hiểu thêm.

Ví dụ

Dưới đây là ví dụ minh họa sự kiện tiêu chuẩn Search. Bạn nên cung cấp từ 5 đến 10 mặt hàng trong content_ids dựa trên những kết quả tìm kiếm hàng đầu của mình.

<!-- 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 -->

Dưới đây là ví dụ minh họa sự kiện ViewCategory. Bạn nên cung cấp từ 5 đến 10 mặt hàng trong content_ids dựa trên những kết quả hàng đầu của mình. Lưu ý rằng ViewCategory không phải là sự kiện tiêu chuẩn nên hàm trackCustom sẽ được sử dụng.

<!-- 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 -->

Dưới đây là ví dụ minh họa sự kiện tiêu chuẩn ViewContent. Hãy xem phần Meta Pixel để biết thêm chi tiết về cách thiết lập Pixel.

<!-- 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 -->

Sự kiện tiêu chuẩn AddToCart phụ thuộc vào cách nền tảng thương mại điện tử của bạn xử lý quá trình thêm mặt hàng vào giỏ hàng. Nếu quá trình đó diễn ra tự động, sự kiện này sẽ được đặt trong trình xử lý sự kiện onclick để hệ thống kích hoạt sự kiện này khi có người nhấp vào nút. Nếu quá trình đó tải một trang riêng biệt, sự kiện Pixel có thể được kích hoạt như bình thường.

<!-- 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 -->

Nếu sự kiện này cần được kích hoạt khi có người nhấp vào nút và không tải trang riêng biệt nào:

<!-- 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>

Sự kiện tiêu chuẩn Purchase có 2 mặt hàng kèm theo số lượng:

<!-- 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 -->

Sự kiện tiêu chuẩn Purchase có 2 mặt hàng:

<!-- 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 -->

Chọn đúng content_type

Lưu ý:fb_content_type là loại nội dung dành cho di động.

Nếu nội dung của trang là về một SKU cụ thể (kích thước, màu sắc nào đó, v.v.), hãy sử dụng product cho content_type và chuyển ID sản phẩm (tức là cột id trong Nguồn cấp dữ liệu sản phẩm) qua content_ids. Tất cả sự kiện AddToCartPurchase đều phải sử dụng content_type=product vì mọi người sẽ mua các sản phẩm cụ thể. Mọi người sẽ không mua một chiếc áo sơ mi chung chung, không có kích cỡ và màu sắc rõ ràng; họ sẽ mua một chiếc áo sơ mi cụ thể, có kích cỡ và màu sắc riêng.

Nếu nội dung trang là về một nhóm sản phẩm liên quan khác nhau về kích thước, màu sắc, v.v. nhưng thuộc cùng một nhóm sản phẩm, hãy sử dụng product_group và chuyển ID nhóm sản phẩm (tức là cột item_group_id trong Nguồn cấp dữ liệu sản phẩm) qua content_ids. Một trường hợp sử dụng phổ biến là trang ViewContent, trong đó người dùng chưa chọn kích thước. Không sử dụngproduct_group với AddToCart hoặc Purchase.

Điều quan trọng là content_type phải khớp với loại ID có trong thông số content_ids hoặc contents.

Việc chuyển các ID sản phẩm cụ thể (content_type=product) sẽ giúp Meta biết người dùng đã thể hiện sự quan tâm đến mẫu mã cụ thể nào (kích thước, màu sắc, v.v.), từ đó có thể đề xuất các sản phẩm phù hợp hơn. Chúng tôi sẽ luôn hiển thị sản phẩm (chứ không phải nhóm sản phẩm), ngay cả khi content_type=product_group.

Nếu không có content_type nào được cung cấp, Meta sẽ khớp sự kiện với mọi mặt hàng có cùng ID, bất kể loại ID. Bạn nên gửi content_type, vì nhờ đó bạn có thể kiểm soát tốt hơn ID cụ thể mà mình muốn so khớp với sự kiện.

Bước 2: Liên kết tín hiệu của người dùng với danh mục sản phẩm

Bạn cần liên kết các nguồn sự kiện với từng danh mục sản phẩm để Facebook có thể tải dữ liệu này và hiển thị đúng sản phẩm trong quảng cáo. Để thực hiện việc này, bạn có thể truy cập vào Trang danh mục của Trình quản lý kinh doanh rồi nhấp vào nút Liên kết nguồn sự kiện. Hãy nhớ chọn ứng dụng và Pixel sẽ nhận các sự kiện trong quảng cáo danh mục Advantage+.

Ngoài ra, bạn có thể thực hiện lệnh gọi API HTTP POST với danh sách gồm các nguồn sự kiện bên ngoài dưới dạng thông số chuỗi truy vấn được mã hóa UTF-8:

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

Lưu ý: Bạn cần có các quyền đối với danh mục, Pixel và ứng dụng cũng như doanh nghiệp.

Thông số

TênMô tả

external_event_sources

Bắt buộc.
Một mảng gồm các ID ứng dụng và ID pixel cần liên kết, dưới dạng thông số chuỗi truy vấn được mã hóa UTF-8

Bước 3: Tạo đối tượng của sản phẩm

Bước tiếp theo là tạo đối tượng của sản phẩm dựa vào hoạt động trên trang web và các ứng dụng di động của bạn. Bạn có thể chọn sự kiện sẽ sử dụng và nhắm mục tiêu quảng cáo bằng đối tượng của sản phẩm.

Đối với các sự kiện tiêu chuẩn trong ứng dụng, đối tượng sẽ được tổng hợp theo tên sự kiện Pixel trong quảng cáo:

  • Search
  • ViewContent
  • AddToCart
  • Purchase

Hãy sử dụng các tên sự kiện nêu trên trong quy tắc đối tượng của bạn, ngay cả khi đối tượng đó bao gồm người dùng trên Android và iOS.

Để tạo đối tượng của sản phẩm, hãy thực hiện lệnh gọi API POST đến điểm cuối /act_{ad-account-id}/product_audiences.

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

Thông số

TênMô tả

name

chuỗi

Bắt buộc.
Tên đối tượng.

description

chuỗi

Không bắt buộc.
Nội dung mô tả về đối tượng.

product_set_id

chuỗi số

Bắt buộc. Nhóm sản phẩm cần nhắm mục tiêu bằng đối tượng này.

inclusions

Đối tượng JSON

Bắt buộc.
Một nhóm sự kiện cần nhắm mục tiêu. Cần có ít nhất một trường hợp bao gồm. Mỗi trường hợp bao gồm phải có đúng một sự kiện.

inclusions.retention_seconds

số nguyên

Bắt buộc.
Số giây cần giữ tài khoản trong Trung tâm tài khoản ở đối tượng.

inclusions.rule

đối tượng[]

Bắt buộc.
Quy tắc tạo đối tượng tùy chỉnh từ trang web tham chiếu đến một event.

exclusions

Đối tượng JSON

Không bắt buộc.
Các sự kiện theo đó một tài khoản trong Trung tâm tài khoản sẽ bị loại trừ khỏi quá trình nhắm mục tiêu.
Đối với trường hợp loại trừ, một tài khoản trong Trung tâm tài khoản có các sự kiện này sẽ bị loại trừ khỏi quá trình nhắm mục tiêu nếu sự kiện đó xảy ra trên bất kỳ sản phẩm nào thuộc cùng một nhóm sản phẩm (tức là các sản phẩm có cùng item_group_id in trong nguồn cấp dữ liệu sản phẩm).
Ví dụ: đối tượng của sản phẩm được đặt là bao gồm sự kiện ViewContent và loại trừ sự kiện Purchase (Mua hàng). Một tài khoản trong Trung tâm tài khoản xem sản phẩm A và B rồi mua sản phẩm B. Nếu sản phẩm A và sản phẩm B thuộc cùng một nhóm sản phẩm, tài khoản trong Trung tâm tài khoản đó sẽ bị loại trừ khỏi đối tượng của sản phẩm bởi vì A và B chỉ là các mẫu mã. Nếu sản phẩm A và sản phẩm B không thuộc cùng một nhóm sản phẩm, tài khoản trong Trung tâm tài khoản đó sẽ tiếp tục thuộc đối tượng này bởi vì vẫn có sự kiện ViewContent cho sản phẩm A.

exclusions.retention_seconds

số nguyên

Bắt buộc, nếu bạn chỉ định trường hợp loại trừ.
Số giây cần duy trì trường hợp loại trừ.

exclusions.rule

đối tượng[]

Bắt buộc, nếu bạn chỉ định trường hợp loại trừ.
Quy tắc tạo đối tượng tùy chỉnh từ trang web tham chiếu đến một event.

Mỗi quy tắc phải thêm event bằng toán tử eq dưới dạng quy tắc ở cấp độ cao nhất hoặc dưới dạng một phần của quy tắc and ở cấp độ cao nhất.

Nếu cả trường hợp bao gồm lẫn trường hợp loại trừ đều sử dụng cùng một event, bất kỳ lần kiểm tra thông số bổ sung nào cũng phải giống hệt nhau.

Ví dụ

Để tạo một đối tượng nhắm mục tiêu đến những người đã xem hoặc thêm sản phẩm vào giỏ hàng nhưng chưa mua:

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'}}}], })

Nếu bạn muốn nhắm mục tiêu đến những người đã xem sản phẩm trên web bằng iPhone nhưng chưa mua trên bất kỳ thiết bị nào, hãy tạo đối tượng như bên dưới.

Ví dụ sau đây giả sử rằng bạn thêm thông số userAgent vào Meta Pixel của mình.

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'}}}], })

Truy xuất đối tượng của sản phẩm

Sau khi tạo đối tượng của sản phẩm, bạn có thể truy xuất đối tượng này bằng API Đối tượng tùy chỉnh. Bạn có thể lấy các thông số ban đầu được dùng để tạo đối tượng bằng thông số data_source.

Đối tượng của sản phẩm là một loại đối tượng tùy chỉnh cụ thể được tạo động từ các sự kiện sản phẩm. Điểm cuối act_{ad-account-id}/product_audiences là một điểm cuối POST đặc biệt dùng để tạo các đối tượng này.

Ví dụ

Cách truy xuất Đối tượng tùy chỉnh:

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' }, })

Cách truy xuất đối tượng cụ thể của sản phẩm:

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>