Event Tracking — Theo Dõi Sự Kiện Trên Website
📚 TÀI LIỆU TRAINING NỘI BỘ MANGOADS
1. Mở Đầu — Pageviews Không Đủ, Bạn Cần Biết Người Dùng Đang Làm Gì
Hầu hết website đều có Google Analytics. Nhưng khi hỏi chủ doanh nghiệp "Người dùng làm gì trên website của bạn?", câu trả lời thường chỉ là: "Tháng này có 50.000 lượt xem trang."
50.000 pageviews nghe ấn tượng, nhưng nó chẳng nói lên điều gì cụ thể. Bao nhiêu người click nút "Liên hệ"? Bao nhiêu người xem video sản phẩm đến hết? Bao nhiêu người scroll xuống phần bảng giá? Bao nhiêu người tải brochure? Pageview giống như đếm số người bước vào cửa hàng — nhưng không biết ai đã cầm hàng lên xem, ai hỏi giá, ai bỏ đi ngay.
Event Tracking (theo dõi sự kiện) là cách bạn ghi nhận từng hành động cụ thể mà người dùng thực hiện trên website — click, scroll, xem video, điền form, tải file, tương tác với chatbot... Mỗi hành động đó là một "sự kiện" mang theo thông tin có giá trị.
💡 Không có event tracking, bạn chỉ biết người dùng "đến" và "đi". Có event tracking, bạn hiểu họ "quan tâm gì", "do dự ở đâu" và "quyết định như thế nào". Đó là sự khác biệt giữa đoán mò và ra quyết định dựa trên data.
Tại MangoAds, event tracking là một trong những bước setup đầu tiên cho mọi dự án analytics. Bởi vì nếu bạn không đo đúng, bạn không thể tối ưu đúng.
2. Phân Tích Chuyên Sâu
2.1. Mô Hình Sự Kiện Trong GA4 — Everything Is an Event
GA4 (Google Analytics 4) thay đổi hoàn toàn cách tư duy về tracking so với Universal Analytics. Trong GA4, mọi thứ đều là event — kể cả pageview cũng chỉ là một event có tên page_view.
Điều này mang lại sự linh hoạt rất lớn, nhưng cũng đòi hỏi bạn phải hiểu rõ hệ thống phân loại event của GA4.
4 loại event trong GA4
| Loại | Mô tả | Ví dụ | Cần setup? |
|---|---|---|---|
| Automatically Collected | GA4 tự thu thập khi bạn cài base tag | first_visit, session_start, user_engagement | Không — tự động |
| Enhanced Measurement | Bật/tắt trong GA4 Admin, không cần code | page_view, scroll, click (outbound), file_download, video_start | Bật trong Settings |
| Recommended Events | Google khuyến nghị dùng với tên và parameter chuẩn | login, sign_up, purchase, add_to_cart, begin_checkout | Cần setup thủ công |
| Custom Events | Bạn tự định nghĩa hoàn toàn | cta_click, quote_request, chatbot_open, pricing_view | Cần setup thủ công |
⚠️ Nguyên tắc quan trọng: Luôn ưu tiên dùng Recommended Events trước khi tạo Custom Events. Google thiết kế hệ thống báo cáo, audience, và machine learning dựa trên recommended events. Nếu bạn đặt tên event tùy ý cho hành động mà Google đã có tên chuẩn, bạn sẽ mất nhiều tính năng tự động.
Enhanced Measurement — Tracking "miễn phí" mà nhiều người bỏ qua
Enhanced Measurement cung cấp sẵn 7 loại event tracking mà bạn chỉ cần bật toggle trong GA4 Admin:
- Page views (
page_view) — Mỗi lần trang được load - Scrolls (
scroll) — Khi user scroll 90% trang - Outbound clicks (
click) — Click vào link ra khỏi domain - Site search (
view_search_results) — Khi user tìm kiếm trên site - Video engagement (
video_start,video_progress,video_complete) — Tương tác với YouTube embed - File downloads (
file_download) — Tải file (pdf, docx, xlsx, zip...) - Form interactions (
form_start,form_submit) — Bắt đầu và gửi form
Tuy nhiên, Enhanced Measurement có giới hạn. Scroll chỉ track ở mốc 90%, không track 25%/50%/75%. Form tracking không phải lúc nào cũng hoạt động với mọi loại form. Đó là lúc bạn cần custom event tracking.
2.2. Event Parameters — Dữ Liệu Đi Kèm Sự Kiện
Một event đơn lẻ như cta_click không đủ thông tin. Bạn cần biết click vào CTA nào, ở trang nào, nội dung gì. Đó là vai trò của event parameters.
// Ví dụ: gửi event với parameters
gtag('event', 'cta_click', {
button_text: 'Nhận báo giá miễn phí',
button_location: 'hero_section',
page_category: 'service',
service_type: 'seo'
});
Mỗi event trong GA4 có thể mang theo tối đa 25 custom parameters. Các parameter phổ biến:
| Parameter | Mục đích | Ví dụ giá trị |
|---|---|---|
button_text | Nội dung nút được click | "Liên hệ ngay", "Tải brochure" |
button_location | Vị trí trên trang | "header", "footer", "sidebar" |
content_type | Loại nội dung | "blog", "service", "landing_page" |
item_name | Tên sản phẩm/dịch vụ | "Gói SEO Premium" |
value | Giá trị tiền tệ | 15000000 |
💡 Mẹo thực chiến: Đặt tên parameter theo convention nhất quán. MangoAds dùng
snake_casevà prefix theo nhóm — ví dụform_name,form_step,form_field_error. Điều này giúp quản lý dễ dàng khi có hàng chục events.
2.3. Data Layer — Cầu Nối Giữa Website Và Tracking
Data Layer là một object JavaScript (window.dataLayer) đóng vai trò kho dữ liệu trung gian giữa website và Google Tag Manager (GTM). Thay vì hardcode tracking trực tiếp vào source code, developer đẩy dữ liệu vào data layer, và GTM đọc từ đó để gửi event.
// Developer đẩy dữ liệu vào data layer
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'form_submission',
form_name: 'contact_form',
form_location: 'service_page',
lead_type: 'hot_lead'
});
Tại sao cần data layer?
- Tách biệt code website và tracking code — Developer chỉ cần push data, marketer tự cấu hình trong GTM
- Linh hoạt — Thay đổi tracking logic không cần sửa code website
- Chính xác — Data từ server/backend (giá trị đơn hàng, user ID) được truyền chính xác, không phụ thuộc DOM
- Bảo trì dễ — Một nguồn dữ liệu duy nhất cho tất cả tracking tools (GA4, Google Ads, Meta Pixel, TikTok Pixel...)
⚠️ Sai lầm phổ biến: Nhiều team dùng GTM nhưng không setup data layer, thay vào đó dùng DOM scraping (đọc text từ HTML elements). Cách này rất dễ "vỡ" khi giao diện thay đổi — chỉ cần đổi class name hay cấu trúc HTML là tracking sai hết.
2.4. Google Tag Manager — Setup Event Tracking Không Cần Code
GTM là công cụ quản lý tag tập trung, cho phép marketer và analyst triển khai event tracking mà không cần deploy code mới. Mọi thứ hoạt động theo logic: Trigger → Tag → Variable.
Quy trình setup một custom event trong GTM
Bước 1: Xác định Trigger (Điều kiện kích hoạt)
- Click vào element cụ thể (CSS selector, Click Classes, Click ID)
- Form submission
- Scroll depth đạt ngưỡng nhất định
- Timer (thời gian ở trên trang)
- Custom event từ data layer
- Element visibility (element xuất hiện trong viewport)
Bước 2: Tạo Tag (GA4 Event)
- Chọn tag type: Google Analytics: GA4 Event
- Liên kết với GA4 Configuration Tag
- Đặt tên event (theo naming convention)
- Thêm event parameters
Bước 3: Gán Variables (Biến dữ liệu)
- Built-in variables: Click Text, Click URL, Page Path, Referrer...
- Data Layer variables: đọc giá trị từ
dataLayer.push() - Custom JavaScript variables: tính toán giá trị phức tạp
- Lookup Table: ánh xạ giá trị (ví dụ: URL → tên trang thân thiện)
Bước 4: Preview & Debug
- Dùng GTM Preview Mode để kiểm tra trigger có fire đúng không
- Kiểm tra parameters có truyền đúng giá trị không
- Xác nhận event xuất hiện trong GA4 DebugView (Real-time → DebugView)
Bước 5: Publish
- Tạo version mới với mô tả rõ ràng
- Submit và publish
2.5. Custom Dimensions & Metrics — Đưa Event Parameters Vào Báo Cáo
Khi bạn gửi event parameters lên GA4, chúng chưa tự động xuất hiện trong báo cáo. Bạn cần đăng ký chúng thành Custom Dimensions (cho giá trị text) hoặc Custom Metrics (cho giá trị số).
Cách đăng ký trong GA4 Admin:
- Vào Admin → Custom Definitions → Create custom dimension
- Chọn Scope: Event (gắn với từng event) hoặc User (gắn với user)
- Nhập tên hiển thị và Event Parameter name tương ứng
| Giới hạn GA4 | Free | Google Analytics 360 |
|---|---|---|
| Event-scoped custom dimensions | 50 | 125 |
| User-scoped custom dimensions | 25 | 100 |
| Custom metrics | 50 | 125 |
⚠️ Lưu ý quan trọng: Custom dimensions có giới hạn số lượng. Hãy planning kỹ trước khi đăng ký. Nếu đăng ký rồi xóa, slot vẫn bị chiếm trong một khoảng thời gian. MangoAds luôn duy trì một bảng "Custom Dimension Registry" cho mỗi property để quản lý chặt chẽ.
2.6. E-commerce Event Tracking
Đối với website bán hàng, e-commerce tracking là bắt buộc nếu muốn hiểu hành vi mua sắm từ A đến Z.
GA4 cung cấp bộ recommended events chuẩn cho e-commerce:
| Event | Thời điểm | Parameters quan trọng |
|---|---|---|
view_item_list | Xem danh sách sản phẩm | item_list_name, items[] |
view_item | Xem chi tiết sản phẩm | currency, value, items[] |
add_to_cart | Thêm vào giỏ | currency, value, items[] |
remove_from_cart | Bỏ khỏi giỏ | currency, value, items[] |
begin_checkout | Bắt đầu thanh toán | currency, value, items[], coupon |
add_payment_info | Nhập thông tin thanh toán | currency, value, payment_type |
add_shipping_info | Chọn phương thức giao hàng | currency, value, shipping_tier |
purchase | Mua hàng thành công | transaction_id, value, tax, shipping, items[] |
Mỗi item trong mảng items[] cần có cấu trúc chuẩn:
items: [{
item_id: 'SKU_12345',
item_name: 'Áo thun MangoAds Limited',
item_category: 'Thời trang',
item_category2: 'Áo',
item_brand: 'MangoAds',
price: 350000,
quantity: 1,
discount: 50000
}]
💡 Thực chiến: Với các platform phổ biến (Shopify, WooCommerce, Haravan), nhiều plugin hỗ trợ sẵn e-commerce tracking. Tuy nhiên, MangoAds luôn kiểm tra lại data sau khi cài plugin vì nhiều plugin gửi data thiếu hoặc sai format, đặc biệt với các website đã custom giao diện nhiều.
2.7. Form Tracking — Biết Chính Xác Form Nào Được Submit
Form là touchpoint quan trọng nhất với nhiều doanh nghiệp B2B và dịch vụ. Nhưng Enhanced Measurement chỉ bắt được form_submit dựa trên HTML form element chuẩn — nhiều form builder hiện đại (AJAX form, React form) không trigger event này.
Các cách track form hiệu quả:
- Data layer push từ form handler — Chính xác nhất, developer push event sau khi form submit thành công (sau validation)
- GTM Form Submission Trigger — Hoạt động với HTML form chuẩn
- GTM Element Visibility Trigger — Track khi "Thank you" message xuất hiện sau submit
- Custom JavaScript Trigger — Lắng nghe AJAX response hoặc form state change
// Ví dụ: push data layer sau khi form submit thành công
document.querySelector('#contact-form').addEventListener('submit', function(e) {
// Sau khi validate và gửi thành công
window.dataLayer.push({
event: 'form_submission',
form_name: 'contact_form',
form_location: window.location.pathname,
form_fields_count: 5
});
});
📌 Best practice: Nên track cả
form_start(khi user bắt đầu điền field đầu tiên) vàform_submission. Tỉ lệform_start / form_submissioncho thấy form có quá dài hay gây khó khăn cho user không.
2.8. Scroll Tracking — Đo Mức Độ Người Dùng Đọc Nội Dung
Enhanced Measurement chỉ track scroll 90% — quá "all or nothing". Trong thực tế, bạn cần biết chính xác hơn.
Setup scroll tracking chi tiết trong GTM:
- Bật Built-in Variable: Scroll Depth Threshold
- Tạo Scroll Depth Trigger với các mốc: 25%, 50%, 75%, 90%
- Tạo GA4 Event Tag với event name
scroll_depth - Truyền parameter
scroll_threshold={{Scroll Depth Threshold}}
Ứng dụng data scroll tracking:
- Blog/Content: Biết bao nhiêu % người đọc đến phần CTA cuối bài → tối ưu vị trí CTA
- Landing page: Xác định "điểm rớt" — phần nào người dùng ngừng scroll → redesign hoặc rút ngắn
- Product page: Biết user có scroll xuống phần review, specification hay không
2.9. Video Tracking
Video là content format ngày càng phổ biến. GA4 Enhanced Measurement tự động track YouTube embedded videos, nhưng chỉ khi video được embed bằng YouTube iframe API.
Các event được track tự động:
video_start— Bắt đầu xemvideo_progress— Xem đến 10%, 25%, 50%, 75%video_complete— Xem hết
Với video không phải YouTube (Vimeo, HTML5 video, Wistia), bạn cần custom tracking qua GTM hoặc JavaScript:
// Ví dụ: Track HTML5 video
const video = document.querySelector('#product-video');
video.addEventListener('play', function() {
dataLayer.push({ event: 'video_play', video_title: 'Product Demo' });
});
video.addEventListener('ended', function() {
dataLayer.push({ event: 'video_complete', video_title: 'Product Demo' });
});
2.10. File Download Tracking
Enhanced Measurement tự động track file download với các extension phổ biến: pdf, xlsx, docx, csv, zip, pptx, key, và nhiều format khác.
Tuy nhiên, bạn nên bổ sung custom tracking khi cần thêm thông tin:
- Tên tài liệu thân thiện (không phải URL file)
- Category tài liệu (brochure, bảng giá, hướng dẫn sử dụng)
- Vị trí link download trên trang
// Ví dụ data layer push cho file download
dataLayer.push({
event: 'resource_download',
file_name: 'MangoAds - Bảng giá dịch vụ SEO 2026',
file_type: 'pdf',
file_category: 'pricing',
download_location: 'service_page_sidebar'
});
3. Góc Nhìn MangoAds
Triết lý tracking của MangoAds: "Đo Đúng Trước, Đo Đủ Sau"
Nhiều doanh nghiệp mắc sai lầm khi cố gắng track mọi thứ ngay từ đầu. Kết quả là hàng chục events nhưng không ai nhìn, data hỗn loạn, và cuối cùng chẳng ai tin vào analytics nữa.
MangoAds tiếp cận event tracking theo 3 tầng ưu tiên:
Tầng 1 — Business Critical Events (Tuần 1) Track ngay những events liên quan trực tiếp đến revenue và lead:
- Form submission (contact, quote request)
- Phone click (click-to-call)
- Purchase/Transaction
- CTA clicks trên landing page
Tầng 2 — Engagement Events (Tuần 2-3) Bổ sung events giúp hiểu hành vi và tối ưu trải nghiệm:
- Scroll depth (25/50/75/90%)
- Video engagement
- Internal link clicks (navigation patterns)
- Search on site
Tầng 3 — Advanced Events (Tháng 2+) Events nâng cao phục vụ phân tích sâu:
- Form field interactions (field nào user hay bỏ trống)
- Tab/Accordion interactions
- Chatbot engagement
- Error tracking (404, form validation errors)
📌 "Tại MangoAds, chúng tôi không chạy theo số lượng events. Mỗi event được setup phải trả lời được một câu hỏi kinh doanh cụ thể. Nếu không ai dùng data đó để ra quyết định, event đó không cần tồn tại." — Team Analytics MangoAds
Naming Convention chuẩn MangoAds
Chúng tôi dùng naming convention nhất quán cho mọi dự án:
[category]_[action]
Ví dụ:
- form_submit
- form_start
- cta_click
- video_play
- video_complete
- file_download
- scroll_depth
- chat_open
- chat_message_sent
Parameter names dùng snake_case với prefix theo nhóm:
form_name,form_location,form_stepvideo_title,video_duration,video_providercta_text,cta_location,cta_destination
4. Ứng Dụng Thực Tế
4.1. Event Tracking Plan Template
Trước khi triển khai bất kỳ event tracking nào, MangoAds luôn tạo một Tracking Plan — tài liệu sống được cập nhật xuyên suốt dự án.
| # | Event Name | Trigger | Parameters | Custom Dimension? | Mục đích kinh doanh | Ưu tiên |
|---|---|---|---|---|---|---|
| 1 | form_submit | Form gửi thành công | form_name, form_location, lead_type | Yes — form_name | Đếm leads theo loại form | P0 |
| 2 | cta_click | Click nút CTA | cta_text, cta_location, cta_destination | Yes — cta_location | Biết CTA nào hiệu quả nhất | P0 |
| 3 | phone_click | Click số điện thoại | phone_number, click_location | No | Đếm cuộc gọi từ website | P0 |
| 4 | scroll_depth | Scroll 25/50/75/90% | scroll_threshold, page_type | Yes — page_type | Đánh giá mức độ đọc nội dung | P1 |
| 5 | video_play | Bấm play video | video_title, video_duration | Yes — video_title | Đo engagement với video content | P1 |
| 6 | file_download | Click download | file_name, file_category | Yes — file_category | Biết tài liệu nào được quan tâm | P1 |
| 7 | chat_open | Mở chatbot/live chat | chat_source, page_path | No | Đo nhu cầu hỗ trợ trực tiếp | P2 |
4.2. Implementation Guide — Từ Plan Đến Deploy
Bước 1: Audit hiện trạng
- Kiểm tra GA4 đã cài đúng chưa (dùng Google Tag Assistant)
- Xem Enhanced Measurement đã bật những gì
- List các events đang được track (GA4 → Admin → Events)
- Xác nhận GTM đã được cài và hoạt động
Bước 2: Setup Data Layer (nếu cần)
Phối hợp với developer để push data layer cho các events cần data từ backend:
// Ví dụ: Data layer cho e-commerce
window.dataLayer = window.dataLayer || [];
// Khi user xem sản phẩm
window.dataLayer.push({
event: 'view_item',
ecommerce: {
currency: 'VND',
value: 1500000,
items: [{
item_id: 'PRD-001',
item_name: 'Dịch vụ SEO tổng thể',
item_category: 'Dịch vụ SEO',
price: 15000000
}]
}
});
Bước 3: Cấu hình GTM
- Tạo Triggers cho từng event trong tracking plan
- Tạo GA4 Event Tags tương ứng
- Setup Variables cần thiết (Data Layer, Click, DOM)
- Test từng event trong Preview Mode
Bước 4: Đăng ký Custom Dimensions trong GA4
- Vào GA4 Admin → Custom Definitions
- Đăng ký các parameters cần xuất hiện trong báo cáo
- Chờ 24-48h để data bắt đầu xuất hiện
Bước 5: Validate và QA
- Dùng GA4 DebugView để xác nhận events fire đúng
- Kiểm tra parameters có giá trị chính xác
- Test trên nhiều thiết bị và trình duyệt
- Đối chiếu với Realtime Report trong GA4
- Tạo checklist QA và sign-off trước khi publish GTM container
Bước 6: Tạo báo cáo và theo dõi
- Tạo Explorations trong GA4 dựa trên events đã track
- Setup Audiences từ event data (ví dụ: user đã xem video nhưng chưa submit form)
- Tạo Conversions từ events quan trọng (form_submit, purchase)
5. FAQ — Câu Hỏi Thường Gặp
Q: Enhanced Measurement có đủ dùng không? Có cần setup thêm custom events không?
Enhanced Measurement là điểm khởi đầu tốt, nhưng thường không đủ cho doanh nghiệp nghiêm túc về analytics. Scroll chỉ track 90%, form tracking không ổn định với AJAX forms, và bạn không có context (form nào, CTA nào, vị trí nào). Custom events cho phép bạn track chính xác những gì quan trọng với business.
Q: Nên dùng gtag trực tiếp hay GTM để setup event tracking?
Luôn ưu tiên GTM. Lý do: (1) Không cần developer deploy code mỗi lần thay đổi tracking, (2) Có Preview Mode để test trước khi publish, (3) Version control — rollback nếu có lỗi, (4) Quản lý tập trung mọi tracking tags (GA4, Ads, Meta, TikTok...). Chỉ dùng gtag trực tiếp khi website cực kỳ đơn giản hoặc có lý do kỹ thuật đặc biệt.
Q: Bao nhiêu custom events là đủ?
Không có con số cố định. Nguyên tắc: mỗi event phải trả lời được một câu hỏi kinh doanh. Website dịch vụ đơn giản có thể chỉ cần 5-10 events. E-commerce phức tạp có thể cần 20-30+. Quan trọng là chất lượng data, không phải số lượng events.
Q: Event tracking có ảnh hưởng đến tốc độ website không?
Nếu triển khai đúng qua GTM, ảnh hưởng rất nhỏ. GTM load asynchronously và các event tags fire sau khi page đã render. Tuy nhiên, nếu có quá nhiều tags hoặc custom JavaScript phức tạp, có thể ảnh hưởng. MangoAds luôn kiểm tra Web Vitals trước và sau khi deploy tracking.
Q: Làm sao kiểm tra event tracking đang hoạt động đúng?
Dùng 3 công cụ: (1) GTM Preview Mode — xem trigger fire hay không, data truyền đúng không, (2) GA4 DebugView (Admin → DebugView) — xem events real-time với parameters, (3) Google Tag Assistant (Chrome extension) — xác nhận tags đang hoạt động. Sau đó đối chiếu với GA4 Realtime Report.
Q: Event data bị thiếu do ad blockers và consent mode thì sao?
Đây là thực tế không tránh khỏi. Một số cách giảm thiểu: (1) Implement GA4 Consent Mode — Google modeling bù data bị thiếu, (2) Server-side tracking qua server-side GTM — giảm bị block, (3) Chấp nhận data sẽ không bao giờ 100% chính xác — focus vào xu hướng hơn là con số tuyệt đối.
6. Key Takeaways
📌 Pageview chỉ là bề mặt — Event tracking giúp bạn hiểu hành vi thực sự của người dùng: click, scroll, xem video, tải file, điền form.
📌 GA4 = Everything is an event — Hiểu 4 loại events (Automatically Collected, Enhanced Measurement, Recommended, Custom) để chọn đúng cách triển khai.
📌 Data layer là nền tảng — Tách biệt data layer khỏi tracking code giúp hệ thống bền vững, dễ bảo trì, và chính xác hơn.
📌 GTM là công cụ chuẩn — Quản lý tập trung, test trước khi deploy, version control, không phụ thuộc developer cho mỗi thay đổi nhỏ.
📌 Tracking Plan trước, Implementation sau — Luôn bắt đầu bằng tài liệu tracking plan. Mỗi event phải gắn với một câu hỏi kinh doanh cụ thể.
📌 Đo đúng trước, đo đủ sau — Ưu tiên business critical events trước, bổ sung dần theo thời gian. Chất lượng data quan trọng hơn số lượng events.
📌 Register Custom Dimensions — Event parameters không tự xuất hiện trong báo cáo GA4. Bạn cần đăng ký chúng thành Custom Dimensions/Metrics.
📌 Validate luôn luôn — GTM Preview Mode + GA4 DebugView + Tag Assistant là bộ 3 không thể thiếu để QA tracking.
🔗 Bài liên quan: Conversion Tracking · Google Search Console · KPI Digital Marketing
MangoAds — Agency kỹ thuật chuyên sâu. Khi bạn cần event tracking được setup đúng ngay từ đầu, đội ngũ Analytics của MangoAds luôn sẵn sàng đồng hành.