Chuyển tới nội dung chính

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ạiMô tảVí dụCần setup?
Automatically CollectedGA4 tự thu thập khi bạn cài base tagfirst_visit, session_start, user_engagementKhông — tự động
Enhanced MeasurementBật/tắt trong GA4 Admin, không cần codepage_view, scroll, click (outbound), file_download, video_startBật trong Settings
Recommended EventsGoogle khuyến nghị dùng với tên và parameter chuẩnlogin, sign_up, purchase, add_to_cart, begin_checkoutCần setup thủ công
Custom EventsBạn tự định nghĩa hoàn toàncta_click, quote_request, chatbot_open, pricing_viewCầ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:

ParameterMục đíchVí dụ giá trị
button_textNội dung nút được click"Liên hệ ngay", "Tải brochure"
button_locationVị trí trên trang"header", "footer", "sidebar"
content_typeLoại nội dung"blog", "service", "landing_page"
item_nameTên sản phẩm/dịch vụ"Gói SEO Premium"
valueGiá 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_case và 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?

  1. Tách biệt code website và tracking code — Developer chỉ cần push data, marketer tự cấu hình trong GTM
  2. Linh hoạt — Thay đổi tracking logic không cần sửa code website
  3. 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
  4. 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:

  1. Vào Admin → Custom Definitions → Create custom dimension
  2. Chọn Scope: Event (gắn với từng event) hoặc User (gắn với user)
  3. Nhập tên hiển thị và Event Parameter name tương ứng
Giới hạn GA4FreeGoogle Analytics 360
Event-scoped custom dimensions50125
User-scoped custom dimensions25100
Custom metrics50125

⚠️ 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:

EventThời điểmParameters quan trọng
view_item_listXem danh sách sản phẩmitem_list_name, items[]
view_itemXem chi tiết sản phẩmcurrency, value, items[]
add_to_cartThêm vào giỏcurrency, value, items[]
remove_from_cartBỏ khỏi giỏcurrency, value, items[]
begin_checkoutBắt đầu thanh toáncurrency, value, items[], coupon
add_payment_infoNhập thông tin thanh toáncurrency, value, payment_type
add_shipping_infoChọn phương thức giao hàngcurrency, value, shipping_tier
purchaseMua hàng thành côngtransaction_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ả:

  1. 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)
  2. GTM Form Submission Trigger — Hoạt động với HTML form chuẩn
  3. GTM Element Visibility Trigger — Track khi "Thank you" message xuất hiện sau submit
  4. 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_submission cho 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:

  1. Bật Built-in Variable: Scroll Depth Threshold
  2. Tạo Scroll Depth Trigger với các mốc: 25%, 50%, 75%, 90%
  3. Tạo GA4 Event Tag với event name scroll_depth
  4. 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 xem
  • video_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_step
  • video_title, video_duration, video_provider
  • cta_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 NameTriggerParametersCustom Dimension?Mục đích kinh doanhƯu tiên
1form_submitForm gửi thành côngform_name, form_location, lead_typeYes — form_nameĐếm leads theo loại formP0
2cta_clickClick nút CTActa_text, cta_location, cta_destinationYes — cta_locationBiết CTA nào hiệu quả nhấtP0
3phone_clickClick số điện thoạiphone_number, click_locationNoĐếm cuộc gọi từ websiteP0
4scroll_depthScroll 25/50/75/90%scroll_threshold, page_typeYes — page_typeĐánh giá mức độ đọc nội dungP1
5video_playBấm play videovideo_title, video_durationYes — video_titleĐo engagement với video contentP1
6file_downloadClick downloadfile_name, file_categoryYes — file_categoryBiết tài liệu nào được quan tâmP1
7chat_openMở chatbot/live chatchat_source, page_pathNoĐo nhu cầu hỗ trợ trực tiếpP2

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.