تمكّنك إعلانات كتالوج Advantage+ من عرض الإعلانات على الأشخاص بناءً على النية الشرائية لهم التي تُستنتج على مستوى مختلف الأجهزة. ويمكنك تجميع إشارات النية الشرائية للمستخدمين من تطبيقات الهواتف المحمولة ومواقع الويب ثم استخدام هذه البيانات في إنشاء جمهور لاستهداف العملاء المحتملين.
يتناول هذا المستند كيفية:
لتجميع إشارات المستخدم، استخدم أحداث التطبيق لتطبيق الهواتف المحمولة لديك أو بيكسل Meta لموقع الويب لديك.
إذا كان لديك تطبيق وكنت تشغّل إعلانات على أجهزة الكمبيوتر، فلا يزال يلزمك تثبيت مجموعة Facebook SDK. ويساعد ذلك في تسجيل الإشارات وتوسيع نطاق جمهورك المستهدف.
يجب إضافة الأحداث التالية إلى تطبيقك من خلال مجموعة Facebook SDK لنظام iOS ولنظام Android:
الحدث | حدث iOS | حدث Android |
---|---|---|
البحث |
|
|
عرض المحتوى |
|
|
إضافة إلى عربة التسوق |
|
|
شراء | // Send through logPurchase |
|
يجب أن تتضمن كل هذه الأحداث content_id
(أو مصفوفة JSON تتضمن content_id
).
على عكس بيكسل 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
مع إعلانات كتالوج Advantage+ للإبلاغ عن معرفات المنتجات. ستتيح لك المعلمة CONTENT
تقديم معلومات إضافية حول المنتجات.
لاستخدام إعلانات كتالوج Advantage+ مع شريك قياس أداء تطبيقات الهواتف المحمولة (MMP)، يتعين عليك تشغيل أحداث منفصلة مطلوبة عندما يستخدم أحد الأشخاص تطبيقك. وتتمثل نقاط التفاعل الأساسية التي ينبغي عليك تتبعها في قيام أحد الأشخاص بالبحث عن المنتجات وعرض منتج ما وإضافة أحد العناصر إلى عربة التسوق وشراء المنتجات. يتعين عليك تحديد الأحداث في MMP التي تتطابق مع أحداث إعلانات كتالوج Advantage+ القياسية التالية:
الاسم | الوصف |
---|---|
| يبحث شخص ما عن المنتجات |
| عندما يعرض حساب مركز الحسابات منتجًا |
| يضيف شخص ما عنصرًا إلى عربة التسوق |
| يشتري حساب مركز الحسابات عنصر واحد أو أكثر |
يجب أيضًا توفير معلمتين إضافيتين لكل حدث حتى يتم تسجيله بنجاح كحدث إعلانات كتالوج Advantage+ صالح. وتمثل هاتان المعلمتان معرف العنصر الذي يتم عرضه أو إضافته إلى عربة التسوق أو شراؤه وما إذا كان المعرف يشير إلى منتج ما أو معرف مجموعة منتجات. المعلمات الإضافية المتوفرة هي:
الاسم | الوصف |
---|---|
string (سلسلة) | يلزم توفير |
string (سلسلة) | يلزم توفير الحقلان |
string (سلسلة) | اختياري. إذا لم يتم تقديم أي راجع "اختيار |
string (سلسلة) | اختياري. |
string (سلسلة) | اختيارية. |
ملاحظة: يفضل إرسال المعلمتين _valueToSum
وfb_currency
عند إجراء عملية شراء.
يجب إضافة الأحداث التالية إلى موقع الويب، إذا أمكن:
Search
ViewCategory
ViewContent
AddToCart
Purchase
يجب إرسال هذه الأحداث مع تضمين معلمات البيانات التالية:
الاسم | الوصف |
---|---|
string أو string[] (سلسلة أو سلسلة[]) | يلزم توفير |
object[] (كائن[]) | يلزم توفير الحقلان |
string (سلسلة) | اختياري. إذا لم يتم تقديم أي راجع "اختيار |
string (سلسلة) | اختيارية. |
يوجد أدناه حدث Search
قياسي. ننصح بإدخال من 5 إلى 10 عناصر في content_ids
من أبرز نتائج البحث.
<!-- Facebook Pixel Code --> <script> !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); // Insert Your Facebook Pixel ID below. fbq('init', '<FB_PIXEL_ID>'); fbq('track', 'PageView'); fbq('track', 'Search', { search_string: 'leather sandals', content_ids: ['1234', '2424', '1318', '6832'], // top 5-10 search results content_type: 'product' }); </script> <!-- End Facebook Pixel Code -->
فيما يلي حدث ViewCategory
. ننصح بإدخال من 5 إلى 10 عناصر في content_ids
من أبرز النتائج. لاحظ أن ViewCategory
ليس حدثًا قياسيًا، وبالتالي يتم استخدام الوظيفة trackCustom
.
<!-- Facebook Pixel Code --> <script> !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); // Insert Your Facebook Pixel ID below. fbq('init', '<FB_PIXEL_ID>'); fbq('track', 'PageView'); fbq('trackCustom', 'ViewCategory', { content_name: 'Really Fast Running Shoes', content_category: 'Apparel & 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 (وحدة حفظ مخزون) معينة (مقاس محدد، لون محدد، وما إلى ذلك)، فاستخدم product
مع content_type
وأدخل معرفات المنتجات (أي عمود id
في قائمة المنتجات) في content_ids
. يجب على كل أحداث AddToCart
وPurchase
استخدام content_type=product
بسبب شراء الأشخاص لمنتجات معيّنة. فالأشخاص لا يشترون قميصًا بلا شكل بمقاس ولون غير محددين، بل يشترون قميصًا محددًا بلون ومقاس معين.
إذا كانت الصفحة تدور حول مجموعة من المنتجات المرتبطة التي تختلف حسب الحجم واللون وغير ذلك ولكنها تنتمي إلى مجموعة المنتجات نفسها، فاستخدم product_group
وأدخل معرفات مجموعة المنتجات (أي عمود item_group_id
في قائمة المنتجات) في content_ids
. حالة الاستخدام الشائعة هي صفحة ViewContent
حيث لم يحدد المستخدم أي حجم حتى الآن. لا تستخدمproduct_group
مع AddToCart
أو Purchase
.
من المهم أن يتطابق content_type
مع نوع المعرفات الموجودة في المعلمة content_ids
أو المعلمة contents
.
يتيح إدخال معرفات المنتجات المحددة (content_type=product
) لـ Meta التوصية بالمزيد من المنتجات ذات الصلة نظرًا إلى أنها تدرك الأشكال المتنوعة المحددة (المقاس، اللون، وغير ذلك) التي عبّر المستخدم عن اهتمامه بها. سنعرض دائمًا المنتجات (وليس مجموعات المنتجات) حتى في حالة content_type=product_group
.
إذا لم يتم تقديم أي content_type
، فستطابق Meta الحدث لكل عنصر يحتوي على المعرف ذاته، بغض النظر عن النوع. يوصى بإرسال content_type
، حيث إنه سيمنحك المزيد من التحكم في المعرف المحدد الذي تريد مطابقة الحدث معه.
يجب ربط مصادر الحدث بكل كتالوج منتجات متوفر لديك بحيث يتمكّن فيسبوك من الحصول على هذه البيانات وعرض المنتج الصحيح في الإعلان. يمكنك القيام بذلك من خلال زيارة صفحة كتالوج المنتجات في مدير الأعمال والنقر على الزر ربط مصدر الحدث. تأكد من تحديد التطبيق والبيكسل اللذين سيتلقيان أحداث إعلانات كتالوج Advantage+.
وبدلاً من ذلك، يمكنك إجراء استدعاء API POST
يتضمن قائمة بمصادر الأحداث الخارجية كمعلمات سلسلة استعلام بتنسيق 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
ملاحظة: يتعين عليك الحصول على أذونات في كتالوج المنتجات والبيكسل والتطبيق وكذلك النشاط التجاري.
الاسم | الوصف |
---|---|
| مطلوبة. |
تتمثل الخطوة التالية في إنشاء جماهير المنتج استنادًا إلى النشاط الذي يتم إجراؤه على تطبيقات الهواتف المحمولة وموقع الويب. ويمكنك اختيار الأحداث التي تريد استخدامها واستهداف الإعلانات باستخدام جماهير المنتج.
بالنسبة لأحداث التطبيق القياسية، سيتم تجميع الجمهور ضمن أسماء أحداث بيكسل الإعلانات:
Search
ViewContent
AddToCart
Purchase
استخدم أسماء الأحداث هذه في قواعد الجمهور لديك، حتى إذا كانت تتضمن مستخدمين على نظامي Android وiOS.
أنشئ جمهورًا للمنتج من خلال إجراء استدعاء API POST
لنقطة النهاية /act_{ad-account-id}/product_audiences
.
https://graph.facebook.com/v21.0
/act_AD_ACCOUNT_ID/product_audiences
الاسم | الوصف |
---|---|
string (سلسلة) | مطلوبة. |
string (سلسلة) | اختيارية. |
numeric string (سلسلة رقمية) | مطلوب. تمثل مجموعة المنتجات المطلوب استهدافها مع هذا الجمهور. |
JSON object (كائن JSON) | مطلوبة. |
int (عدد صحيح) | مطلوب. |
object[] (كائن[]) | مطلوبة. |
JSON object (كائن JSON) | اختياري. |
int (عدد صحيح) | مطلوبة، إذا تم تحديد الاستبعاد. |
object[] (كائن[]) | مطلوبة، إذا تم تحديد الاستبعاد. |
يتعين أن تتضمن كل قاعدة event
مع عامل التشغيل eq
سواء كانت قاعدة عالية المستوى أو جزءًا من قاعدة and
عالية المستوى.
في حالة استخدام 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 ولكنهم لم يشتروا من خلال أي أجهزة، فيجب إنشاء الجمهور التالي.
يفترض هذا تضمين المعلمة userAgent
في بيكسل Meta.
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>