Bài viết này của tôi là một bài tương đối chuyên sâu về bản chất của Facebook Pixel dưới góc nhìn của một lập trình viên.
Mục lục
Facebook Pixel là gì?
Facebook Pixel là đoạn code thu thập thông tin và hành vi của người xem trên trang web của bạn lên Facebook.
Dữ liệu thu được từ Facebook Pixel giúp Facebook tối ưu được quảng cáo mục tiêu Conversion (Chuyển đổi) bằng cách giúp bạn tìm được khách hàng tiềm năng phù hợp dựa trên “tương tác” của những khách hàng khác trên trang.
Ngoài ra bạn có thể tạo tệp Đối tượng tùy chỉnh (Custom Audience) với từng loại hành động để thực hiện Remarketing.
Facebook Pixel gửi dữ liệu lên Facebook như thế nào?
Như mọi tracker khác, Facebook Pixel đơn giản là thực hiện một GET request đến một Tracker URL; cụ thể ở đây là https://www.facebook.com/tr
kèm theo rất nhiều tham số query string, như ví dụ sau (tôi viết xuống dòng cho dễ đọc)
https://www.facebook.com/tr ?id=Mã pixel &ev=Tên sự kiện &dl=Website URL &cd[content_name]=contentName &cd[content_category]=contentCategory &cd[content_type]=contentType &cd[content_ids]=contentIds &cd[value]=value &cd[currency]=currency ...
Ý nghĩa của một vài trong số những tham số đó như sau. Tôi đọc code thấy vậy chứ nhiều tham số tôi cũng không hiểu chức năng là gì.
Tham số | Mô tả |
---|---|
id | Mã pixel |
ev | Tên của sự kiện (ví dụ: AddToCart , Lead hay Purchase v.v…) |
dl | Địa chỉ của trang web hiện thời |
rl | Referer |
ts | Timestamp hiện tại |
cd[object_property] | Thuộc tính đối tượng. Tùy theo sự kiện sẽ có một danh sách các thuộc tính phù hợp. Thay object_property bằng tên của thuộc tính, ví dụ content_name , currency v.v… |
sw | Chiều rộng màn hình |
sh | Chiều cao màn hình |
Nếu mở URL trên bằng trình duyệt, bạn sẽ thấy nó biểu hiện là một ảnh GIF kích thước 1×1. Lý do cho cách làm này là để hỗ trợ tracking trong trường hợp trình duyệt tắt hoặc không hỗ trợ JavaScript.
Thư viện JavaScript xử lý Facebook Pixel
Để đơn giản hóa quy trình, Facebook phát triển một thư viện JavaScript. Quy trình khai báo như sau:
Base pixel
Mục đích là tải về file mã nguồn fbevents.js
.bằng cách tạo ra một thẻ script
có nguồn src
là địa chỉ https://connect.facebook.net/en_US/fbevents.js để khởi tạo hàm fbq
.
!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');
Khởi tạo pixel
Dùng hàm fbq
với tham số init
để khởi tạo mã Pixel. Nếu có nhiều pixel, bạn có thể gọi hàm này nhiều lần cho từng mã pixel.
fbq('init', '1467838821341234'); fbq('init', '1467834250099621'); fbq('init', '1425456542399246'); ...
Hàm fbq init
thực hiện một GET request đến địa chỉ URL dưới đây, trong đó version và phiên bản hiện hành của fbevents.js
.
https://connect.facebook.net/signals/config/pixelId?v=version&r=stable
Gửi event đầu tiên
Event đầu tiên thông thường sẽ là sự kiện PageView
. Tương tự như Google Analytics, PageView cho bạn biết ai là người truy cập website của bạn.
fbq('track', 'PageView');
Dù chỉ gọi một lần nhưng lệnh trên sẽ gửi sự kiện PageView cho tất cả các pixel mà bạn đã đăng ký.
Hàm fbq('track', 'PageView')
thực hiện các GET request đến địa chỉ https://www.facebook.com/tr/ cho từng Pixel với cấu trúc URL trông như sau:
https://www.facebook.com/tr/ ?id=mã pixel &ev=PageView &dl=Website URL &rl= &if=false &ts=1585997313152 &sw=1366 &sh=768 &v=2.9.15 &r=stable &ec=0 &o=30 &fbp=fb.1.1581066554216.153301610 &it=1585997312807 &coo=false &rqm=GET
Cài đặt pixel bằng hình ảnh
Trong trường hợp trình duyệt bị tắt JavaScript, Facebook có một cách tracking khác đó là sử dụng chính https://www.facebook.com/tr cùng các tham số query string và gắn trong một thẻ <img>
như một hình ảnh.
Ví dụ một pixel tracker có thể được khai báo như sau:
<img src="https://www.facebook.com/tr?id=123456789012345&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"/>
Một số giới hạn của cách dùng tracker hình ảnh.
- Không thể gọi nhiều lần trong một lần tải trang.
- Không thể track các sự kiện do tương tác với giao diện, ví dụ như nút ấn.
- Giới hạn chiều dài của URL.
- Không thể tải kiểu bất đồng bộ.
Các sự kiện tiêu chuẩn của Facebook Pixel
Facebook định nghĩa các sự kiện tiêu chuẩn và mô tả của chúng. Để Facebook có thể tìm được khách hàng tiềm năng – đặc biệt là lúc mới chạy, bạn nên gửi đúng sự kiện theo những gì Facebook mô tả trong từng trường hợp.
Hành động trên trang web | Mô tả | Mã sự kiện tiêu chuẩn |
---|---|---|
Thêm thông tin thanh toán | Thêm thông tin thanh toán của khách hàng trong quy trình thanh toán. Ví dụ: một người nhấp vào nút để lưu thông tin lập hóa đơn. | fbq('track', 'AddPaymentInfo'); |
Thêm vào giỏ hàng | Thêm một mặt hàng vào giỏ hoặc rổ hàng. Ví dụ: nhấp vào nút Thêm vào giỏ hàng trên trang web. | fbq('track', 'AddToCart'); |
Thêm vào danh sách yêu thích | Thêm các mặt hàng vào danh sách yêu thích. Ví dụ: nhấp vào nút Thêm vào danh sách yêu thích trên trang web. | fbq('track', 'AddToWishlist'); |
Hoàn tất đăng ký | Khách hàng gửi thông tin để nhận được dịch vụ mà doanh nghiệp bạn cung cấp. Ví dụ: đăng ký nhận thông tin qua email. | fbq('track', 'CompleteRegistration'); |
Liên hệ | Điện thoại, SMS, email, chat hoặc hình thức liên hệ khác giữa khách hàng và doanh nghiệp của bạn. | fbq('track', 'Contact'); |
Tùy chỉnh sản phẩm | Quá trình tùy chỉnh sản phẩm thông qua công cụ cấu hình hoặc ứng dụng khác mà doanh nghiệp của bạn sở hữu. | fbq('track', 'CustomizeProduct'); |
Quyên góp | Quyên góp tiền cho tổ chức hoặc mục đích xã hội của bạn. | fbq('track', 'Donate'); |
Tìm vị trí | Khi ai đó tìm một trong các vị trí của bạn qua web với ý định ghé thăm. Ví dụ: tìm kiếm sản phẩm và phát hiện thấy sản phẩm đó có bán tại một trong các cửa hàng của bạn tại địa phương. | fbq('track', 'FindLocation'); |
Bắt đầu thanh toán | Bắt đầu quy trình thanh toán. Ví dụ: nhấp vào nút Thanh toán. | fbq('track', 'InitiateCheckout'); |
Khách hàng tiềm năng | Khách hàng gửi thông tin và hiểu rằng doanh nghiệp của bạn có thể liên hệ với họ vào một ngày nào đó. Ví dụ: gửi mẫu hoặc đăng ký dùng thử. | fbq('track', 'Lead'); |
Mua hàng | Hoàn tất giao dịch mua hàng, thường biểu thị bằng việc nhận đơn đặt hàng, xác nhận việc mua hàng hoặc bằng biên lai giao dịch. Ví dụ: chuyển đến trang Cảm ơn hoặc trang xác nhận. | fbq('track', 'Purchase', {value: 0.00, currency: 'USD'}); |
Lên lịch | Đặt lịch hẹn đến thăm một trong các vị trí của bạn. | fbq('track', 'Schedule'); |
Tìm kiếm | Tìm kiếm trên trang web, ứng dụng hoặc tiện ích khác của bạn. Ví dụ: tìm kiếm sản phẩm hoặc chuyến du lịch. | fbq('track', 'Search'); |
Bắt đầu dùng thử | Bắt đầu dùng thử miễn phí sản phẩm hoặc dịch vụ mà bạn cung cấp. Ví dụ: đăng ký dùng thử. | fbq('track', 'StartTrial', {value: '0.00', currency: 'USD', predicted_ltv: '0.00'}); |
Gửi đơn đăng ký | Gửi đơn đăng ký sản phẩm, dịch vụ hoặc chương trình mà bạn cung cấp. Ví dụ: thẻ tín dụng, chương trình giáo dục hoặc việc làm. | fbq('track', 'SubmitApplication'); |
Đăng ký | Bắt đầu đăng ký trả phí cho sản phẩm hoặc dịch vụ mà bạn cung cấp. | fbq('track', 'Subscribe', {value: '0.00', currency: 'USD', predicted_ltv: '0.00'}); |
Xem nội dung | Lượt truy cập vào trang web bạn quan tâm. Ví dụ: trang đích hoặc trang sản phẩm. Thông số Xem nội dung cho bạn biết liệu có ai truy cập vào URL của trang web hay không, chứ không chỉ ra họ làm gì hay nhìn thấy gì trên trang web đó. | fbq('track', 'ViewContent'); |
Tự tạo sự kiện tùy chỉnh cho Facebook Pixel
Đôi khi bạn không hài lòng với những sự kiện tiêu chuẩn của Facebook thì đây là thứ có thể giúp bạn – Hãy tự định nghĩa lấy một sự kiện tùy chỉnh (Custom Event).
Đã là tùy chỉnh nghĩa là bạn thích nó tên thế nào cũng được và để thể hiện cho hành vi nào của người đọc cũng được (ví dụ khi người dùng cuộn trang đến đoạn nào đó chẳng hạn).
(t.b.c)
Tracking khi người dùng tương tác với website
Lưu ý: Để làm được điều này bắt buộc bạn phải biết sử dụng JavaScript.
Hàm JavaScript fbq()
khai báo trong fbevents.js
được dùng để bắn sự kiện. Vấn đề phải cân nhắc ở đây là:
- Ta sẽ gửi sự kiện khi người dùng thao tác gì?
- Sự kiện gửi lên Facebook nên là sự kiện gì?
- Dùng sự kiện tiêu chuẩn hay tùy chỉnh?
Tất cả quyết định nằm ở mục tiêu của bạn. Lời khuyên của tôi là:
- Nếu bạn cần Facebook tối ưu quảng cáo trong lúc đối tượng chưa được rõ ràng thì bạn nên dùng các sự kiện tiêu chuẩn và làm theo trải nghiệm do Facebook mô tả.
- Nếu bạn cần đo lường nói chung (như Google Analytics) hoặc muốn tối ưu Quảng cáo cho những khách hàng có hành vi đặc biệt nào đó ngoài những hành vi tiêu chuẩn thì hãy sử dụng sự kiện tùy chỉnh.
Các cách gọi hàm fbq để tracking
Như đã nói ở trên, chúng ta có hai loại sự kiện là Sự kiện tiêu chuẩn và Sự kiện tùy chỉnh. Và có hai kiểu gửi sự kiện: Cho tất cả các Pixel hoặc cho từng Pixel cụ thể.
Tổng cộng có 4 cách gọi hàm fbq như sau:
Gửi sự kiện tiêu chuẩn cho tất cả các Pixel
fbq('track', eventName, eventObjectProperties);
Gửi sự kiện tiêu chuẩn cho một Pixel cụ thể
fbq('trackSingle', pixelId, eventName, eventObjectProperties);
Gửi sự kiện tùy chỉnh cho tất cả các Pixel
fbq('trackCustom', customEventName, eventObjectProperties);
Gửi sự kiện tùy chỉnh cho một Pixel cụ thể
fbq('trackSingleCustom', pixelId, customEventName, eventObjectProperties);
(tbc)