เคล็ดลับในการใช้งานแบบอื่นๆ ซึ่งใช้พิกเซลกับแอพบนเว็บหน้าเดียว และการติดตามคอนเวอร์ชั่นที่มีจำนวนการคลิกปุ่มและการเลื่อนหน้า
หากคุณดำเนินธุรกิจในประเทศที่อยู่ภายใต้กฎหมายคุ้มครองข้อมูลส่วนบุคคล (GDPR) โปรดดูเอกสาร GDPR ของเราเพื่อเรียนรู้วิธีการปฏิบัติตามกฎหมายดังกล่าว
แม้คุณจะสามารถใช้แท็ก IMG เพื่อติดตั้งพิกเซลได้ แต่เราขอแนะนำให้คุณดูทางเลือกต่างๆ จากคู่มือการใช้งานของเรา
หากคุณต้องการติดตั้งพิกเซลด้วยวิธีการใช้งานแบบประหยัดทรัพยากร คุณสามารถติดตั้งพิกเซลด้วยแท็ก <img>
ได้ โดยเพิ่มโค้ดด้านล่างระหว่างแท็ก <noscript>
เปิดและปิดในส่วนหัวหรือเนื้อหาของเว็บไซต์ แล้วแทนที่ {pixel-id}
ด้วย ID ของพิกเซล และแทนที่ {standard-event}
ด้วยเหตุการณ์มาตรฐาน
<img src="https://www.facebook.com/tr?id={pixel-id}&ev={standard-event}" height="1" width="1" style="display:none"/>
พิกเซลที่ติดตั้งโดยใช้แท็ก <img>
ยังรองรับพารามิเตอร์ต่างๆ ซึ่งสามารถใส่ไว้ในสตริงการสืบค้นได้ ตัวอย่างเช่น:
<img src="https://www.facebook.com/tr?id=12345 &ev=ViewContent &cd[content_name]=ABC%20Leather%20Sandal &cd[content_category]=Shoes &cd[content_type]=product &cd[content_ids]=1234 &cd[value]=0.50 &cd[currency]=USD" height="1" width="1" style="display:none"/>
ด้านล่างนี้เป็นตัวอย่างการติดตั้งแท็ก IMG สำหรับพิกเซลของ Meta ในหน้าหลักต่างๆ ของเว็บไซต์สมมติโดยใช้ ID พิกเซลสมมติ (12345
) และพารามิเตอร์ที่กำหนดเอง (เช่น cd[currency]=USD
)
ในหน้าสินค้า จะมีพิกเซลหนึ่งไว้สำหรับติดตามเหตุการณ์ PageView
และอีกพิกเซลสำหรับติดตามเหตุการณ์ ViewContent
ดังที่แสดงต่อไปนี้
<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=12345&ev=PageView"/>
<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=12345&ev=ViewContent"/>
ในหน้าหยิบใส่รถเข็น จะมีพิกเซลหนึ่งไว้สำหรับติดตามเหตุการณ์ PageView
และอีกพิกเซลสำหรับติดตามเหตุการณ์ AddToCard
พร้อมข้อมูลแบบกำหนดเองดังที่แสดงต่อไปนี้
<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=12345&ev=PageView"/>
<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=12345&ev=AddToCart&cd[currency]=USD&cd[value]=0.00"/>
ในหน้าซื้อ จะมีพิกเซลหนึ่งไว้สำหรับติดตามเหตุการณ์ PageView
และอีกพิกเซลสำหรับติดตามเหตุการณ์ Purchase
พร้อมข้อมูลเกี่ยวกับการซื้อดังที่แสดงต่อไปนี้
<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=12345&ev=PageView"/>
<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=12345&ev=Purchase&cd[currency]=USD&cd[value]=0.00"/>
การวัดผลเหตุการณ์แบบรวมของ Meta เป็นวิธีที่ช่วยให้สามารถวัดผลเหตุการณ์บนเว็บหรือเหตุการณ์ในแอพจากผู้ที่ใช้อุปกรณ์ iOS 14.5 ขึ้นไปได้ การสร้างแบบจำลองทางสถิติอาจถูกนำมาใช้และได้รับการออกแบบมาเพื่อช่วยให้เห็นผลลัพธ์ที่สมบูรณ์ยิ่งขึ้นเมื่อข้อมูลขาดหายไปหรือมีเพียงบางส่วน
เราขอแนะนำอย่างยิ่งให้คุณปฏิบัติตามรายละเอียดในส่วน “ติดตั้งพิกเซลโดยใช้แท็ก IMG” ของเอกสารฉบับนี้เมื่อใช้แท็ก IMG ของพิกเซล หรือให้เลิกใช้แท็ก IMG แล้วปฏิบัติตามคู่มือการใช้งานของเราแทน
หากคุณตั้งค่าพิกเซล IMG ของคุณโดยใช้ JavaScript รันไทม์เพื่อสร้างคลาสข้อมูลรูปภาพสำหรับ JavaScript โดยไม่ผนวกคลาสข้อมูลรูปภาพดังกล่าวเข้ากับ DOM Tree ของเว็บไซต์ ตัวอย่างเช่น เมื่อใช้ไลบรารี JavaScript ของบุคคลที่สามเพื่อส่งพิกเซล IMG คุณจะต้องเพิ่มโค้ดต่อไปนี้ ไม่เช่นนั้น Meta จะไม่ได้รับข้อมูลพิกเซล IMG ของคุณ
var nativeBridge = window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.receiveImgPixel; if (nativeBridge) { const postObj = { id: {pixel-id}, ev: {standard-event}, cd: {stringified-custom-data}, dpo: {data-processing-options}, // Optional CCPA param dpoco: {data-processing-option-country}, // Optional CCPA param dpost: {data-processing-option-state}, // Optional CCPA param }; nativeBridge.postMessage(JSON.stringify(postObj)); }
หากคุณวาง IMG ของพิกเซลภายใน iframe ที่มีแอตทริบิวต์ sandbox
คุณจะต้องเพิ่มค่า allow-scripts
ไม่เช่นนั้น Facebook จะไม่ได้รับข้อมูลพิกเซล IMG ของคุณ
เรามีฟังก์ชั่นการทำงาน AEM เพิ่มเติมในการพิจารณาคอนเวอร์ชั่นจากเว็บเพจที่เชื่อมโยงกับผู้ลงโฆษณาทั้งหมด ซึ่งมีเหตุการณ์พิกเซลที่ผ่านการปรับให้เหมาะสมของผู้ลงโฆษณาทำงานอยู่ (ดังเช่นในสถานการณ์ที่เฉพาะเจาะจงซึ่งผู้ลงโฆษณาอาจใช้เครื่องมือย่อ URL หรือการเปลี่ยนเส้นทางตามตำแหน่งทางภูมิศาสตร์ อาจมีสายธุรกิจหลายประเภท หรืออาจให้เอเจนซี่เป็นผู้ดำเนินการเผยแพร่โฆษณาให้) หากคุณมีสถานการณ์อย่างใดอย่างหนึ่งเหล่านี้และต้องการเปิดใช้งาน AEM เราขอแนะนำให้คุณดำเนินการดังต่อไปนี้
เมื่อผู้เข้าชมคลิกปุ่ม โค้ด JavaScript ของพิกเซลของ Meta จะตรวจจับและส่งช่องกรอกข้อมูลของแบบฟอร์มไปยัง Meta โดยอัตโนมัติ
สมมติว่าคุณมีเว็บไซต์อีคอมเมิร์ซ และปุ่ม “หยิบใส่รถเข็น” ของคุณไม่นำทางไปยังหน้าใหม่ คุณอาจต้องเปิดใช้งานเหตุการณ์เมื่อมีการคลิกปุ่ม
ในตัวอย่างนี้ เราจะเปิดใช้งานเหตุการณ์มาตรฐาน ViewContent
เมื่อโหลดหน้า เมื่อผู้ใช้คลิกปุ่ม “หยิบใส่รถเข็น” เราจะเปิดใช้งานเหตุการณ์มาตรฐาน AddToCart
โดยขั้นแรกให้โหลดโค้ดพิกเซลของ Meta ที่คุณต้องการให้ทำงานเมื่อมีการโหลดหน้า ดังนี้
<!-- Facebook Pixel Code --> <script> fbq('track', 'ViewContent', { content_name: 'Really Fast Running Shoes', content_category: 'Apparel & Accessories > Shoes', content_ids: ['1234'], content_type: 'product', value: 0.50, currency: 'USD' }); </script> <!-- End Facebook Pixel Code -->
จากนั้นให้ AddToCart
ทำงานเมื่อมีการโหลดหน้าใหม่หรือคลิกที่ปุ่ม “หยิบใส่รถเข็น” โดยคุณสามารถจัดการกับจำนวนคลิกบนปุ่มได้หลายวิธีด้วยกัน ต่อไปนี้คือตัวอย่างการเพิ่ม eventListener
ไปยังปุ่ม
<!-- Somewhere there is a button that performs Add to Cart --> <button id="addToCartButton">Add To Cart</button> <!-- Add Pixel Events to the button's click handler --> <script type="text/javascript"> var button = document.getElementById('addToCartButton'); button.addEventListener( 'click', function() { fbq('track', 'AddToCart', { content_name: 'Really Fast Running Shoes', content_category: 'Apparel & Accessories > Shoes', content_ids: ['1234'], content_type: 'product', value: 4.99, currency: 'USD' }); }, false ); </script>
คุณสามารถจัดการเหตุการณ์เกี่ยวกับการคลิกได้หลายวิธีด้วยกัน เพียงตรวจสอบให้แน่ใจว่าคุณเรียกใช้ฟังก์ชั่น fbq
ทุกครั้งหลังการคลิก
ตัวช่วยพิกเซลอาจแสดงข้อผิดพลาดก่อนที่จะมีการคลิกปุ่ม ซึ่งจะขึ้นอยู่กับวิธีที่คุณใช้งานพิกเซล คุณสามารถตรวจสอบยืนยันว่าพิกเซลทำงานถูกต้องโดยการคลิกปุ่ม ซึ่งจะปิดข้อผิดพลาดของตัวช่วย
สำหรับตัวอย่างนี้ สมมติว่าคุณมีบล็อกและต้องการติดตามผู้ใช้ที่อ่านเนื้อหาทั้งหมดของบทความชิ้นหนึ่ง โดยผู้ใช้รายนี้ไม่มีการดำเนินการอื่นๆ นอกเหนือจากการเลื่อนไปจนถึงส่วนท้ายสุดของหน้า
ต่อไปนี้คือ HTML ตัวอย่างสำหรับหน้าที่มีการโหลดพิกเซล
<!DOCTYPE html> <html> <head> <!-- 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'); fbq('init', '<FB_PIXEL_ID>'); fbq('track', "PageView"); </script> <noscript><img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=<FB_PIXEL_ID>&ev=PageView&noscript=1" /></noscript> <!-- End Facebook Pixel Code --> </head> <body> <h1>Scroll Page until the Lead event is fired</h1> <div style="height: 120vh; width: 100vw; background-color: #00f;"></div> <h1 id="fb-fire-pixel">Lead event will fire when this phrase enters the screen</h1> <div style="height: 120vh; width: 100vw; background-color: #000;"></div> </body> </html>
เมื่อองค์ประกอบ h1
ที่มี id=fb-fire-pixel
ปรากฏขึ้น เราควรให้เหตุการณ์มาตรฐาน Lead
ทำงาน โดยเราจะเพิ่มโค้ดต่อไปนี้ลงในหน้า เพื่อตรวจสอบยืนยันให้แน่ใจว่าองค์ประกอบจะปรากฏบนหน้าจอ
// This code should be loaded together with Meta Pixel var executeWhenElementIsVisible = function(dom_element, callback) { if (!(dom_element instanceof HTMLElement)) { console.error('dom_element must be a valid HTMLElement'); } if (typeof callback !== 'function') { console.error( 'Second parameter must be a function, got', typeof callback, 'instead', ); } function isOnViewport(elem) { var rect = elem.getBoundingClientRect(); var docElem = document.documentElement; return ( rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || docElem.clientHeight) && rect.right <= (window.innerWidth || docElem.clientWidth) ); } var executeCallback = (function() { var wasExecuted = false; return function() { if (!wasExecuted && isOnViewport(dom_element)) { wasExecuted = true; callback(); } }; })(); window.addEventListener('scroll', executeCallback, false); };
หลังจากนั้น เราจำเป็นต้องกำหนดวิธีที่จะให้พิกเซลทำงานเมื่อองค์ประกอบดังกล่าวปรากฏบนหน้าจอดังที่แสดงต่อไปนี้
// Get the element that should be visible to trigger the pixel fire var element = document.getElementById('fb-fire-pixel'); // Then, set the event to be tracked when element is visible // Note that second parameter is a function, not a function call executeWhenElementIsVisible(element, function() { fbq('track', 'Lead'); });
สำหรับตัวอย่างนี้ สมมติว่าคุณต้องการติดตามผู้ใช้ที่อ่านจนถึงความยาวหนึ่งหรือจำนวนเปอร์เซ็นต์ของหน้า โดยผู้ใช้รายนี้ไม่มีการดำเนินการอื่นๆ นอกเหนือจากการเลื่อนไปจนถึงความยาวหรือจำนวนเปอร์เซ็นต์ของหน้าที่ต้องการ
ตัวอย่างแรกคือการติดตามความยาวของหน้าซึ่งผู้ใช้ได้อ่านไป โดยในตัวอย่างนี้ เราจะให้พิกเซลข้อมูลลูกค้าทำงานเมื่อผู้ใช้อ่านเนื้อหาจนถึงความยาว 500 พิกเซลของหน้า
var executeWhenReachedPageLength = function(length, callback) { if (typeof length !== 'number') { console.error( 'First parameter must be a number, got', typeof length, 'instead', ); } if (typeof callback !== 'function') { console.error( 'Second parameter must be a function, got', typeof callback, 'instead', ); } function getWindowLength() { return window.innerHeight || (document.documentElement || document.body).clientHeight; } function getCurrentScrolledLengthPosition() { return window.pageYOffset || (document.documentElement || document.body.parentNode || document.body).scrollTop; } var executeCallback = (function() { var wasExecuted = false; return function() { if (!wasExecuted && getCurrentScrolledLengthPosition() > length) { wasExecuted = true; callback(); } }; })(); if (getWindowLength() >= length) { callback(); } else { window.addEventListener('scroll', executeCallback, false); } }; executeWhenReachedPageLength(10, function() { fbq('track', 'Lead'); });
ตัวอย่างที่ 2 คือการติดตามจำนวนเปอร์เซ็นต์ของหน้าซึ่งผู้ใช้ได้อ่านไป โดยในตัวอย่างนี้ เราจะให้พิกเซลข้อมูลลูกค้าทำงานเมื่อผู้ใช้อ่านเนื้อหาจนถึง 75% ของหน้า
var executeWhenReachedPagePercentage = function(percentage, callback) { if (typeof percentage !== 'number') { console.error( 'First parameter must be a number, got', typeof percentage, 'instead', ); } if (typeof callback !== 'function') { console.error( 'Second parameter must be a function, got', typeof callback, 'instead', ); } function getDocumentLength() { var D = document; return Math.max( D.body.scrollHeight, D.documentElement.scrollHeight, D.body.offsetHeight, D.documentElement.offsetHeight, D.body.clientHeight, D.documentElement.clientHeight ) } function getWindowLength() { return window.innerHeight || (document.documentElement || document.body).clientHeight; } function getScrollableLength() { if (getDocumentLength() > getWindowLength()) { return getDocumentLength() - getWindowLength(); } else { return 0; } } var scrollableLength = getScrollableLength(); window.addEventListener("resize", function(){ scrollableLength = getScrollableLength(); }, false) function getCurrentScrolledLengthPosition() { return window.pageYOffset || (document.documentElement || document.body.parentNode || document.body).scrollTop; } function getPercentageScrolled() { if (scrollableLength == 0) { return 100; } else { return getCurrentScrolledLengthPosition() / scrollableLength * 100; } } var executeCallback = (function() { var wasExecuted = false; return function() { if (!wasExecuted && getPercentageScrolled() > percentage) { wasExecuted = true; callback(); } }; })(); if (getDocumentLength() == 0 || (getWindowLength()/getDocumentLength() * 100 >= percentage)) { callback(); } else { window.addEventListener('scroll', executeCallback, false); } }; executeWhenReachedPagePercentage(75, function() { fbq('track', 'Lead'); });
สมมติว่าคุณต้องการติดตามผู้ใช้ที่โต้ตอบกับเว็บไซต์ของคุณในไม่กี่วินาทีก่อนที่จะให้เหตุการณ์พิกเซลทำงาน คุณสามารถดำเนินการนี้ได้ด้วยฟังก์ชั่น setTimeout
// Delay pixel fire by 3 seconds var seconds = 3; setTimeout(function() { fbq('track', 'Lead'); }, seconds * 1000);
โดยสามารถใช้เพื่อติดตามการเยี่ยมชม “ที่มีส่วนร่วม” ในหน้าที่ผู้ใช้ไม่เปิดผ่านไปอย่างรวดเร็วและมีการอ่านเนื้อหาจริงๆ
หากคุณต้องการทราบว่ามีผู้ใดดูบทความจำนวนหนึ่งจากเว็บไซต์ของคุณบ้าง คุณสามารถใช้ตัวนับเซสชั่นแล้วโหลดโค้ดพิกเซลของ Meta ได้เมื่อเกิดกรณีเช่นนี้
เราทราบว่าเซสชั่นหนึ่งๆ คือกลุ่มการโต้ตอบที่ผู้ใช้มีต่อเว็บไซต์ของคุณ ซึ่งอาจเกิดขึ้นภายในกรอบเวลาที่กำหนดต่อคำขอของเว็บไซต์ 1 รายการ คุณสามารถเพิ่มจำนวนการดูหน้าได้ตราบใดที่คุณตรวจพบกิจกรรมของผู้ใช้ในกรอบเวลาที่กำหนด
สมมติว่าคุณมีตัวแปร sessionCountViews
ต่อ site_request
จำนวน 1 รายการ คุณสามารถเพิ่มโค้ดพิกเซลของ Meta ตามจำนวนการดูหน้าที่คุณนับได้
ตัวอย่างการนับเฉพาะการดูบทความที่ 6
if (site_request.sessionCountViews == 6) { fbq('track', "ViewContent", { sessionCountViews: site_request.sessionCountViews, }); }
ถ้าคุณมีพิกเซลหลายตัวในหน้าเดียวกัน และต้องการเลือกให้เหตุการณ์ในพิกเซลแต่ละตัวที่ไม่ซ้ำกันทำงาน คุณควรใช้ความสามารถ trackSingle
และ trackSingleCustom
การใช้ฟังก์ชั่น track
ในหน้าที่มีพิกเซลหลายตัวเริ่มต้นทำงานแล้ว (ไม่ว่าจะเป็นการใช้โค้ดฐานหลายรายการหรือแม้แต่การผสานรวมไว้ภายในโค้ดฐานเดียว) อาจทำให้เกิดการทำงานมากเกินไปหรือการทำงานในลักษณะที่ไม่คาดคิด และควรนำไปใช้ในสถานการณ์เฉพาะเจาะจงเท่านั้น
ตัวอย่างที่เราให้เหตุการณ์ PageView
ทำงานกับพิกเซลที่เริ่มต้นทำงานไปแล้วทั้ง 2 รายการ และเลือกให้เหตุการณ์มาตรฐาน (Purchase
) ทำงานกับพิกเซลตัวหนึ่ง และให้เหตุการณ์ที่กำหนดเองทำงานกับพิกเซลตัวที่ 2
fbq('init', '<PIXEL_A>'); fbq('init', '<PIXEL_B>'); fbq('track', 'PageView'); //fire PageView for both initialized pixels // only fire the Purchase event for Pixel A fbq('trackSingle', '<PIXEL_A>', 'Purchase', { value: 4, currency: 'GBP', }); // only fire the custom event Step4 for Pixel B fbq('trackSingleCustom', '<PIXEL_B>', 'Step4',{ //optional parameters });
ในกรณีพิเศษ คุณอาจต้องส่งเหตุการณ์ไปยังพิกเซลเพียงตัวใดตัวหนึ่งที่ติดตั้งอยู่บนเว็บไซต์ เช่น เพื่อจำกัดข้อมูลที่ส่งไปยังพิกเซลตัวใดตัวหนึ่งบนเว็บไซต์ของคุณ วิธีการเหล่านี้จะติดตามการทำงานของพิกเซลเพียงตัวเดียว ซึ่งจะมีการเรียกใช้ด้วยโค้ดต่อไปนี้
fbq('trackSingle', 'FB_PIXEL_ID', 'Purchase', customData); fbq('trackSingleCustom', 'FB_PIXEL_ID', 'CustomEvent', customData);
พิกเซลของ Meta จะส่งเมตาดาต้าของหน้าและจำนวนการคลิกปุ่ม (เช่น ข้อมูลที่มีการจัดโครงสร้างตามรูปแบบ Opengraph หรือ Schema.org) จากเว็บไซต์ของคุณ เพื่อปรับปรุงการแสดงและการวัดผลโฆษณา และทำให้การตั้งค่าพิกเซลของคุณเป็นไปโดยอัตโนมัติ หากต้องการกำหนดค่าเพื่อไม่ให้พิกเซลของ Meta ส่งข้อมูลเพิ่มเติมนี้ ให้เพิ่ม fbq('set', 'autoConfig', 'false', 'FB_PIXEL_ID')
ไว้เหนือการเรียกใช้ init ในโค้ดฐานสำหรับพิกเซลของ 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'); // Line to enable Manual Only mode. fbq('set', 'autoConfig', false, 'FB_PIXEL_ID'); //Insert Your Facebook Pixel ID below. fbq('init', 'FB_PIXEL_ID'); fbq('track', 'PageView'); </script> <noscript> <img height="1" width="1" style="display:none"src="https://www.facebook.com/tr?id=FB_PIXEL_ID&ev=PageView&noscript=1"/> </noscript> <!-- End Facebook Pixel Code -->
หากเว็บไซต์ของคุณมีนโยบายการรักษาความปลอดภัยของเนื้อหา คุณควรอนุญาตให้ JavaScript โหลดจาก https://connect.facebook.net
ได้ หมายเหตุ: พิกเซลจะโหลดสคริปต์จาก 2 พาธ ได้แก่ /en_US/fbevents.js
และ /signals/config/{pixelID}?v={version}