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:
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.
Anda harus menambahkan peristiwa berikut ke aplikasi Anda melalui Facebook SDK untuk iOS dan Android:
Peristiwa | Peristiwa iOS | Peristiwa Android |
---|---|---|
Cari |
|
|
Lihat Konten |
|
|
Tambahkan ke Keranjang Belanja |
|
|
Pembelian | // Kirim melalui logPurchase |
|
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.
Peristiwa Penambahan ke Keranjang di iOS:
[[FBSDKAppEvents shared] 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 shared] 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.
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:
Nama | Deskripsi |
---|---|
| Seseorang mencari produk |
| Ketika akun Pusat Akun melihat suatu produk |
| Seseorang menambahkan barang ke keranjang belanja |
| 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:
Nama | Deskripsi |
---|---|
string | Salah satu dari |
string | Salah satu dari Kolom |
string | Opsional. Jika tidak ada Lihat "Memilih |
string | Opsional. |
string | Opsional. |
Catatan: Disarankan untuk mengirim parameter _valueToSum
dan fb_currency
ketika pembelian dilakukan.
Peristiwa berikut harus ditambahkan ke situs web Anda, jika berlaku:
Search
ViewCategory
ViewContent
AddToCart
Purchase
Peristiwa ini harus dikirim dengan parameter data berikut:
Nama | Deskripsi |
---|---|
string atau string[] | Salah satu dari |
objek[] | Salah satu dari Kolom |
string | Opsional. Jika tidak ada Lihat "Memilih |
string | Opsional. |
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 & 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 -->
content_type
yang tepatCatatan: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.
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.
Nama | Deskripsi |
---|---|
| Wajib. |
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/v21.0
/act_AD_ACCOUNT_ID/product_audiences
Nama | Deskripsi |
---|---|
string | Wajib. |
string | Opsional. |
string numerik | Wajib. Set produk untuk penargetan dengan pemirsa ini. |
Objek JSON | Wajib. |
int | Wajib. |
objek[] | Wajib. |
Objek JSON | Opsional. |
int | Wajib, jika pengecualian ditentukan. |
objek[] | Wajib, jika pengecualian ditentukan. |
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.
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/v21.0/act_<AD_ACCOUNT_ID>/product_audiences
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/v21.0/act_<AD_ACCOUNT_ID>/product_audiences
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.
Untuk mengambil Pemirsa Khusus:
curl -X GET \
-d 'fields="data_source,subtype"' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/customaudiences
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>