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.

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ả
idMã pixel
evTê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
rlReferer
tsTimestamp 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…
swChiều rộng màn hình
shChiề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 webMô tảMã sự kiện tiêu chuẩn
Thêm thông tin thanh toánThê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àngThê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íchThê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ẩmQuá 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ópQuyê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ánBắ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ăngKhá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àngHoà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ếmTì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 dungLượ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).

(tbc)

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à:

  1. Ta sẽ gửi sự kiện khi người dùng thao tác gì?
  2. Sự kiện gửi lên Facebook nên là sự kiện gì?
  3. 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 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)

Tham khảo