Event Tracking trong ứng dụng di động: khái niệm, loại sự kiện và cách thiết lập

Tác giả: IT Sectr Đã đăng: 2026-04-21 Thời gian đọc: 11 phút

Event Tracking là việc thu thập và phân tích các sự kiện về hành động của người dùng trong ứng dụng di động, từ nhấn nút đến thực hiện mua hàng. Event tracking chất lượng cao là nền tảng của phân tích sản phẩm, thử nghiệm A/B và cá nhân hóa. Theo Amplitude (2024), các nhóm có Event Tracking hệ thống đưa ra quyết định sản phẩm nhanh hơn 3 lần nhờ cách tiếp cận dựa trên dữ liệu. Không có sự kiện, phân tích ứng dụng bị mù.

Chính yếu

  • Event Tracking — thu thập dữ liệu về hành động người dùng, mỗi hành động được mô tả bằng tên sự kiện và tham số.
  • Loại sự kiện — tự động (SDK), tùy chỉnh (nhà phát triển) và sự kiện doanh thu.
  • Đặt tên sự kiện — tuân theo chuẩn Object + Action (ví dụ: product_added_to_cart).
  • Tham số sự kiện — chứa ngữ cảnh: giá, danh mục sản phẩm, nguồn chuyển đến.
  • Nền tảng Event Tracking: Firebase Analytics, Amplitude, Mixpanel, Segment.

Event Tracking là gì?

Event Tracking là quá trình thu thập, lưu trữ và phân tích các hành động riêng lẻ của người dùng trong ứng dụng. Mỗi sự kiện bao gồm tên (event_name) và một tập hợp các tham số (event_params). Ví dụ, sự kiện purchase có các tham số price, currency, product_id, quantity.

Khác với Screen View chỉ ghi nhận việc mở màn hình, Event Tracking mô tả chính xác người dùng đang làm gì trên màn hình đó: đã nhấn nút "Mua", đã mở giỏ hàng, đã áp dụng mã khuyến mãi. Không có sự kiện, không thể hiểu được động cơ và bối cảnh hành động của người dùng.

Cấu trúc sự kiện

Mỗi Analytics Event bao gồm các trường bắt buộc và tùy chọn. Bắt buộc: event_name, event_timestamp, user_id (hoặc device_id). Tùy chọn: tham số, mô tả ngữ cảnh.

TrườngBắt buộcVí dụ
event_name"purchase_completed"
event_timestamp1719876543000
user_id"user_abc123"
session_idKhông"session_456def"
revenueKhông9.99
currencyKhông"USD"

Tham số revenue đặc biệt quan trọng — nó được truyền đến các nền tảng MMP để tự động tính ROAS và LTV.

Loại sự kiện trong phân tích di động

Sự kiện được phân loại theo nguồn gốc và mục đích. Sự phân chia này giúp tổ chức cấu trúc dữ liệu và thiết lập quyền truy cập cho các nhóm khác nhau.

Sự kiện tự động (SDK)

SDK của các nền tảng phân tích tự động thu thập các sự kiện cơ bản: app_install, app_remove, session_start, screen_view. Firebase Analytics tạo ra khoảng 20 sự kiện tự động mà không cần một dòng mã nào. Các sự kiện này bao phủ các chỉ số cơ bản nhưng không cung cấp hiểu biết về logic kinh doanh.

Sự kiện tùy chỉnh (Custom Events)

Sự kiện tùy chỉnh là thứ làm cho Event Tracking trở nên giá trị. Chúng mô tả các hành động kinh doanh: add_to_cart, start_subscription, level_complete, share_content, search_performed. Sự kiện tùy chỉnh yêu cầu gửi rõ ràng từ mã ứng dụng.

kotlin
// Gửi sự kiện tùy chỉnh đến Firebase
val bundle = Bundle().apply {
    putString(AnalyticsParam.ITEM_ID, "prod_789")
    putString(AnalyticsParam.ITEM_NAME, "Premium Subscription")
    putString(AnalyticsParam.CURRENCY, "USD")
    putDouble(AnalyticsParam.PRICE, 29.99)
    putString(AnalyticsParam.SOURCE, "onboarding_screen")
}
FirebaseAnalytics.getInstance(this)
    .logEvent("subscribe_premium", bundle)

Trong ví dụ, sự kiện subscribe_premium chứa bốn tham số ngữ cảnh. Tham số source cho biết người dùng đã đăng ký từ màn hình nào — onboarding, cài đặt hay paywall.

User Properties và Super Properties

Ngoài sự kiện, Event Tracking bao gồm User Properties — các thuộc tính gắn với người dùng: cấp độ đăng ký, quốc gia, phiên bản ứng dụng. User Property được gửi một lần và áp dụng cho tất cả sự kiện tiếp theo của phiên. Điều này cho phép phân khúc phân tích mà không cần thêm tham số vào mỗi sự kiện.

Super Properties (Amplitude) hay Global Properties (Mixpanel) là các thuộc tính gắn với phiên, không phải người dùng. Được sử dụng cho thử nghiệm A/B: variant_id được thêm làm Super Property vào tất cả sự kiện trong phiên, giúp nhà phân tích biết người dùng thuộc nhóm nào.

Sự kiện doanh thu

Sự kiện doanh thu là một lớp riêng để ghi lại các giao dịch. Chúng bao gồm số tiền, loại tiền tệ và loại mua hàng (đăng ký, mua một lần, khôi phục). Các nền tảng MMP (AppsFlyer, Adjust) yêu cầu sự kiện doanh thu để tính ROAS.

Theo Branch (2024), các ứng dụng truyền sự kiện doanh thu chính xác đến MMP nhận được dữ liệu phân bổ chính xác hơn 25% và có thể tối ưu hóa chiến dịch dựa trên LTV thay vì CPI.

Cách thiết lập Event Tracking?

Thiết lập Event Tracking trải qua ba giai đoạn: lập kế hoạch lược đồ sự kiện, tích hợp SDK, xác thực dữ liệu.

Giai đoạn 1: Thiết kế lược đồ sự kiện

Tạo Event Taxonomy — tài liệu mô tả mỗi sự kiện: tên, tham số, trình kích hoạt gửi, chủ sở hữu. Ví dụ cho thương mại điện tử: order_completed → tham số: order_id, total_price, items_count, payment_method, shipping_city.

  • Mỗi sự kiện trả lời câu hỏi: người dùng đã làm gì?
  • Mỗi tham số trả lời câu hỏi: trong ngữ cảnh nào?
  • Tránh sự kiện không có tham số — chúng vô dụng cho phân tích

Giai đoạn 2: Tích hợp SDK

Kết nối Analytics SDK vào dự án. Firebase Analytics, Amplitude, Mixpanel — mọi SDK đều yêu cầu khởi tạo trong Application.onCreate(). Ví dụ cho Flutter:

dart
import 'package:firebase_analytics/firebase_analytics.dart';

class AnalyticsService {
  final _analytics = FirebaseAnalytics.instance();

  Future<void> logPurchase({
    required String productId,
    required double price,
    required String currency,
  }) async {
    await _analytics.logEvent(
      name: 'purchase_completed',
      parameters: {
        'product_id': productId,
        'price': price,
        'currency': currency,
        'timestamp': DateTime.now().millisecondsSinceEpoch,
      },
    );
  }
}

Lớp AnalyticsService tập trung hóa việc gửi tất cả sự kiện. Mỗi phương thức tương ứng với một hành động kinh doanh. Điều này đơn giản hóa việc tìm kiếm — nếu sự kiện không đến, bạn tìm theo tên phương thức trong mã. Khi dự án mở rộng, số lượng phương thức có thể lên đến 50–100, nhưng cấu trúc vẫn dễ đọc nhờ phân nhóm theo tính năng.

Giai đoạn 3: Xác thực qua DebugView

Firebase DebugView cho phép xem sự kiện theo thời gian thực trên thiết bị nhà phát triển. Kích hoạt chế độ: adb shell setprop debug.firebase.analytics.app your.package. Tất cả sự kiện xuất hiện trong bảng điều khiển Firebase với độ trễ dưới 5 giây.

Sau khi kích hoạt DebugView, mở ứng dụng và thực hiện kịch bản kiểm tra — đăng ký, mua hàng, duyệt danh mục. Kiểm tra trong bảng điều khiển: tất cả sự kiện đã được gửi chưa, tham số đúng chưa, có trùng lặp không. Amplitude cung cấp công cụ tương tự — Amplitude Debugger cho iOS và Android.

Xác thực tự động qua CI/CD là cấp độ chất lượng tiếp theo. Thêm script vào pipeline để kiểm tra mỗi sự kiện trong lược đồ đã được gửi ít nhất một lần trong quá trình chạy thử nghiệm. Điều này ngăn chặn việc phát hành phiên bản thiếu sự kiện và tiết kiệm thời gian cho kỹ sư QA.

Thực hành tốt nhất về đặt tên sự kiện

Đặt tên sự kiện là khía cạnh bị đánh giá thấp nhất của Event Tracking. Tên sai làm cho phân tích trở nên vô ích khi dự án có hơn 50 sự kiện.

Chuẩn Object + Action

Sử dụng mẫu object_action (chữ thường, snake_case): product_added, cart_opened, payment_failed, subscription_cancelled. Đối tượng là thực thể, hành động là động từ ở quá khứ. Có thể đọc như một câu: "sản phẩm đã được thêm", "giỏ hàng đã mở".

  • product_viewed, không phải "tap_on_product_card" (sự kiện là kết quả, không phải hành động)
  • order_completed, không phải "successful_payment_transaction" (ngắn gọn và rõ ràng)
  • level_started, không phải "begin_level_with_parameters" (không có từ thừa)

Mẫu bị cấm

KHÔNG sử dụng khoảng trắng ("Add to Cart"), CamelCase ("AddToCart"), dấu chấm ("add.to.cart"), dấu gạch ngang ("add-to-cart"). Hầu hết SDK khuyến nghị snake_case. KHÔNG sử dụng tên phần tử UI ("btn_submit_clicked") — sự kiện nên mang tính kinh doanh, không phải kỹ thuật.

Thêm tiền tố là tên tính năng hoặc màn hình: onboarding_step_completed, checkout_payment_selected. Điều này cho phép lọc sự kiện theo chức năng trong báo cáo.

Loại tham số sự kiện

Tham số được chia thành ba loại: string (giá trị), number (số để tổng hợp), boolean (cờ). Tham số string chứa dữ liệu phân loại: quốc gia, nguồn lưu lượng, tên sản phẩm. Tham số number dùng làm chỉ số: giá, số lượng, thời lượng. Tham số boolean đánh dấu trạng thái: is_trial, is_promo_applied.

Tránh truyền đối tượng hoặc mảng trong một tham số — các nền tảng phân tích không thể phân tích chúng. Thay vì một chuỗi JSON trong một trường, hãy truyền nhiều tham số phẳng. Ví dụ, thay vì items_count_total, hãy truyền items_count và total_price riêng biệt.

Nền tảng Event Tracking

Lựa chọn nền tảng Event Tracking phụ thuộc vào quy mô dự án và đội ngũ. Xem xét ba tùy chọn ở các cấp độ khác nhau.

Firebase Analytics (miễn phí, tối đa 500 sự kiện)

Firebase là lựa chọn tiêu chuẩn cho startup. Giới hạn miễn phí là 500 event_name khác nhau, số lượng tham số không giới hạn. Tích hợp với BigQuery cho phân tích tùy chỉnh. Nhược điểm: phân khúc hạn chế, không có liên kết tự động sự kiện trong phiên.

Amplitude (Pro từ $1.000/tháng)

Amplitude là nền tảng phân tích sản phẩm. Hỗ trợ Behavioural Cohorts, Funnel Analysis, Pathfinder. Cho phép tạo sự kiện ảo từ kết hợp sự kiện thực. Tích hợp với hơn 50 công cụ qua Segment.

Segment (từ $120/tháng)

Segment là middleware quản lý sự kiện. Bạn gửi sự kiện đến Segment, Segment phân phối chúng đến hơn 300 công cụ. Hữu ích trong môi trường enterprise nơi Firebase, Amplitude, Mixpanel, Braze và Salesforce được sử dụng đồng thời.

PostHog (giải pháp thay thế mã nguồn mở)

PostHog là nền tảng phân tích sản phẩm mã nguồn mở với Event Tracking riêng. Hỗ trợ tự động thu thập sự kiện, ghi lại phiên và feature flags. Triển khai trên máy chủ riêng, điều quan trọng cho các dự án GDPR hoặc dữ liệu nhạy cảm. Cung cấp API tương thích Python cho pipeline ETL.

Đối với dự án Flutter, khuyến nghị flutterfire_analytics + Amplitude qua plugin amplitude_flutter. Cho React Native — react-native-firebase + mixpanel-react-native.

Câu hỏi thường gặp

Cần theo dõi bao nhiêu sự kiện trong một ứng dụng?

Phạm vi tối ưu là 50–150 sự kiện cho mỗi ứng dụng. Dưới 50 — không đủ dữ liệu để phân tích, hơn 150 — chất lượng giảm (nhà phân tích không thể theo dõi hết). Cho MVP, 20–30 sự kiện chính là đủ.

Có thể gửi sự kiện bao lâu một lần mà không ảnh hưởng hiệu suất?

SDK di động trung bình đệm sự kiện và gửi theo lô mỗi 5–30 giây. Giới hạn an toàn là 100 sự kiện mỗi phút trên mỗi thiết bị. Nhiều hơn — rủi ro mất dữ liệu khi kết nối kém. Các đột biến (ví dụ: tải cấp độ) không nghiêm trọng.

Có nên gửi sự kiện khi ở chế độ ngoại tuyến?

Có, SDK hiện đại lưu sự kiện trong bộ nhớ cục bộ khi không có mạng. Khi kết nối được phục hồi, chúng được gửi với dấu thời gian chính xác. Firebase lưu trữ sự kiện ngoại tuyến đến 7 ngày, Amplitude — đến 30 ngày.

Làm thế nào để đổi tên sự kiện trong ứng dụng đã phát hành?

Sự kiện mới được tạo với event_name mới, sự kiện cũ giữ lại cho dữ liệu lịch sử. Tạo ánh xạ trong tầng BI (CASE SQL hoặc bảng điều khiển) để kết hợp dữ liệu. Không bao giờ thay đổi tên sự kiện hiện có — sẽ phá hỏng lịch sử.

Có thể sử dụng Event Tracking cho cá nhân hóa?

Có, Event Tracking là nền tảng của cá nhân hóa. Sự kiện được lọc theo thời gian thực: nếu người dùng gửi product_viewed 3 lần mà không mua, hiển thị cửa sổ bật lên giảm giá. Amplitude và Braze hỗ trợ trình kích hoạt dựa trên sự kiện.

Tổng kết

  • Event Tracking — thu thập hành động riêng lẻ của người dùng với ngữ cảnh (tham số, dấu thời gian, user_id).
  • Loại sự kiện: tự động (SDK), tùy chỉnh (logic kinh doanh), doanh thu (giao dịch).
  • Đặt tên — snake_case theo chuẩn Object + Action.
  • Thiết lập — ba giai đoạn: lược đồ sự kiện, SDK, xác thực DebugView.
  • Nền tảng: Firebase (miễn phí), Amplitude (Pro), Segment (enterprise).
  • Tối ưu — 50–150 sự kiện mỗi ứng dụng.
  • Sự kiện ngoại tuyến — SDK đệm và gửi khi kết nối được phục hồi.

Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay

IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.

Thảo luận dự án

Đọc thêm