กลุ่มเป้าหมายของสินค้าแบบไดนามิก

โฆษณาแค็ตตาล็อก Advantage+ ช่วยให้คุณแสดงโฆษณาให้กับผู้ใช้ตามความประสงค์ที่จะซื้อข้ามอุปกรณ์ได้ คุณสามารถรวบรวมสัญญาณความประสงค์ของผู้ใช้ได้จากแอพมือถือและเว็บไซต์ แล้วใช้ข้อมูลนี้ในการสร้างกลุ่มเป้าหมายเพื่อกำหนดเป้าหมายเป็นคนที่มีโอกาสเป็นลูกค้า

เอกสารนี้จะมีข้อมูลครอบคลุมถึงวิธีการดังต่อไปนี้

ขั้นตอนที่ 1: ตั้งค่าสัญญาณจากผู้ใช้สำหรับเหตุการณ์

ใช้เหตุการณ์ในแอพสำหรับแอพมือถือหรือพิกเซลของ Meta สำหรับเว็บไซต์ของคุณเพื่อรวบรวมสัญญาณจากผู้ใช้

หากคุณมีแอพและกำลังเผยแพร่โฆษณาบนเดสก์ท็อปเพียงอย่างเดียว คุณก็ยังคงควรที่จะติดตั้ง Facebook SDK ซึ่งจะช่วยให้รวบรวมสัญญาณและขยายกลุ่มเป้าหมายของคุณได้

เหตุการณ์ในแอพสำหรับมือถือ

คุณต้องเพิ่มเหตุการณ์ต่อไปนี้ลงในแอพของคุณผ่านทาง Facebook SDK สำหรับ iOS และ Android

เหตุการณ์เหตุการณ์ iOSเหตุการณ์ Android

การค้นหา

FBSDKAppEventNameSearched

EVENT_NAME_SEARCHED

ดูเนื้อหา

FBSDKAppEventNameViewedContent

EVENT_NAME_VIEWED_CONTENT

หยิบใส่รถเข็น

FBSDKAppEventNameAddedToCart

EVENT_NAME_ADDED_TO_CART

การซื้อ

// ส่งให้ผ่านทาง logPurchase
[FBSDKAppEvents logPurchase:(double) currency:(NSString *) parameters:(NSDictionary *)];

EVENT_NAME_PURCHASED

เหตุการณ์เหล่านี้ทั้งหมดควรมี content_id (หรืออาร์เรย์ JSON ของ content_id) รวมอยู่ด้วย

เหตุการณ์ในแอพไม่มีพารามิเตอร์ product_catalog_id ซึ่งต่างจากพิกเซลของ Meta ดังนั้น คุณจึงต้องทำการเชื่อมโยงระหว่างแค็ตตาล็อกกับแอพด้วยตำแหน่งข้อมูล external_event_sources ที่อธิบายไว้ด้านล่าง

ตัวอย่าง

เหตุการณ์หยิบใส่รถเข็นบน iOS:

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

เหตุการณ์การซื้อบน iOS ที่มีการซื้อสินค้าที่แตกต่างกัน 2 รายการพร้อมข้อมูลจำนวน:

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

เหตุการณ์การซื้อบน Android ที่มีการซื้อสินค้า 2 รายการพร้อมข้อมูลจำนวน:

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 ที่มีการซื้อสินค้า 2 รายการ:

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+ เพื่อรายงาน ID สินค้าได้ พารามิเตอร์ CONTENT จะช่วยให้คุณแสดงข้อมูลเพิ่มเติมเกี่ยวกับสินค้านั้นได้

การใช้พาร์ทเนอร์ด้านการวัดผลบนอุปกรณ์มือถือ

หากต้องการใช้โฆษณาแค็ตตาล็อก Advantage+ พร้อมพาร์ทเนอร์ด้านการวัดผลบนอุปกรณ์มือถือ (MMP) คุณควรกระตุ้นการทำงานเหตุการณ์จำเป็นที่แยกจากกันเมื่อมีผู้ใช้แอพของคุณ จุดโต้ตอบหลักที่คุณควรติดตาม คือ เวลาที่มีคนค้นหาสินค้า ดูสินค้า หยิบของบางชิ้นใส่รถเข็น และซื้อสินค้า คุณควรเลือกเหตุการณ์ที่ MMP ของคุณซึ่งสอดคล้องกับโฆษณาแค็ตตาล็อก Advantage+ มาตรฐานต่อไปนี้

ชื่อคำอธิบาย

fb_mobile_search

มีคนค้นหาสินค้า

fb_mobile_content_view

เมื่อมีบัญชีในศูนย์บัญชีเข้ามาดูสินค้า

fb_mobile_add_to_cart

มีคนหยิบสินค้าใส่รถเข็น

fb_mobile_purchase

เมื่อมีบัญชีในศูนย์บัญชีซื้อสินค้าตั้งแต่ 1 รายการขึ้นไป

นอกจากนี้ คุณจำเป็นต้องมีพารามิเตอร์เพิ่มเติม 2 รายการเพื่อให้ลงทะเบียนแต่ละเหตุการณ์เป็นเหตุการณ์โฆษณาแค็ตตาล็อก Advantage+ ที่ถูกต้องได้สำเร็จ พารามิเตอร์ 2 รายการเหล่านี้คือ ID ของสินค้าที่มีคนดู หยิบใส่รถเข็น หรือซื้อ และระบุว่า ID นั้นเป็น ID สินค้าหรือ ID กลุ่มสินค้า พารามิเตอร์เพิ่มเติมที่สามารถใช้ได้มีดังนี้

ชื่อคำอธิบาย

fb_content_id

สตริง

จำเป็นต้องระบุ fb_content_id หรือ fb_content รายการใดรายการหนึ่ง
ID สินค้าหรือ ID กลุ่มสินค้าของผู้ค้าปลีก ซึ่งควรเป็นสตริงที่มีอาร์เรย์ที่เข้ารหัส JSON ของ ID หากทำได้ ให้ใช้ ID สินค้าเพื่อให้การกำหนดเป้าหมายแม่นยำยิ่งขึ้น

fb_content

สตริง

จำเป็นต้องระบุ fb_content_id หรือ fb_content รายการใดรายการหนึ่ง
รายการอ็อบเจ็กต์ JSON ที่มีรหัสสินค้าสากล (EAN) หากมี หรือตัวระบุสินค้าหรือเนื้อหาอื่นๆ รวมถึงข้อมูลจำนวนและราคาของสินค้า


จำเป็นต้องระบุช่อง id และ quantity
ตัวอย่าง:
"[{\"id\": \"1234\", \"quantity\": 2}, {\"id\": \"5678\", \"quantity\": 1}]"

fb_content_type

สตริง

ระบุหรือไม่ก็ได้
product หรือ product_group รายการใดรายการหนึ่ง ซึ่งจะต้องซิงค์กับประเภทของ ID ที่ใช้เป็น fb_content_id


หากไม่ได้ระบุ fb_content_type Meta จะจับคู่เหตุการณ์กับสินค้าทุกรายการที่มี ID ตรงกัน โดยไม่คำนึงถึงประเภทของสินค้านั้นๆ


โปรดดูเพิ่มเติมที่ "การเลือก content_type ที่เหมาะสม"

_valueToSum

สตริง

ระบุหรือไม่ก็ได้
มูลค่ารวมของสินค้า

fb_currency

สตริง

ระบุหรือไม่ก็ได้
สกุลเงินของสินค้าหรือยอดการซื้อ

หมายเหตุ: ขอแนะนำให้ส่งพารามิเตอร์ _valueToSum และ fb_currency เมื่อมีการซื้อ

ใช้พิกเซลของ Meta สำหรับเว็บไซต์

คุณต้องเพิ่มเหตุการณ์ต่อไปนี้ลงในเว็บไซต์ หากมี

  • Search
  • ViewCategory
  • ViewContent
  • AddToCart
  • Purchase

เหตุการณ์เหล่านี้ควรส่งไปพร้อมกับพารามิเตอร์ข้อมูลต่อไปนี้

ชื่อคำอธิบาย

content_ids

สตริงหรือสตริง[]

จำเป็นต้องระบุ content_ids หรือ contents รายการใดรายการหนึ่ง
ID สินค้าหรือ ID กลุ่มสินค้าของผู้ค้าปลีก หากทำได้ ให้ใช้ ID สินค้าเพื่อให้การกำหนดเป้าหมายแม่นยำยิ่งขึ้น

contents

object[]

จำเป็นต้องระบุ content_ids หรือ contents รายการใดรายการหนึ่ง
รายการอ็อบเจ็กต์ JSON ที่มี ID สินค้าหรือ ID กลุ่มสินค้าของผู้ค้าปลีก รวมถึงข้อมูลเพิ่มเติมเกี่ยวกับสินค้า


จำเป็นต้องระบุช่อง id และ quantity
ตัวอย่าง:[{"id": "1234", "quantity": 2}, {"id": "5678", "quantity": 1}]

content_type

สตริง

ระบุหรือไม่ก็ได้
product หรือ product_group รายการใดรายการหนึ่ง ซึ่งจะต้องซิงค์กับประเภทของ ID ที่ใช้เป็น content_ids


หากไม่ได้ระบุ content_type Meta จะจับคู่เหตุการณ์กับสินค้าทุกรายการที่มี ID ตรงกัน โดยไม่คำนึงถึงประเภทของสินค้านั้นๆ


โปรดดูเพิ่มเติมที่ "การเลือก content_type ที่เหมาะสม"

product_catalog_id

สตริง

ระบุหรือไม่ก็ได้
แค็ตตาล็อกสินค้าที่จะใช้ หากระบุไว้ แค็ตตาล็อกนี้จะเป็นแค็ตตาล็อกเดียวที่จะเชื่อมโยงกับการส่งพิกเซล หากไม่ได้ระบุไว้ ระบบจะใช้แค็ตตาล็อกที่เชื่อมโยงกับพิกเซลของคุณ
โปรดดูเพิ่มเติมที่เชื่อมโยงสัญญาณจากผู้ใช้เข้ากับแค็ตตาล็อกสินค้า

ตัวอย่าง

เหตุการณ์มาตรฐาน 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 ที่มีสินค้า 2 รายการพร้อมข้อมูลจำนวน:

<!-- 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 ที่มีสินค้า 2 รายการ:

<!-- 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 สินค้า (กล่าวคือ คอลัมน์ id ในฟีดสินค้า) ใน content_ids เหตุการณ์ AddToCart และ Purchase ทั้งหมดควรใช้ content_type=product เนื่องจากผู้คนจะซื้อสินค้าที่เฉพาะเจาะจง ผู้คนไม่ซื้อเสื้อที่ไม่ระบุลักษณะให้ชัดเจนซึ่งมีขนาดและสีที่ไม่แน่นอน ผู้คนจะซื้อเสื้อแบบเฉพาะเจาะจงซึ่งมีการระบุขนาดและสี

หากหน้านั้นเกี่ยวกับกลุ่มของสินค้าที่เกี่ยวข้องกันซึ่งมีขนาด สี ฯลฯ แตกต่างกันไป แต่ยังอยู่ในกลุ่มสินค้าเดียวกัน ให้ใช้ product_group และส่งต่อ ID กลุ่มสินค้า (กล่าวคือ คอลัมน์ item_group_id ในฟีดสินค้า) ใน content_ids กรณีการใช้งานทั่วไปคือหน้า ViewContent ที่ผู้ใช้ยังไม่ได้เลือกขนาด อย่าใช้product_group กับ AddToCart หรือ Purchase

สิ่งสำคัญคือ content_type ต้องตรงกับประเภทของ ID ที่มีอยู่ในพารามิเตอร์ content_ids หรือ contents

การส่งต่อ ID สินค้าที่เฉพาะเจาะจง (content_type=product) ช่วยให้ Meta สามารถแนะนำสินค้าที่เกี่ยวข้องเพิ่มเติมได้ เนื่องจาก Meta ทราบรูปแบบสินค้าที่เฉพาะเจาะจง (ขนาด สี และอื่นๆ) ที่ผู้ใช้ให้ความสนใจ เราจะแสดงสินค้า (ไม่ใช่กลุ่มสินค้า) เสมอ แม้ว่าจะมีเงื่อนไขเป็น content_type=product_group ก็ตาม

หากไม่ได้ระบุ content_type Meta จะจับคู่เหตุการณ์กับสินค้าทุกรายการที่มี ID ตรงกัน โดยไม่คำนึงถึงประเภทของสินค้านั้นๆ เราขอแนะนำให้ส่ง content_type เนื่องจากจะทำให้คุณสามารถควบคุม ID ที่คุณต้องการจับคู่กับเหตุการณ์ได้มากขึ้น

ขั้นตอนที่ 2: เชื่อมโยงสัญญาณจากผู้ใช้เข้ากับแค็ตตาล็อกสินค้า

คุณต้องเชื่อมโยงแหล่งที่มาของเหตุการณ์เข้ากับแค็ตตาล็อกสินค้าแต่ละแค็ตตาล็อกเพื่อให้ Facebook สามารถรับข้อมูลนี้และแสดงสินค้าที่ถูกต้องในโฆษณาได้ คุณสามารถดำเนินการนี้ได้โดยไปที่หน้าแค็ตตาล็อกของตัวจัดการธุรกิจ แล้วคลิกปุ่มเชื่อมโยงแหล่งที่มาของเหตุการณ์ อย่าลืมเลือกแอพและพิกเซลที่จะรับเหตุการณ์โฆษณาแค็ตตาล็อก 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

จำเป็นต้องระบุ
อาร์เรย์ของ ID แอพและพิกเซลที่จะเชื่อมโยง โดยเป็นพารามิเตอร์สตริงการสืบค้นที่เข้ารหัส UTF-8

ขั้นตอนที่ 3: สร้างกลุ่มเป้าหมายของสินค้า

ขั้นตอนต่อไปคือการสร้างกลุ่มเป้าหมายของสินค้าตามกิจกรรมบนแอพมือถือและเว็บไซต์ของคุณ คุณสามารถเลือกได้ว่าจะใช้เหตุการณ์ใดบ้างและกำหนดเป้าหมายของโฆษณาโดยใช้กลุ่มเป้าหมายของสินค้าได้

สำหรับเหตุการณ์ในแอพแบบมาตรฐาน ระบบจะรวบรวมกลุ่มเป้าหมายภายใต้ชื่อเหตุการณ์พิกเซลของโฆษณา ดังนี้

  • Search
  • ViewContent
  • AddToCart
  • Purchase

ใช้ชื่อเหตุการณ์เหล่านี้ในกฎกลุ่มเป้าหมายของคุณ แม้ว่าจะรวมทั้งผู้ใช้บน Android และ iOS ก็ตาม

สร้างกลุ่มเป้าหมายของสินค้าโดยเรียกใช้ API POST ไปยังตำแหน่งข้อมูล /act_{ad-account-id}/product_audiences

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

พารามิเตอร์

ชื่อคำอธิบาย

name

สตริง

จำเป็นต้องระบุ
ชื่อกลุ่มเป้าหมาย

description

สตริง

ระบุหรือไม่ก็ได้
คำอธิบายกลุ่มเป้าหมาย

product_set_id

สตริงตัวเลข

จำเป็นต้องระบุ ชุดสินค้าที่จะกำหนดเป้าหมายด้วยกลุ่มเป้าหมายนี้

inclusions

อ็อบเจ็กต์ JSON

จำเป็นต้องระบุ
ชุดเหตุการณ์ที่จะกำหนดเป้าหมาย โดยต้องมีการคัดเข้าอย่างน้อย 1 รายการ การคัดเข้าแต่ละรายการควรมีเหตุการณ์รายการเดียวเท่านั้น

inclusions.retention_seconds

int

จำเป็นต้องระบุ
จำนวนวินาทีที่จะคงบัญชีในศูนย์บัญชีนั้นๆ เอาไว้ในกลุ่มเป้าหมาย

inclusions.rule

object[]

จำเป็นต้องระบุ
กฎกลุ่มเป้าหมายที่กำหนดเองบนเว็บไซต์ที่อ้างอิงถึง event จำนวน 1 รายการ

exclusions

อ็อบเจ็กต์ JSON

ระบุหรือไม่ก็ได้
เหตุการณ์ที่ระบุว่าบัญชีในศูนย์บัญชีใดควรถูกคัดออกจากการกำหนดเป้าหมาย
สำหรับการคัดออก ระบบจะคัดบัญชีในศูนย์บัญชีที่มีเหตุการณ์เหล่านี้ออกจากการกำหนดเป้าหมายหากเหตุการณ์ดังกล่าวเกิดขึ้นกับสินค้าใดก็ตามในกลุ่มสินค้าเดียวกัน (กล่าวคือ สินค้าที่มี item_group_id in เดียวกันในฟีดสินค้า)
ตัวอย่างเช่น กลุ่มเป้าหมายของสินค้ามีการกำหนดไว้ว่าจะรวม ViewContent เอาไว้และไม่รวมเหตุการณ์ "Purchase" บัญชีในศูนย์บัญชีรายการหนึ่งดูสินค้า A และ B แล้วซื้อสินค้า B หากสินค้า A และสินค้า B อยู่ในกลุ่มสินค้าเดียวกัน ระบบก็จะคัดบัญชีในศูนย์บัญชีรายการนั้นๆ ออกจากกลุ่มเป้าหมายของสินค้า เนื่องจาก A และ B เป็นเพียงแบบสินค้าที่แตกต่างกัน แต่หากสินค้า A และ B ไม่ได้อยู่ในกลุ่มสินค้าเดียวกัน บัญชีในศูนย์บัญชีดังกล่าวนั้นจะยังคงอยู่ในกลุ่มเป้าหมายต่อไป เนื่องจากยังมีเหตุการณ์ ViewContent สำหรับสินค้า A

exclusions.retention_seconds

int

จำเป็นต้องระบุ หากมีการกำหนดการคัดออกไว้
จำนวนวินาทีที่จะคงการคัดออกเอาไว้

exclusions.rule

object[]

จำเป็นต้องระบุ หากมีการกำหนดการคัดออกไว้
กฎของกลุ่มเป้าหมายที่กำหนดเองบนเว็บไซต์ที่อ้างอิงถึง event จำนวน 1 รายการ

กฎแต่ละกฎต้องมี 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/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'}}}], })

หากคุณต้องการกำหนดเป้าหมายเป็นผู้คนที่ดูสินค้าในเว็บด้วย 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/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'}}}], })

เรียกดูกลุ่มเป้าหมายของสินค้า

เมื่อคุณสร้างกลุ่มเป้าหมายของสินค้า คุณจะสามารถเรียกดูกลุ่มเป้าหมายนั้นด้วย 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/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' }, })

หากต้องการเรียกดูกลุ่มเป้าหมายของสินค้าแบบเฉพาะเจาะจง ให้ใช้โค้ดดังนี้

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>