Pemirsa Produk Dinamis

Dengan iklan katalog Advantage+, Anda bisa menampilkan iklan berdasarkan niat pembelian lintas-perangkat. Anda bisa mengumpulkan sinyal niat pengguna dari perangkat seluler dan situs web, lalu menggunakan data ini untuk membuat pemirsa untuk menargetkan kepada pelanggan prospektif.

Dokumen ini mencakup cara:

Langkah 1: Menyiapkan Sinyal Pengguna untuk Peristiwa

Untuk mengumpulkan sinyal pengguna, gunakan Peristiwa Aplikasi untuk aplikasi seluler Anda atau Meta Pixel untuk situs web Anda.

Jika Anda memiliki aplikasi dan hanya menjalankan iklan di desktop, Anda harus tetap menginstal Facebook SDK. Ini membantu menangkap sinyal dan memperluas pemirsa target Anda.

Peristiwa Aplikasi untuk Seluler

Anda harus menambahkan peristiwa berikut ke aplikasi Anda melalui Facebook SDK untuk iOS dan Android:

PeristiwaPeristiwa iOSPeristiwa Android

Pencarian

FBSDKAppEventNameSearched

EVENT_NAME_SEARCHED

Melihat Konten

FBSDKAppEventNameViewedContent

EVENT_NAME_VIEWED_CONTENT

Penambahan ke Keranjang Belanja

FBSDKAppEventNameAddedToCart

EVENT_NAME_ADDED_TO_CART

Pembelian

// Send through logPurchase
[FBSDKAppEvents logPurchase:(double) currency:(NSString *) parameters:(NSDictionary *)];

EVENT_NAME_PURCHASED

Semua peristiwa ini harus menyertakan content_id (atau array JSON dari content_id).

Tidak seperti Meta Pixel, Peristiwa Aplikasi tidak memiliki parameter product_catalog_id. Oleh karena itu, Anda harus membuat keterkaitan antara katalog dan aplikasi dengan endpoint external_event_sources yang dideskripsikan di bawah ini.

Contoh

Peristiwa Penambahan ke Keranjang di iOS:

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

Peristiwa pembelian pada iOS dengan dua barang yang berbeda dan dibeli dengan kuantitas:

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

Peristiwa pembelian pada Android dengan dua barang yang dibeli dengan kuantitas:

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

Peristiwa pembelian di Android dengan dua barang yang dibeli:

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

Perhatikan bahwa CONTENT_ID atau CONTENT dapat digunakan dengan iklan katalog Advantage+ untuk melaporkan ID produk. Parameter CONTENT memungkinkan Anda untuk memberikan informasi tambahan tentang produk.

Menggunakan Partner Pengukuran Seluler

Untuk menggunakan iklan katalog Advantage+ dengan partner pengukuran seluler (MMP), Anda harus memicu peristiwa yang diperlukan terpisah karena seseorang menggunakan aplikasi Anda. Titik interaksi utama yang harus Anda lacak adalah ketika seseorang mencari produk, melihat produk, menambahkan sesuatu ke keranjang belanja, dan membeli barang. Anda harus memilih peristiwa di MMP Anda yang sesuai dengan peristiwa iklan katalog Advantage+ standar berikut:

NamaDeskripsi

fb_mobile_search

Seseorang mencari produk

fb_mobile_content_view

Ketika akun Pusat Akun melihat suatu produk

fb_mobile_add_to_cart

Seseorang menambahkan barang ke keranjang belanja

fb_mobile_purchase

Akun Pusat Akun membeli satu atau beberapa item

Selain itu, Anda membutuhkan dua parameter tambahan untuk setiap peristiwa agar berhasil terdaftar sebagai peristiwa iklan katalog Advantage+ yang valid. Kedua parameter ini mewakili ID barang yang dilihat, ditambahkan ke keranjang atau dibeli, lalu apakah ID tersebut adalah sebuah produk atau ID grup produk. Berikut parameter tambahan yang tersedia:

NamaDeskripsi

fb_content_id

string

Salah satu dari fb_content_id atau fb_content diperlukan.
ID produk atau grup produk peritel. Ini seharusnya berupa string yang berisi array ID berenkode JSON. Gunakan ID produk jika memungkinkan untuk penargetan yang lebih akurat.

fb_content

string

Salah satu dari fb_content_id atau fb_content diperlukan.
Daftar objek JSON yang berisi Nomor Artikel Internasional (EAN) jika berlaku, atau pengidentifikasi produk atau konten lainnya, serta jumlah dan harga produk.


Kolom id dan quantity bersifat wajib.
Contoh:
"[{\"id\": \"1234\", \"quantity\": 2}, {\"id\": \"5678\", \"quantity\": 1}]"

fb_content_type

string

Opsional.
Salah satu dari product atau product_group, yang perlu disinkronkan dengan jenis ID yang digunakan sebagai fb_content_id.


Jika tidak ada fb_content_type yang disediakan, Meta akan mencocokkan peristiwa dengan setiap item yang memiliki ID yang sama, apa pun jenisnya.


Lihat "Memilih content_type yang tepat" untuk mempelajari selengkapnya.

_valueToSum

string

Opsional.
Nilai total produk.

fb_currency

string

Opsional.
Mata uang dari jumlah produk atau pembelian.

Catatan: Disarankan untuk mengirim parameter _valueToSum dan fb_currency ketika pembelian dilakukan.

Menggunakan Meta Pixel untuk Situs Web

Peristiwa berikut harus ditambahkan ke situs web Anda, jika berlaku:

  • Search
  • ViewCategory
  • ViewContent
  • AddToCart
  • Purchase

Peristiwa ini harus dikirim dengan parameter data berikut:

NamaDeskripsi

content_ids

string atau string[]

Salah satu dari content_ids atau contents diperlukan.
ID produk atau grup produk peritel. Gunakan ID produk jika memungkinkan untuk penargetan yang lebih akurat.

contents

objek[]

Salah satu dari content_ids atau contents diperlukan.
Daftar objek JSON yang berisi ID produk atau grup produk peritel serta informasi tambahan tentang produk.


Kolom id dan quantitydiperlukan
Contoh:. [{"id": "1234", "quantity": 2}, {"id": "5678", "quantity": 1}]

content_type

string

Opsional.
Salah satu dari product atau product_group, yang perlu disinkronkan dengan jenis ID yang digunakan sebagai content_ids.


Jika tidak ada content_type yang disediakan, Meta akan mencocokkan peristiwa dengan setiap item yang memiliki ID yang sama, apa pun jenisnya.


Lihat "Memilih content_type yang tepat" untuk mempelajari selengkapnya.

product_catalog_id

string

Opsional.
Katalog produk yang akan digunakan. Jika disediakan, ini akan menjadi satu-satunya pengaktifan Pixel katalog yang akan terkait. Jika ini tidak disediakan, katalog yang terkait dengan Pixel Anda akan digunakan.
Lihat <Kaitkan Sinyal Pengguna ke Katalog Produk untuk mempelajari selengkapnya.

Contoh

Peristiwa standar Search ditampilkan di bawah. Kami rekomendasikan untuk menyediakan 5 sampai 10 item dalam content_ids dari hasil pencarian teratas Anda.

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

Peristiwa ViewCategory ditampilkan di bawah. Kami rekomendasikan untuk menyediakan 5 hingga 10 item di content_ids dari hasil teratas. Perlu diperhatikan bahwa ViewCategory bukan peristiwa standar, jadi fungsi trackCustom digunakan.

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

Peristiwa standar ViewContent ditampilkan di bawah. Untuk detail selengkapnya tentang pengaturan Pixel, lihat Meta 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 -->

Peristiwa standar AddToCart bergantung pada cara platform eCommerce menangani penambahan barang ke keranjang belanja. Jika dilakukan secara dinamis ini harus ditempatkan di penangan peristiwa onclick sehingga terpicu saat tombol diklik. Jika halaman terpisah dimuat, maka peristiwa Pixel dapat diaktifkan seperti biasa.

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

Jika peristiwa tersebut perlu diaktifkan saat tombol diklik dan tidak ada halaman tersendiri yang dimuat:

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

Peristiwa standar Purchase dengan dua item dengan kuantitas:

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

Peristiwa standar Purchase dengan dua item:

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

Memilih content_type yang tepat

Catatan:fb_content_type adalah jenis konten untuk seluler.

Jika halaman adalah tentang SKU tertentu (ukuran khusus, warna, dan seterusnya), gunakan product untuk content_type dan teruskan ID produk (yaitu kolom id di Kabar Produk) di content_ids. Semua peristiwa AddToCart dan Purchase harus menggunakan content_type=product karena orang membeli produk tertentu. Orang-orang tidak membeli kaos amorf dengan ukuran dan warna yang tidak ditentukan; mereka membeli kaos tertentu dengan ukuran dan warna tertentu.

Jika halaman itu tentang grup produk terkait yang bervariasi berdasarkan ukuran, warna, dll. tetapi termasuk dalam grup produk yang sama, gunakan product_group dan teruskan ID grup produk (yaitu kolom item_group_id di Kabar Produk) di content_ids. Kasus penggunaan yang umum terjadi adalah halaman ViewContent yang ukurannya belum dipilih oleh pengguna. Jangan gunakanproduct_group dengan AddToCart atau Purchase.

Penting diperhatikan bahwa content_type cocok dengan jenis ID yang disertakan di parameter content_ids atau contents.

Meneruskan ID produk tertentu (content_type=product) memungkinkan Meta untuk merekomendasikan produk yang lebih relevan karena Facebook mengetahui varian spesifik mana (ukuran, warna, dan seterusnya) yang diminati pengguna. Kami akan selalu menunjukkan produk (bukan grup produk), bahkan jika content_type=product_group.

Jika tidak ada content_type yang disediakan, Meta akan mencocokkan peristiwa dengan setiap item yang memiliki ID yang sama, apa pun jenisnya. Mengirimkan content_type sangat direkomendasikan karena ini akan memberi Anda lebih banyak kontrol atas ID spesifik mana yang ingin Anda cocokkan dengan peristiwa tersebut.

Langkah 2: Mengaitkan Sinyal Pengguna dengan Katalog Produk

Anda perlu mengaitkan sumber peristiwa Anda dengan setiap katalog produk Anda sehingga Facebook bisa mendapatkan data ini dan menampilkan produk yang benar dalam iklan. Anda bisa melakukan ini dengan mengunjungi Halaman Katalog Pengelola Bisnis dan mengeklik tombol Kaitkan Sumber Peristiwa. Pastikan Anda memilih aplikasi dan Pixel yang akan menerima peristiwa iklan katalog Advantage+ tersebut.

Alternatifnya, Anda dapat membuat panggilan API POST dengan daftar sumber peristiwa eksternal sebagai parameter string kueri berenkode 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

Catatan: Anda perlu memiliki izin pada katalog, Pixel, aplikasi, serta bisnis.

Parameter

NamaDeskripsi

external_event_sources

Wajib.
Array aplikasi dan ID Pixel untuk dikaitkan, sebagai parameter string kueri berenkode UTF-8

Langkah 3: Membuat Pemirsa Produk

Langkah selanjutnya adalah membuat pemirsa produk, berdasarkan aktivitas pada aplikasi seluler dan situs web Anda. Anda dapat memilih peristiwa yang ingin digunakan dan menargetkan iklan menggunakan pemirsa produk Anda.

Untuk peristiwa aplikasi standar, pemirsa akan diagregasikan dengan nama peristiwa Pixel iklan:

  • Search
  • ViewContent
  • AddToCart
  • Purchase

Gunakan nama peristiwa ini pada aturan pemirsa, meski menyertakan pengguna di Android dan iOS.

Buat pemirsa produk dengan membuat panggilan API POST ke endpoint /act_{ad-account-id}/product_audiences.

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

Parameter

NamaDeskripsi

name

string

Wajib.
Nama pemirsa.

description

string

Opsional.
Deskripsi pemirsa.

product_set_id

string numerik

Wajib. Set produk untuk penargetan dengan pemirsa ini.

inclusions

Objek JSON

Wajib.
Set peristiwa untuk penargetan. Minimal satu inklusi diperlukan. Setiap inklusi harus memiliki tepat satu peristiwa.

inclusions.retention_seconds

int

Wajib.
Jumlah detik untuk mempertahankan akun Pusat Akun di dalam pemirsa.

inclusions.rule

objek[]

Wajib.
Aturan Pemirsa Khusus Situs Web mereferensikan satu event.

exclusions

Objek JSON

Opsional.
Peristiwa ketika akun Pusat Akun harus dikecualikan dari penargetan.
Untuk pengecualian, akun Pusat Akun dengan peristiwa ini akan dikecualikan dari penargetan jika peristiwa tersebut telah terjadi pada produk apa pun di grup produk yang sama (yaitu: produk yang memiliki item_group_id in yang sama di kabar produk).
Contoh: pemirsa produk diatur untuk mencakup ViewContent dan mengecualikan peristiwa Pembelian. Akun Pusat Akun melihat produk A dan B, lalu membeli produk B. Jika produk A dan produk B termasuk dalam grup produk yang sama, akun Pusat Akun tersebut akan dikecualikan dari pemirsa produk karena A dan B hanyalah varian. Jika produk A dan B tidak berada dalam grup produk yang sama, akun Pusat Akun tersebut akan terus tetap berada dalam pemirsa karena masih memiliki peristiwa ViewContent untuk produk A.

exclusions.retention_seconds

int

Wajib, jika pengecualian ditentukan.
Jumlah detik untuk mempertahankan pengecualian.

exclusions.rule

objek[]

Wajib, jika pengecualian ditentukan.
Aturan Pemirsa Khusus Situs Web mereferensikan satu event.

Masing-masing aturan mencakup event dengan operator eq baik sebagai aturan level atas atau sebagai bagian dari aturan and level atas.

Jika event yang sama digunakan dalam inklusi dan pengecualian, setiap pemeriksaan parameter tambahan harus persis sama.

Contoh

Untuk menargetkan orang-orang yang melihat atau menambahkan produk Anda ke keranjang, tetapi belum menyelesaikan pembelian:

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

Jika Anda ingin menargetkan orang yang melihat produk di web dengan iPhone, tetapi belum membeli di perangkat apa pun, buatlah pemirsa berikut.

Diasumsikan Anda menyertakan parameter userAgent di Meta Pixel.

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

Mengambil Pemirsa Produk

Setelah Anda membuat pemirsa produk, Anda bisa mengambil datanya dengan API Pemirsa Khusus. Anda bisa mendapatkan parameter asli yang digunakan untuk pembuatan pemirsa dengan parameter data_source.

Pemirsa produk adalah jenis spesifik pemirsa khusus yang secara dinamis dihasilkan dari peristiwa produk. Endpoint act_{ad-account-id}/product_audiences adalah endpoint POST spesial untuk membuat pemirsa ini.

Contoh

Untuk mengambil Pemirsa Khusus:

curl -X GET \ -d 'fields="data_source,subtype"' \ -d 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v19.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' }, })

Untuk mengambil pemirsa produk tertentu:

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>