Cloud VPS

Facebook Pixel và Conversions API (CAPI) khác nhau thế nào, vì sao nên dùng cả hai

Cập nhật 2026-09-21Đọc ~10 phút

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.
💡 Tỷ lệ dữ liệu bị mất khác nhau rất nhiều tùy nhóm khách hàng, thiết bị và loại website, không có con số chung nào áp dụng cho mọi website. Cách tốt nhất là so số liệu trong Events Manager với số đơn hàng thật trong hệ thống quản trị của chính bạn.

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 PixelConversions API
Gửi dữ liệu từTrình duyệt của người dùngMáy chủ của bạn
Bị trình chặn quảng cáo ảnh hưởngCó bị ảnh hưởngKhô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 gianCần plugin, gateway hoặc code phía máy chủ
Dữ liệu gửi đượcHành vi trên trang webSự kiện từ hệ thống quản trị, như xác nhận thanh toán
Khớp người dùngDùng cookie của Meta trong trình duyệtDù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ủ.

💡 Meta còn có cách chống trùng dự phòng dựa trên event_name kết hợp fbp hoặc external_id, nhưng nhiều hạn chế hơn. Cách chính nên luôn dùng là event_id cùng event_name.

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.
💡 Về sự đồng ý: gửi dữ liệu khách hàng cho nền tảng quảng cáo là xử lý dữ liệu cá nhân, nên cần tuân thủ quy định bảo vệ dữ liệu cá nhân tại nơi bạn kinh doanh, ví dụ nêu rõ trong chính sách quyền riêng tư và xin đồng ý cookie trước khi bật theo dõi cho mục đích marketing. Hash giúp giảm rủi ro nhưng không làm vấn đề này biến mất. Chi tiết cho doanh nghiệp của bạn nên hỏi ý kiến chuyên gia pháp lý.

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áchPhù hợp vớiƯu điểmHạn chế
Plugin/kết nối của nền tảng, như Shopify hoặc plugin Facebook for WooCommerceShop dùng nền tảng dựng sẵnCà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 MetaDoanh 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ậtPhả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ạnWebsite đã dùng GTM và muốn gửi dữ liệu đến nhiều nền tảngQuả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ướcPhả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ênKiể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
💡 Nếu dùng Shopify hoặc WooCommerce, hãy luôn bắt đầu bằng kết nối chính thức của nền tảng trước, rồi mới chuyển sang cách phức tạp hơn khi gặp giới hạn thật sự.

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.
💡 Hãy lưu access_token trong biến môi trường hoặc file cấu hình không nằm trong code công khai, đừng nhúng vào trang web, vì ai có token đều có thể gửi sự kiện giả vào Pixel của bạn.

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ỗiHậ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ớpChuyể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 hashRủi ro về dữ liệu cá nhân và không khớp được như mong đợiChuẩ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 fbcMeta không dùng được các giá trị này để khớpGử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ậtSự kiện bị từ chối hoặc sai thời gianDù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ậtSự kiện hiện ở trang test, gây nhầm lẫn khi kiểm traTá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 ý cookieTrá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
💡 Tài liệu của Meta cho biết nếu trong một request có bất kỳ sự kiện nào có event_time cũ hơn 7 ngày, cả request sẽ bị từ chối. Nếu gửi theo lô, phải lọc bỏ sự kiện cũ trước.

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.