Mục lục
Có một câu tôi nghe nhiều đến mức thuộc lòng: "Website bên em cài Google Analytics rồi, có số liệu đầy đủ."
Hỏi lại "sao anh biết là đầy đủ?", câu trả lời gần như luôn giống nhau: "Em mở Realtime thấy có người đang online, có số nhảy."
Tôi phải nói thẳng: Realtime có số chỉ chứng minh một điều — có một đoạn mã đang gửi dữ liệu đi. Nó không chứng minh dữ liệu đó đúng. Không chứng minh mỗi đơn hàng chỉ được đếm một lần. Không chứng minh khách đến từ quảng cáo vẫn được ghi là đến từ quảng cáo.
Và đây là phần khó nghe hơn: một GA4 cài sai còn nguy hiểm hơn không có GA4. Không có số liệu, bạn biết mình đang mù và sẽ thận trọng. Có số liệu sai, bạn tự tin ra quyết định — cắt ngân sách kênh đang mang tiền về, dồn tiền vào kênh chỉ "trông" hiệu quả.
Con số: phần lớn bản cài đặt GA4 đều có lỗi
SR Analytics — một đơn vị chuyên audit — cho biết sau khi kiểm tra hơn 200 bản cài đặt GA4, hơn 81% có lỗi triển khai làm sai độ chính xác dữ liệu. Trong đó 73% thiếu theo dõi event quan trọng, 71% cấu hình conversion sai hoặc thiếu, 68% hỏng theo dõi xuyên domain (SR Analytics, 10/2025).
Tôi cần trung thực về con số này: đó là dữ liệu từ khách hàng của một công ty làm dịch vụ audit, không công bố phương pháp, và người đã thuê audit thường là người đang nghi có vấn đề. Đừng coi 81% là tỷ lệ của toàn thị trường.
Nhưng có một nguồn khác, khó cãi hơn: so số đơn trong hệ thống bán hàng với số purchase trong GA4. Clickport audit 75 cửa hàng WooCommerce đang chạy (5/2026) và thấy chênh lệch 15–25% là bình thường với cửa hàng ở Mỹ; cửa hàng ở châu Âu thường mất 40–60% (Clickport, 2026). Một phần chênh lệch đó không phải lỗi cài đặt mà là giới hạn của việc đo trên trình duyệt — báo cáo của eyeo ước tính 1,1 tỷ người, tức 30% người dùng internet toàn cầu, đang dùng trình chặn quảng cáo tính đến quý 4/2025 (eyeo 2026 Ad-blocking Report).
Nói gọn: GA4 không bao giờ khớp 100% với doanh thu thật. Câu hỏi không phải "có lệch không", mà là "lệch bao nhiêu, vì sao, và phần nào là do mình cài sai". Phần do cài sai — đó là phần bạn hoàn toàn sửa được.
Dưới đây là 7 lỗi tôi gặp nhiều nhất, xếp theo mức độ làm hỏng quyết định kinh doanh.
Lỗi 1: Cài hai lần — mọi thứ được đếm gấp đôi
Triệu chứng: lượt xem trang và chuyển đổi cao bất thường, bounce rate thấp đến mức đáng ngờ.
Nguyên nhân: website có cùng lúc mã gtag.js dán trực tiếp vào theme (hoặc một plugin tự chèn) và Google tag trong Google Tag Manager, cùng một Measurement ID. Mỗi lần tải trang bắn hai lần. Biến thể khác: cùng một container GTM được chèn hai lần — một lần bởi theme, một lần bởi plugin.
Lỗi này không báo lỗi, không đỏ, không vàng. Mọi thứ "chạy". Chỉ có số là sai (Analytics Mania).
Cách tự kiểm tra: mở trang web, bấm F12 → tab Network, gõ lọc collect, tải lại trang. Mỗi lần tải trang phải có đúng một request page_view. Thấy hai — bạn đã tìm ra lý do vì sao "traffic tăng mạnh" tháng trước.
Một biến thể dành riêng cho website dạng ứng dụng (React, Vue, Next.js): GA4 có tuỳ chọn tự đếm lượt xem khi URL thay đổi, trong khi GTM cũng có trigger "History Change" làm đúng việc đó. Bật cả hai, mỗi lần chuyển trang thành hai pageview. Google ghi rõ trong tài liệu: nếu dùng GTM để đo trang thì tắt tính năng tự động bên GA4 (Google Developers).
Lỗi 2: Đếm cú bấm nút "Gửi" thay vì khách hàng thật
Triệu chứng: GA4 báo 50 lead, đội sales chỉ nhận 30 form.
Đây là lỗi tôi thấy ở form liên hệ nhiều hơn bất cứ đâu. Cách cài nhanh nhất là bắt sự kiện "click vào nút Gửi". Nhưng một cú click không phải là một lead. Khách bấm Gửi khi còn để trống số điện thoại — form báo lỗi — GA4 vẫn ghi một lead. Khách bấm hai lần vì mạng chậm — hai lead.
Trường hợp ngược lại cũng tệ không kém: form gửi bằng AJAX (không tải lại trang), trigger "Form Submission" mặc định của GTM không bắt được, và GA4 báo 0 lead trong khi hộp thư vẫn đầy yêu cầu.
Nguyên tắc đúng: chỉ ghi nhận lead sau khi máy chủ xác nhận đã nhận form thành công, và dùng đúng tên event chuẩn của Google là generate_lead.
Lấy ví dụ chính website bạn đang đọc. Form liên hệ ở đây chỉ bắn generate_lead sau khi API trả về thành công — không phải khi bấm nút:
const res = await fetch("/api/contact", {
method: "POST",
body: JSON.stringify({ ...form, locale }),
});
if (res.ok) {
setStatus("success");
trackEvent("generate_lead", { form_location: "contact_page", locale });
}Validation lỗi, server lỗi, mạng lỗi — không có lead nào được ghi.
Lỗi 3: Dùng trang "Cảm ơn" làm chuyển đổi mà không chống đếm lại
Triệu chứng: số chuyển đổi cao hơn số đơn thật, chênh lệch không đều theo ngày.
Đánh dấu "lượt xem trang /cam-on" là chuyển đổi là cách phổ biến vì không cần lập trình. Vấn đề: trang cảm ơn có thể mở lại bao nhiêu lần cũng được. Khách tải lại trang, bấm Back rồi Forward, mở lại từ lịch sử trình duyệt — mỗi lần là một "chuyển đổi" mới. Nhiều form dùng chung một trang cảm ơn thì còn tệ hơn: form đăng ký nhận tin và form báo giá bị gộp làm một.
Một sai lầm đi kèm: có người đánh dấu luôn event page_view là key event. Kết quả là mọi lượt xem trang trên toàn website đều thành chuyển đổi. Cách đúng là tạo một event riêng từ page_view với điều kiện URL, rồi đánh dấu event riêng đó.
Lỗi 4: Đơn hàng không có mã đơn — hoặc có, nhưng sai
Triệu chứng: doanh thu GA4 lệch xa hệ thống bán hàng; báo cáo sản phẩm trống trơn dù có đơn.
Event purchase của GA4 có những trường bắt buộc mà rất nhiều bản cài bỏ sót:
transaction_id— mã đơn duy nhất. GA4 dùng mã này để loại đơn trùng. Điều ít người biết: nếu gửi chuỗi rỗng làm mã đơn, GA4 coi mọi đơn có mã rỗng là cùng một đơn và loại hết trừ đơn đầu tiên (Google Analytics Help). Bạn tưởng mình bán 100 đơn, GA4 thấy 1.valuekèmcurrency— gửi giá trị mà không có mã tiền tệ (VND,USD) thì doanh thu có thể không được tính.items— danh sách sản phẩm. Thiếu nó, bạn biết mình có doanh thu nhưng không biết bán được gì.
Và value chỉ là tổng giá × số lượng — không cộng phí ship và thuế vào đây, Google có trường riêng cho hai khoản đó.
Thêm một quy tắc vàng: chỉ gửi purchase khi đơn đã được xác nhận thanh toán, không phải khi khách bấm "Đặt hàng".
Lỗi 5: Tiền quảng cáo đi một nơi, công lao về một nơi khác
Triệu chứng: chạy quảng cáo đều đặn nhưng báo cáo nguồn truy cập toàn "Direct", "(not set)", "Unassigned" — hoặc tên cổng thanh toán đứng đầu bảng "Referral".
Đây là lỗi tốn tiền nhất vì nó trực tiếp bóp méo quyết định ngân sách. Ba thủ phạm thường gặp:
- Chuyển hướng làm rơi UTM. Link quảng cáo có
?utm_source=facebook&utm_medium=paid_social, nhưng website chuyển hướng từhttpsanghttps, hoặc từ không-www sang www, và cắt mất phần sau dấu?. GA4 tải ở trang đích — không còn UTM — ghi nhận là Direct. - Cổng thanh toán "cướp" công. Khách đi từ website sang VNPay, MoMo hay cổng quốc tế rồi quay về trang xác nhận. Nếu không khai báo cổng thanh toán trong danh sách "unwanted referrals", đơn hàng được ghi công cho... cổng thanh toán.
- UTM viết lộn xộn.
Facebook,facebook,FBlà ba nguồn khác nhau trong mắt GA4 — Google xác nhận UTM phân biệt chữ hoa chữ thường (Google Analytics Help). Một chiến dịch bị xé làm ba dòng, không dòng nào đủ lớn để bạn chú ý.
Một bẫy nhỏ khiến nhiều người kết luận sai rằng "UTM không chạy": GA4 cố ý loại UTM khỏi dimension "Landing page + query string". UTM nằm trong "Page location". Nhìn sai chỗ, bạn sẽ đi sửa một thứ không hỏng.
Lỗi 6: Banner cookie có, nhưng thứ tự chạy sai
Triệu chứng: số liệu dao động khó giải thích sau khi gắn banner cookie; Google Ads mất dần đối tượng remarketing.
Từ ngày 1/1/2026, Luật Bảo vệ dữ liệu cá nhân (Luật số 91/2025/QH15) chính thức có hiệu lực tại Việt Nam, với quyền được biết và quyền đồng ý của chủ thể dữ liệu được quy định rõ (LuatVietnam). Nhiều doanh nghiệp đã gắn banner cookie. Ít ai kiểm tra nó có thực sự nói chuyện được với GA4 hay không.
Hai lỗi kỹ thuật phổ biến nhất:
- Lệnh "mặc định" chạy sau lệnh đo. Google yêu cầu
gtag('consent', 'default', …)phải chạy trước mọi lệnh gửi dữ liệu (Google Developers). Đặt sai thứ tự, lượt truy cập đầu tiên — thường là lượt mang nguồn quảng cáo — dùng sai trạng thái đồng ý. - Thiếu hai tín hiệu của Consent Mode v2. Ngoài
ad_storagevàanalytics_storage, bản v2 cần thêmad_user_datavàad_personalization. Thiếu hai cái này, tính năng remarketing và đo chuyển đổi nâng cao của Google Ads bị ảnh hưởng.
Một điều cần nhớ: Consent Mode không tự lưu lựa chọn của khách. Banner phải lưu và đọc lại ở lần truy cập sau. Không làm vậy, khách bấm "Đồng ý" hôm nay, ngày mai lại bị coi là chưa chọn.
Lỗi 7: Những lỗi không có đường quay lại
Sáu lỗi trên đều sửa được — sửa xong, số liệu từ hôm đó trở đi sẽ đúng. Nhóm lỗi này thì khác: sai là mất vĩnh viễn.
- Bộ lọc dữ liệu "Exclude" để ở trạng thái Active. Bộ lọc traffic nội bộ khi đã Active sẽ loại dữ liệu khỏi GA4 và cả BigQuery — không khôi phục được (Google Analytics Help). Google cho chế độ "Testing" chính là để bạn chạy thử trước. Nhập sai dải IP một lần, bạn có thể vừa xoá luôn dữ liệu của khách thật.
- Gửi tham số nhưng quên đăng ký. Bạn gửi
form_name,plan,product_typekèm event — nhưng muốn xem chúng trong báo cáo, phải đăng ký thành Custom dimension. Việc đăng ký không áp dụng ngược cho dữ liệu cũ (Google Analytics Help). Ba tháng gửi mà quên đăng ký là ba tháng không phân tích được. - Thời gian lưu dữ liệu mặc định 2 tháng. Thiết lập này ảnh hưởng đến Explorations (phân tích nâng cao). Đến lúc muốn so sánh cùng kỳ năm trước thì dữ liệu chi tiết đã bị xoá. Hầu hết doanh nghiệp nên đổi lên 14 tháng ngay từ ngày đầu.
Tôi cũng không làm được 100% — và đó là điều nên biết
Tôi đã khoe đoạn code form ở trên. Công bằng thì phải nói nốt phần còn lại: website này cũng đo hoàn toàn trên trình duyệt. Nghĩa là với khoảng 30% người dùng internet có trình chặn quảng cáo, một phần lead của chính tôi không bao giờ xuất hiện trong GA4. Tôi chấp nhận điều đó vì lead cuối cùng vẫn về hộp thư — hộp thư mới là nguồn sự thật, GA4 chỉ là la bàn.
Đó là tư duy tôi muốn bạn mang theo: GA4 dùng để thấy xu hướng và so sánh kênh, không phải sổ kế toán. Cài đúng thì xu hướng đáng tin. Cài sai thì xu hướng cũng sai — và đó mới là vấn đề.
Khung kiểm tra 30 phút cho chủ doanh nghiệp
Bạn không cần biết lập trình để làm bài kiểm tra này. Cần một buổi chiều và một người được quyền xem GA4.
1. Đối soát với nguồn sự thật (10 phút). Lấy số đơn hoặc số lead thật của tháng trước từ hệ thống bán hàng, CRM hoặc hộp thư. So với GA4 cùng khoảng thời gian, cùng múi giờ. Lệch 10–25% là vùng bình thường của đo trên trình duyệt. GA4 cao hơn số thật gần như chắc chắn là lỗi đếm trùng (lỗi 1–3). GA4 thấp hơn rất nhiều thì xem lỗi 2, 4 và 6.
2. Đếm request (5 phút). Mở F12 → Network → lọc collect. Tải trang: một page_view. Gửi thử một form hợp lệ: một generate_lead. Gửi thử form để trống trường bắt buộc: không có gì.
3. Kiểm tra nguồn (10 phút). Mở báo cáo Traffic acquisition, xem dòng Unassigned, (not set) và Referral. Thấy tên cổng thanh toán hay tên miền của chính bạn trong Referral — lỗi 5. Thấy cùng một nguồn viết hoa viết thường khác nhau — lỗi 5.
4. Kiểm tra cài đặt không thể sửa ngược (5 phút). Admin → Data retention: đã là 14 tháng chưa? Admin → Data filters: có bộ lọc nào đang Active mà không ai nhớ đã test? Admin → Custom definitions: các tham số bạn đang gửi đã được đăng ký chưa?
Ba câu hỏi phải tách riêng khi kiểm tra: Tag có chạy không? (Tag Assistant, GTM Preview) — GA4 có nhận đúng không? (DebugView, Realtime) — Số sau xử lý có đúng không? (báo cáo sau 24–48 giờ, đối soát với doanh thu thật). Một công cụ chỉ trả lời được một câu. Thấy tag chạy rồi kết luận "số đúng" là nhảy cóc qua hai câu còn lại.
Cái giá của số liệu sai
Quay lại câu chuyện đầu bài. Doanh nghiệp có GA4 cài sai không mất tiền vì GA4. Họ mất tiền vì những quyết định được đưa ra dựa trên nó.
Một kênh quảng cáo bị ghi công thành "Direct" sẽ trông như đang đốt tiền vô ích — và bị cắt. Một form đếm cú click sẽ làm chi phí mỗi lead trông rẻ hơn thực tế — và bạn tăng ngân sách cho nó. Một đơn hàng bị đếm hai lần sẽ khiến ROAS trông đẹp gấp đôi — cho đến khi kế toán chốt sổ.
Sửa 7 lỗi trên không làm website bạn đẹp hơn hay nhanh hơn. Nó làm một việc quan trọng hơn: giúp bạn biết đồng tiền marketing nào đang thực sự mang khách về.
Nếu đã đối soát và thấy con số lệch mà không rõ vì sao, hãy gửi cho tôi kết quả bước 1 và bước 2 của khung kiểm tra trên. Thường chỉ cần nhìn hai con số đó là đã khoanh được vùng lỗi. Và nếu bạn muốn hiểu vì sao Google vừa thêm bộ lọc hostname cho GA4, bài Google Analytics vừa có Dashboard mới là phần đọc tiếp hợp lý.
Nguồn tham khảo:
- SR Analytics — Broken GA4? Audit What's Costing You Revenue (10/2025)
- Clickport — WooCommerce Sales Not Tracking in GA4? We Audited 75 Stores (05/2026)
- eyeo — 2026 Ad-blocking Report
- Google Analytics Help — Minimize duplicate key events with transaction IDs
- Google Analytics Help — Collect campaign data with custom URLs
- Google Analytics Help — Filter out internal traffic
- Google Analytics Help — About custom dimensions and metrics
- Google for Developers — Set up consent mode on websites
- Google for Developers — Measure single-page applications
- Analytics Mania — Duplicate Events in Google Analytics 4 and How to Fix Them
- LuatVietnam — Luật Bảo vệ dữ liệu cá nhân 2025 có hiệu lực khi nào?

