Facebook Pixel và Conversions API (CAPI) khác nhau thế nào, vì sao nên dùng cả hai
Facebook Pixel là đoạn mã theo dõi mà gần như ai chạy quảng cáo cũng gắn lên website, để Meta biết ai vào web, ai bấm mua hàng và quảng cáo nào thật sự tạo ra doanh số. Nhưng nhiều năm qua, dữ liệu chỉ từ Pixel ngày càng thất thoát nhiều hơn, do trình chặn quảng cáo, cài đặt quyền riêng tư của trình duyệt và các giới hạn trên thiết bị iOS.
Vì vậy Meta có Conversions API, hay CAPI, để gửi cùng những sự kiện đó từ máy chủ của bạn thẳng đến Meta. Bài viết này giải thích Facebook Pixel và Conversions API khác nhau thế nào, vì sao Meta khuyên dùng cả hai, cần cài chống trùng ra sao để không đếm doanh số hai lần, và mỗi cách cài đặt server-side phù hợp với ai.
Facebook Pixel là gì, hoạt động thế nào?
Facebook Pixel (nay Meta gọi là Meta Pixel) là một đoạn mã JavaScript đặt trên trang web. Khi người xem mở trang, trình duyệt của họ tải đoạn mã này rồi gửi các sự kiện về Meta, như PageView, ViewContent, AddToCart, Lead hay Purchase, kèm dữ liệu bổ sung như giá trị đơn hàng và loại tiền tệ.
Dữ liệu này được dùng theo ba cách: đo xem chiến dịch nào tạo ra chuyển đổi, giúp hệ thống quảng cáo học nên đưa quảng cáo đến kiểu người nào, và tạo tệp đối tượng để retargeting, ví dụ những người đã thêm vào giỏ nhưng chưa thanh toán.
Điểm mấu chốt là mọi thứ diễn ra phía trình duyệt. Pixel chỉ hoạt động khi trình duyệt của người dùng chịu tải script và chịu gửi dữ liệu đi. Nếu có gì chặn giữa đường, sự kiện đó mất đi mà bạn không hề hay biết.
Nếu mới bắt đầu chạy quảng cáo, hãy đọc phần cơ bản tại chạy quảng cáo Facebook cho người mới. Và vì Pixel chạy trên trang web của bạn, chất lượng trang đích cũng quan trọng không kém, xem thêm tại Landing page là gì.
Vì sao chỉ dùng Pixel thì dữ liệu không đầy đủ?
Theo dõi phía trình duyệt có điểm yếu mang tính cấu trúc, không phải do cài sai. Dù đặt mã đúng từng dòng, một phần dữ liệu vẫn mất đi vì những nguyên nhân sau.
- Trình chặn quảng cáo và tiện ích quyền riêng tư — nhiều tiện ích chặn việc tải script của Meta ngay từ đầu, nên sự kiện từ nhóm người dùng này không bao giờ được gửi.
- Cơ chế chống theo dõi của trình duyệt — Safari có Intelligent Tracking Prevention (ITP) và các trình duyệt khác cũng có tính năng tương tự, giới hạn tuổi thọ cookie tạo bằng JavaScript, khiến việc nối lượt click quảng cáo với lần mua diễn ra vài ngày sau khó hơn.
- Yêu cầu cho phép theo dõi trên iOS — từ khi Apple thêm lời hỏi cho phép theo dõi giữa các ứng dụng, rất nhiều người chọn không cho phép, nên dữ liệu Meta dùng để khớp người dùng ít đi.
- Mất mạng hoặc đóng trang quá nhanh — người dùng bấm thanh toán rồi đóng tab trước khi trang cảm ơn tải xong, sự kiện Purchase không được gửi.
- Đồng ý cookie — nếu website có banner xin đồng ý và người dùng không đồng ý, ngay từ đầu Pixel đã không nên chạy.
Conversions API (CAPI) là gì, khác Pixel thế nào?
Conversions API là kênh cho phép máy chủ của bạn gửi sự kiện thẳng đến Meta theo kiểu máy chủ đến máy chủ, không đi qua trình duyệt của người dùng. Khi có đơn hàng phát sinh trong hệ thống quản trị, máy chủ có thể bắn ngay sự kiện Purchase đến Meta, nên trình chặn quảng cáo trong trình duyệt không ảnh hưởng đến kênh này.
Một ưu điểm khác là gửi được dữ liệu mà trình duyệt không có, như đơn hàng đã xác nhận thanh toán thật, lead đã được đội sales kiểm tra là chất lượng, hay đơn bị hủy, giúp dữ liệu hệ thống quảng cáo dùng để học sát với doanh số thật hơn.
Nhưng CAPI không thay thế Pixel, vì Pixel thấy được hành vi trên trang mà máy chủ không thấy, như việc lướt xem sản phẩm, và có cookie của Meta trong trình duyệt giúp khớp người dùng. Vì vậy Meta khuyên dùng cả hai cùng lúc, rồi để hệ thống loại bỏ các sự kiện trùng.
| Tiêu chí | Facebook Pixel | Conversions API |
|---|---|---|
| Gửi dữ liệu từ | Trình duyệt của người dùng | Máy chủ của bạn |
| Bị trình chặn quảng cáo ảnh hưởng | Có bị ảnh hưởng | Không đi qua trình duyệt nên không bị chặn từ phía đó |
| Cài đặt | Đặt mã lên web, không mất nhiều thời gian | Cần plugin, gateway hoặc code phía máy chủ |
| Dữ liệu gửi được | Hành vi trên trang web | Sự kiện từ hệ thống quản trị, như xác nhận thanh toán |
| Khớp người dùng | Dùng cookie của Meta trong trình duyệt | Dùng dữ liệu khách hàng đã hash + fbp/fbc được chuyển tiếp |
Dùng cả hai phải cài chống trùng (deduplication) bằng event_id
Khi cả Pixel và CAPI cùng gửi một sự kiện Purchase, nếu không báo cho Meta biết đó là cùng một sự kiện, doanh số sẽ bị đếm hai lần, báo cáo trông đẹp hơn thực tế và hệ thống quảng cáo sẽ học từ dữ liệu sai.
Cách Meta khuyến nghị là gửi cùng một mã sự kiện từ cả hai phía. Phía Pixel đặt eventID ở tham số thứ tư của lệnh fbq track, còn phía CAPI đặt event_id. Giá trị phải khớp nhau, và tên sự kiện cũng phải khớp, tức event của Pixel phải bằng event_name của CAPI, ví dụ cùng là Purchase.
Theo tài liệu của Meta, nếu nhận được sự kiện có cặp event_id và event_name trùng nhau từ cùng một Pixel trong vòng 48 giờ, hệ thống sẽ giữ lại một và loại bỏ bản trùng. Trên thực tế, mã này thường dùng mã đơn hàng, hoặc tạo giá trị ngẫu nhiên khi người dùng bấm nút rồi gửi cùng giá trị đó cho cả mã trên trang lẫn máy chủ.
Event Match Quality và việc hash dữ liệu khách hàng
Sự kiện gửi qua CAPI chỉ có ích khi Meta khớp được đó là người dùng nào. Events Manager có điểm Event Match Quality cho biết dữ liệu khách hàng bạn gửi giúp khớp tốt đến đâu. Gửi càng đủ và đúng tham số, điểm càng cao.
Dữ liệu cá nhân như email, số điện thoại, tên, họ, thành phố, mã bưu chính và external_id phải được chuẩn hóa trước rồi mới hash bằng SHA-256. Ví dụ email phải bỏ khoảng trắng đầu cuối và chuyển thành chữ thường, số điện thoại chỉ giữ lại chữ số, bỏ số 0 đầu và thêm mã quốc gia, nên số Việt Nam 0912-345-678 sẽ thành 84912345678 trước khi hash.
Một số dữ liệu phải gửi không hash, gồm client_ip_address, client_user_agent, fbp (cookie _fbp định danh trình duyệt) và fbc (giá trị lấy từ fbclid khi người dùng nhấp quảng cáo). Với sự kiện từ website, Meta bắt buộc phải gửi kèm client_user_agent.
- em, ph, fn, ln, ct, zp, country, external_id — chuẩn hóa rồi hash bằng SHA-256.
- client_ip_address, client_user_agent — gửi giá trị thật không hash, lấy từ request của người dùng.
- fbp, fbc — đọc từ cookie của người dùng rồi chuyển tiếp không hash, giúp sự kiện phía máy chủ khớp với phía trình duyệt chính xác hơn.
Có mấy cách cài Conversions API, nên chọn cách nào?
Không có cách nào tốt nhất cho tất cả, còn tùy website của bạn làm bằng gì, team có lập trình viên không và bạn muốn tự kiểm soát dữ liệu đến đâu. Bảng dưới đây tóm tắt bốn lựa chọn chính.
| Cách | Phù hợp với | Ưu điểm | Hạn chế |
|---|---|---|---|
| Plugin/kết nối của nền tảng, như Shopify hoặc plugin Facebook for WooCommerce | Shop dùng nền tảng dựng sẵn | Cài vài cú nhấp, không cần thêm máy chủ | Tùy chỉnh sự kiện hạn chế, phụ thuộc vào những gì plugin hỗ trợ |
| Conversions API Gateway của Meta | Doanh nghiệp không có lập trình viên nhưng muốn CAPI đầy đủ | Cài qua Events Manager, có sẵn chống trùng, tự cập nhật | Phải chạy trên tài khoản cloud được hỗ trợ (AWS hoặc GCP) hoặc qua đối tác, không được thiết kế để cài trên VPS thông thường |
| Server-side Google Tag Manager trên máy chủ của riêng bạn | Website đã dùng GTM và muốn gửi dữ liệu đến nhiều nền tảng | Quản lý thẻ của Meta, GA4 và các nền tảng khác từ một chỗ, dữ liệu đi qua tên miền của bạn trước | Phải dựng máy chủ, subdomain HTTPS và tự duy trì liên tục |
| Gọi API trực tiếp từ hệ thống quản trị | Website tự viết và có lập trình viên | Kiểm soát dữ liệu chi tiết nhất, gửi được mọi loại sự kiện từ hệ thống quản trị | Phải tự viết và duy trì code, cả phần hash, chống trùng lẫn xử lý lỗi |
VPS giúp ở đâu và cần cấu hình bao nhiêu?
Ví dụ gửi sự kiện bằng curl
Hai cách cuối trong bảng cần một máy chủ bật suốt và có HTTPS. Nếu máy chủ sập, toàn bộ sự kiện phía CAPI trong khoảng thời gian đó sẽ mất. Đây là chỗ VPS phát huy tác dụng.
Với server-side GTM tự cài, Google có hướng dẫn manual setup cho phép chạy tagging server dưới dạng Docker image trên máy bạn chọn, cần cả tagging server lẫn preview server, trỏ subdomain HTTPS của website bạn vào. Google cho biết mỗi máy không nên quá 1 vCPU vì phần vCPU dư không được dùng đến, và khuyên chạy thành cụm khi traffic cao. Với website nhỏ đến vừa, VPS 2 vCores / 4 GB RAM chạy cả hai cùng reverse proxy thoải mái.
Nếu tự viết endpoint nhận sự kiện rồi chuyển tiếp đến Meta, việc này rất nhẹ, VPS nhỏ nhất cũng chạy được nếu traffic không cao, nhưng nên có hàng đợi hoặc cơ chế gửi lại phòng khi Meta phản hồi chậm. Còn Conversions API Gateway theo tài liệu của Meta phải chạy trên tài khoản AWS hoặc GCP, nên không phải lựa chọn cho VPS thông thường.
Chạy sGTM hoặc endpoint của riêng bạn bằng Docker giúp chuyển máy và cập nhật dễ hơn nhiều. Nếu muốn biết VPS còn giúp gì khác cho dân chạy quảng cáo, xem tiếp tại VPS cho dân chạy quảng cáo.
- Gửi dạng POST đến https://graph.facebook.com/vXX.0/PIXEL_ID/events, thay vXX.0 bằng phiên bản Graph API đang dùng và đính kèm access_token tạo từ Events Manager.
- Lệnh ví dụ: curl -X POST "https://graph.facebook.com/vXX.0/PIXEL_ID/events?access_token=TOKEN" -H "Content-Type: application/json" -d @event.json
- Trong file event.json, đặt data là mảng các sự kiện, mỗi sự kiện có event_name, event_time (Unix timestamp tính bằng giây), event_id, action_source là website, event_source_url và user_data gồm em đã hash, client_ip_address, client_user_agent, fbp, fbc.
- Trong giai đoạn test, thêm test_event_code ở cấp cao nhất của payload rồi xóa đi trước khi chạy thật.
Kiểm tra bằng Test Events và các lỗi hay gặp
Sau khi cài xong, vào Events Manager, chọn Pixel của bạn rồi mở tab Test events. Phía Pixel, mở website qua ô kiểm tra rồi thử thực hiện sự kiện thật. Phía CAPI, sao chép mã test vào test_event_code của payload. Sự kiện sẽ hiện lên gần như ngay lập tức, cho biết đến từ trình duyệt hay máy chủ và đã được chống trùng hay chưa.
Nếu thấy cùng một sự kiện hiện ở cả hai phía và hệ thống báo đã chống trùng, nghĩa là event_id đã cài đúng. Sau đó xem điểm Event Match Quality ở trang tổng quan khi đã có dữ liệu thật đổ về một thời gian.
| Lỗi | Hậu quả | Cách sửa |
|---|---|---|
| Gửi cả Pixel và CAPI nhưng không có event_id hoặc giá trị không khớp | Chuyển đổi bị đếm trùng, báo cáo cao hơn thực tế | Dùng cùng một event_id ở cả hai phía và đặt tên sự kiện khớp chính xác |
| Gửi email hoặc số điện thoại chưa hash | Rủi ro về dữ liệu cá nhân và không khớp được như mong đợi | Chuẩn hóa rồi hash bằng SHA-256 trước mỗi lần gửi |
| Hash IP, user agent, fbp hoặc fbc | Meta không dùng được các giá trị này để khớp | Gửi bốn giá trị này không hash |
| event_time tính bằng mili giây, hoặc dùng thời điểm gửi thay vì thời điểm xảy ra thật | Sự kiện bị từ chối hoặc sai thời gian | Dùng Unix timestamp tính bằng giây của thời điểm sự kiện xảy ra thật, và không được cũ hơn 7 ngày |
| Quên xóa test_event_code khi chạy thật | Sự kiện hiện ở trang test, gây nhầm lẫn khi kiểm tra | Tách rõ cấu hình giữa môi trường test và chạy thật |
| Gửi sự kiện từ máy chủ mà bỏ qua trạng thái đồng ý cookie | Trái với những gì đã thông báo cho người dùng | Để phía máy chủ tôn trọng cùng trạng thái đồng ý như phía trình duyệt |
Muốn chạy server-side GTM hoặc endpoint CAPI trên máy của riêng bạn
Cloud VPS đặt tại datacenter Bangkok · chọn Windows hoặc Linux · KVM toàn quyền root · chạy được Docker · thêm IPv4 100฿/IP · chỉ từ 150฿/tháng
Câu hỏi thường gặp
Facebook Pixel là gì?
Facebook Pixel hay Meta Pixel là đoạn mã JavaScript đặt trên website để gửi các sự kiện như xem trang, thêm vào giỏ và mua hàng từ trình duyệt của người dùng về Meta, dùng để đo hiệu quả quảng cáo, giúp hệ thống quảng cáo học và tạo tệp đối tượng retargeting.
Đã có Conversions API thì còn cần Pixel không?
Nên dùng cả hai. Meta khuyên gửi sự kiện từ cả Pixel và Conversions API rồi cài chống trùng bằng event_id và event_name, vì mỗi bên thấy dữ liệu khác nhau: Pixel thấy hành vi trên trang, còn CAPI vẫn gửi được dù trình duyệt bị chặn.
Cài Conversions API có phải viết code không?
Không phải lúc nào cũng cần. Nếu dùng Shopify hoặc WooCommerce, có kết nối chính thức bật được từ trang cài đặt, hoặc dùng Conversions API Gateway của Meta cài qua Events Manager trên tài khoản AWS hoặc GCP. Nhưng nếu website tự viết và muốn kiểm soát dữ liệu chi tiết, gọi API từ hệ thống quản trị hoặc dùng server-side GTM sẽ linh hoạt hơn.
Cần hash những dữ liệu nào trước khi gửi?
Dữ liệu cá nhân như email, số điện thoại, tên, họ, thành phố, mã bưu chính, quốc gia và external_id phải chuẩn hóa rồi hash bằng SHA-256. Còn client_ip_address, client_user_agent, fbp và fbc phải gửi không hash.
Chạy server-side GTM trên VPS cần cấu hình bao nhiêu?
Google cho biết mỗi tagging server không nên quá 1 vCPU vì phần dư không được dùng. Với website nhỏ đến vừa, VPS 2 vCores / 4 GB RAM chạy tagging server và preview server bằng Docker cùng reverse proxy thoải mái. Nếu traffic rất cao thì tách thành nhiều máy, và nên xem mức dùng tài nguyên thực tế để quyết định.
GUIDES
Bài viết liên quan
Đọc tiếp các chủ đề tương tự
VPS cho dân chạy quảng cáo — dùng được gì thật, và điều gì không làm được
Dân chạy quảng cáo Facebook, Meta và Google Ads thuê VPS ngày càng nhiều, nhưng lý do người ta mua với những gì VPS làm được thật thường không khớp nhau. Bài này tách bạch rõ cái gì đáng tiền, cái gì là hiểu lầm, và chúng tôi nhận loại công việc nào.
Đọc tiếpLanding page là gì, làm sao để chạy quảng cáo hiệu quả, tải nhanh, khách chịu điền form
Landing page là trang web đón người dùng từ quảng cáo rồi dẫn họ đến một hành động duy nhất, như điền form hay nhắn tin. Bài viết giải thích landing page khác trang chủ thế nào, cần có những gì, vì sao tốc độ tải ảnh hưởng chi phí quảng cáo, và checklist nên làm trước khi mở chiến dịch.
Đọc tiếpVPS là gì? Dùng làm được gì, giải thích dễ hiểu
Tổng hợp đầy đủ về VPS — VPS server là gì, hoạt động thế nào, Cloud VPS khác VPS thường ở đâu, dùng làm được gì, so với Shared Hosting và Dedicated, ai nên dùng và bắt đầu ra sao trong năm 2026.
Đọc tiếp