جماهير المنتج الديناميكي

تمكّنك إعلانات كتالوج Advantage+ من عرض الإعلانات على الأشخاص بناءً على النية الشرائية لهم التي تُستنتج على مستوى مختلف الأجهزة. ويمكنك تجميع إشارات النية الشرائية للمستخدمين من تطبيقات الهواتف المحمولة ومواقع الويب ثم استخدام هذه البيانات في إنشاء جمهور لاستهداف العملاء المحتملين.

يتناول هذا المستند كيفية:

الخطوة الأولى: إعداد إشارات المستخدم المرتبطة بالأحداث

لتجميع إشارات المستخدم، استخدم أحداث التطبيق لتطبيق الهواتف المحمولة لديك أو بيكسل Meta لموقع الويب لديك.

إذا كان لديك تطبيق وكنت تشغّل إعلانات على أجهزة الكمبيوتر، فلا يزال يلزمك تثبيت مجموعة Facebook SDK. ويساعد ذلك في تسجيل الإشارات وتوسيع نطاق جمهورك المستهدف.

أحداث التطبيق للهاتف المحمول

يجب إضافة الأحداث التالية إلى تطبيقك من خلال مجموعة Facebook SDK لنظام iOS ولنظام Android:

الحدثحدث iOSحدث Android

البحث

FBSDKAppEventNameSearched

EVENT_NAME_SEARCHED

عرض المحتوى

FBSDKAppEventNameViewedContent

EVENT_NAME_VIEWED_CONTENT

إضافة إلى عربة التسوق

FBSDKAppEventNameAddedToCart

EVENT_NAME_ADDED_TO_CART

شراء

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

EVENT_NAME_PURCHASED

يجب أن تتضمن كل هذه الأحداث 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+ القياسية التالية:

الاسمالوصف

fb_mobile_search

يبحث شخص ما عن المنتجات

fb_mobile_content_view

عندما يعرض حساب مركز الحسابات منتجًا

fb_mobile_add_to_cart

يضيف شخص ما عنصرًا إلى عربة التسوق

fb_mobile_purchase

يشتري حساب مركز الحسابات عنصر واحد أو أكثر

يجب أيضًا توفير معلمتين إضافيتين لكل حدث حتى يتم تسجيله بنجاح كحدث إعلانات كتالوج Advantage+ صالح. وتمثل هاتان المعلمتان معرف العنصر الذي يتم عرضه أو إضافته إلى عربة التسوق أو شراؤه وما إذا كان المعرف يشير إلى منتج ما أو معرف مجموعة منتجات. المعلمات الإضافية المتوفرة هي:

الاسمالوصف

fb_content_id

string (سلسلة)

يلزم توفير fb_content_id أو fb_content.
معرفات المنتج أو مجموعة المنتجات لدى بائع التجزئة. ومن المفترض أن تكون هذه المعلمة سلسلة تضم مصفوفة معرفات مشفرة بلغة JSON. استخدم معرفات المنتجات إن أمكن لضمان استهداف أكثر دقة.

fb_content

string (سلسلة)

يلزم توفير fb_content_id أو fb_content.
قائمة بكائنات JSON تحتوي على رقم المقالة العالمي (EAN) إذا أمكن أو معرفات محتوى أو منتج آخر، إلى جانب كميات وأسعار المنتجات.


الحقلان id وquantityمطلوبان.
مثال:
"[{\"id\": \"1234\", \"quantity\": 2}, {\"id\": \"5678\", \"quantity\": 1}]"

fb_content_type

string (سلسلة)

اختياري.
إما product أو product_group، الذي يحتاج إلى المزامنة مع نوع المعرفات الذي يتم استخدامه كـ fb_content_id.


إذا لم يتم تقديم أي fb_content_type، فستطابق Meta الحدث لكل عنصر يحتوي على المعرف ذاته، بغض النظر عن النوع.


راجع "اختيار content_type المناسب" للتعرف على المزيد.

_valueToSum

string (سلسلة)

اختياري.
القيمة الإجمالية للمنتجات.

fb_currency

string (سلسلة)

اختيارية.
عملة المنتج أو مبلغ الشراء.

ملاحظة: يفضل إرسال المعلمتين _valueToSum وfb_currency عند إجراء عملية شراء.

استخدام بيكسل Meta لمواقع الويب

يجب إضافة الأحداث التالية إلى موقع الويب، إذا أمكن:

  • Search
  • ViewCategory
  • ViewContent
  • AddToCart
  • Purchase

يجب إرسال هذه الأحداث مع تضمين معلمات البيانات التالية:

الاسمالوصف

content_ids

string أو string[] (سلسلة أو سلسلة[])

يلزم توفير content_ids أو contents.
معرفات المنتج أو مجموعة المنتجات لدى بائع التجزئة. استخدم معرفات المنتجات إن أمكن لضمان استهداف أكثر دقة.

contents

object[] (كائن[])

يلزم توفير content_ids أو contents.
قائمة بكائنات JSON تحتوي على معرفات المنتج أو معرفات مجموعة المنتجات لدى بائع التجزئة بالإضافة إلى معلومات إضافية حول المنتجات.


الحقلان id وquantityمطلوبان
المثال:. [{"id": "1234", "quantity": 2}, {"id": "5678", "quantity": 1}]

content_type

string (سلسلة)

اختياري.
إما product أو product_group، الذي يحتاج إلى المزامنة مع نوع المعرفات الذي يتم استخدامه كـ content_ids.


إذا لم يتم تقديم أي content_type، فستطابق Meta الحدث لكل عنصر يحتوي على المعرف ذاته، بغض النظر عن النوع.


راجع "اختيار content_type المناسب" للتعرف على المزيد.

product_catalog_id

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 &amp; 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

ملاحظة: يتعين عليك الحصول على أذونات في كتالوج المنتجات والبيكسل والتطبيق وكذلك النشاط التجاري.

المعلمات

الاسمالوصف

external_event_sources

مطلوبة.
مصفوفة من التطبيقات ومعرفات البيكسل المطلوب ربطها، في صورة معلمات سلسلة استعلام بتنسيق UTF-8

الخطوة الثالثة: إنشاء جماهير المنتج

تتمثل الخطوة التالية في إنشاء جماهير المنتج استنادًا إلى النشاط الذي يتم إجراؤه على تطبيقات الهواتف المحمولة وموقع الويب. ويمكنك اختيار الأحداث التي تريد استخدامها واستهداف الإعلانات باستخدام جماهير المنتج.

بالنسبة لأحداث التطبيق القياسية، سيتم تجميع الجمهور ضمن أسماء أحداث بيكسل الإعلانات:

  • 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

المعلمات

الاسمالوصف

name

string (سلسلة)

مطلوبة.
اسم الجمهور.

description

string (سلسلة)

اختيارية.
وصف الجمهور.

product_set_id

numeric string (سلسلة رقمية)

مطلوب. تمثل مجموعة المنتجات المطلوب استهدافها مع هذا الجمهور.

inclusions

JSON object (كائن JSON)

مطلوبة.
مجموعة الأحداث المطلوب استهدافها. ويلزم تضمين حدث واحد على الأقل. من المفترض أن يحتوي كل تضمين على حدث واحد فقط.

inclusions.retention_seconds

int (عدد صحيح)

مطلوب.
عدد الثواني اللازمة للاحتفاظ بحساب "مركز الحسابات" ضمن الجمهور.

inclusions.rule

object[] (كائن[])

مطلوبة.
قاعدة جماهير مخصصة لموقع الويب تشير إلى event واحد.

exclusions

JSON object (كائن JSON)

اختياري.
الأحداث التي يجب استبعاد حساب مركز الحسابات من الاستهداف من خلالها.
بالنسبة لعمليات الاستبعاد، سيتم استبعاد حساب مركز الحسابات الذي لديه هذه الأحداث من الاستهداف إذا كان الحدث قد وقع في أي منتج في مجموعة المنتجات نفسها (أي المنتجات التي لها قائمة بيانات المنتج item_group_id in نفسها).
على سبيل المثال، تم تعيين جمهور المنتج ليتضمن ViewContent ويستبعد أحداث الشراء. يعرض حساب مركز الحسابات المنتج أ والمنتج ب ويقرر شراء المنتج ب. إذا كان المنتج أ والمنتج ب ينتميان إلى فئة المنتجات نفسها، فسيتم استبعاد حساب مركز الحسابات من جمهور المنتج لأن أ وب مجرد أشكال متنوعة. إن لم يكن المنتجان أ وب ضمن فئة المنتجات نفسها، فسيظل حساب مركز الحسابات منتميًا للجمهور لأنه لا يزال لديه حدث ViewContent للمنتج أ.

exclusions.retention_seconds

int (عدد صحيح)

مطلوبة، إذا تم تحديد الاستبعاد.
تمثل عدد الثواني المحددة للاحتفاظ بالاستبعاد.

exclusions.rule

object[] (كائن[])

مطلوبة، إذا تم تحديد الاستبعاد.
قاعدة الجمهور المخصص لموقع الويب التي تشير إلى event واحد.

يتعين أن تتضمن كل قاعدة 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
'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'}}}], })

إذا كنت تريد استهداف أشخاص عرضوا منتجًا على الويب من خلال هاتف 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
'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'}}}], })

استرداد جماهير المنتج

بمجرد إنشاء جمهور منتج، يمكنك استرداده من خلال 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 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' }, })

لاسترداد جمهور منتج محدد:

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>