Firebase Grow for dummies 2

Bài này do Hưng viết trên blog https://dumbcoder.org/firebase-grow-for-dummies-2/ mình thấy hay nên sưu tầm

Firebase

II. Event, User Property và Audience: 3 chân của Firebase Analytics

Ở phần một mình đã giới thiệu tổng quan cho các bạn về Firebase Analytics (FA) và các chỉ số cơ bản cần quan tâm. Hôm nay ta sẽ tiếp tục đi sâu hơn vào FA với 3 khái niệm (không phải là chỉ số nhé!) quan trọng là event, user property và audience.

1. Event

Như đã nói, FA hoạt động dựa trên cơ chế event (sự kiện). Mọi tương tác của user với ứng dụng sẽ kích hoạt ra các event (cùng các tham số paramater đi kèm), event được lưu lại trên database của Firebase và toàn bộ các thông số trên Firebase Dashboard được tính toán dựa vào dữ liệu của event.

Ngay khi bạn tích hợp FA SDK (bộ công cụ FA), cho dù bạn chưa chủ động thực hiện theo dõi (tracking) các sự kiện, FA vẫn hiện lên các thông số về DAU, retention… Đó là bởi vì mặc định, FA đã tự thống kê cho bạn một bộ event, trong đó có các event quan trọng sau:

  • first_open: kích hoạt khi người dùng mở ứng dụng lần đầu tiên sau khi cài đặt (tính cả trường hợp xóa ứng dụng đi cài lại). Event này sẽ được sử dụng làm cơ sở tính toán Retention. Nó cho bạn biết ngày đầu tiên user dùng ứng dụng – cơ sở của D0 khi tính retention. Một chú ý nhỏ là FA đếm user từ toàn bộ các nguồn (kể cả tự cài apk), do đó con số này sẽ cao hơn tương đối với số lượng cài đặt hàng ngày (daily install) trên Store Dashboard (AppStore, PlayStore)
  • session_start: kích hoạt khi người dùng “tương tác” (engages) với ứng dụng nhiều hơn 10 giây (giá trị mặc định, có thể thay đổi). Session (phiên sử dụng) được kết thúc khi ứng dụng không được tương tác (inactive) quá 30 phút (giá trị mặc định, có thể thay đổi). Dựa vào event này, FA sẽ tính toán ra lượng session mỗi users tạo ra hàng ngày.
  • user_engagement: Kích hoạt khi 1 session kết thúc (vd: ứng dụng bị inactive quá 30 phút) để lưu lại thời gian chơi trong session đó của người dùng. Nôm na thì có thể hiểu event này có thể coi gần giống như event session_end (Nhưng FA ko dùng tên này!)
  • screen_view: kích hoạt khi người dùng chuyển đổi giữa các màn hình (screen) trong ứng dụng. Bạn có thể tự định nghĩa và đặt tên các màn hình theo ý mình, từ đó dựa vào event này để hiểu được user dành bao nhiêu thời gian cho từng màn hình một.
  • app_remove: event đặc biệt và có thể nói là hiện tại chỉ mình FA có. Do FA có thể kết nối và chia sẻ một phần dữ liệu với Google Play Service, nên riêng các device Android sẽ kích hoạt được event này khi người dùng xóa ứng dụng. Cá nhân mình thấy đây là một event rất mạnh. Ta có thể sử dụng nó để hiểu được trạng thái của người dùng như nào khi xóa ứng dụng, từ đó đưa ra đánh giá chung về việc “tại sao/khi nào người dùng xóa ứng dụng” để cải thiện nó. Phần này đòi hỏi sử dụng một số tính năng nâng cao (ex: BigQuery) nên mình sẽ đi sâu vào sau.

Ngoài các event mặc định của Firebase, bạn có thể tạo thêm tối đa 500 loại event tùy chọn cho ứng dụng của bạn, cũng như gắn thêm các tham số vào các event đó. FA cũng có một số gợi ý cho các bộ event tùy thuộc vào thể loại ứng dụng của bạn tại đây


Một số custom events đi kèm với paramaters trên FA demo project

Khi đã tạo event cùng với paramater, các bạn có lựa chọn để có thể chia nhỏ (break down) event đó, xem số lượng event xảy ra theo paramater (giới hạn tổng 10 paramater cho toàn bộ Firebase dashboard). Ví dụ như hình trên, ta có thể xem số lượng event level_start phân bổ ra sao theo từng mức level (biến level_name):


Level 27 được chơi nhiều nhất (2953 lượt) nhưng số lượng user khá ít (335). Có lẽ level này khó quá chăng???

Nhìn chung, các event mặc định được tạo ra để FA có thể đo đếm được các thông số cơ bản. Bên cạnh đó, bạn nên chủ động tracking thêm các event tùy theo thể loại ứng dụng để có thể hiểu rõ hơn users của bạn “đã thực hiện hành động gì” trong ứng dụng.

2. User Property:

Nếu như event dùng để tracking xem người dùng “đã làm gì” trong ứng dụng, thì User Property được dùng để định nghĩa (hoặc xác định) xem người dùng của bạn là ai! Bằng cách tạo ra các thuộc tính (property) cho người dùng và gán giá trị cho nó, bạn có thể hiểu kỹ hơn về bản thân người dùng đó: họ là ai, họ đến từ đâu, trạng thái hiện tại của họ trong ứng dụng là như nào.

Một lần nữa, FA cung cấp 1 bộ các User Property mặc định để “xác định” user của bạn là ai: giới tính, quốc gia, tuổi tác, thiết bị, v.v.v

Quan trọng hơn, bạn có thể tự tạo tối đa 25 loại property gắn với user của bạn, để tự định nghĩa, tự xác định xem người dùng của bạn đang ở trạng thái nào. Đó có thể là các property như level hiện tại, lượng tiền hiện có, số item người dùng có, số trận chơi v.v.v. 25 là một con số khá giới hạn, nên bạn cần cân nhắc kỹ trước khi tạo user property do FA không hỗ trợ việc xóa hoặc sửa user property (sad but true)

Mỗi khi người dùng kích hoạt một event, toàn bộ các user_property của họ sẽ được gửi kèm lên cùng event đó. Điều này giúp bạn trả lời được câu hỏi “user của tôi đang ở trạng thái abc khi họ làm điều xyz”. Ví dụ như khi vượt qua level5, user của tôi đang có bao nhiêu vàng? Khi mua item đầu tiên, user của tôi đã mở khóa (unlock) được bao nhiêu item free trước đó? Đặc biệt là khi xóa game, user của tôi đã chơi được bao nhiêu level, kiếm được bao nhiêu vàng, mở khóa được bao nhiêu item?(chú ý: để lấy được dữ liệu User Property đi theo event, bạn cần sử dụng BigQuery. Theo dõi các bài viết của mình để cập nhật nhé ^^ )

3. Audience:

Audience là chức năng của FA cho phép bạn có thể phân chia, nhóm người dùng của bạn thành các nhóm (audience) có chung một số thuộc tính nào đó, từ đó bạn có thể “phân biệt đối xử” với họ: kiểm tra các thông số cho riêng 1 tập audience; gửi notification, trả về các giá trị RemoteConfig tùy chỉnh cho từng tập; hay thậm chí là chạy các chiến dịch quảng cáo để tìm kiếm các user có tương đồng với tập audience có sẵn.

Bạn định nghĩa Audience bằng các điều kiện (condition) cho các event mà user đó đã thực hiện, hoặc bằng các user property thể hiện trạng thái của user đó. Ngắn gọn, Audience thể hiện qua các điều kiện:

  • User của bạn đã làm gì, bao nhiêu lần (event)
  • User của bạn đang ở trạng thái như nào (user property)

Lưu ý, Audience hoạt động theo kiểu phễu. Sau khi bạn tạo một tập Audience, nó sẽ không có dữ liệu ngay lập tức, FA sẽ không quét toàn bộ user của bạn để cập nhật. Mỗi khi user kích hoạt một event, user đó sẽ được kiểm tra bởi bộ condition (điều kiện) của Audience. Nếu thỏa mãn điều kiện “include”, user sẽ chui vào tập Audience. Nếu ‘bị’ dính điều kiện ‘exclude’, user sẽ bị xóa khỏi tập Audience. Do đó tập Audience của bạn sẽ được làm đầy dần dần lên theo thời gian.

Một số cách sử dụng để tạo tập Audience:

  • Chia theo quốc gia của user: dùng property country để lọc theo US, UK, JP, ID, v.v.v -> tìm ra top market của bạn
  • User đã sử dụng một tính năng đặc biệt nào đó trong ứng dụng: sử dụng các events như: ‘buy_gun’, ‘build_coffee_shop’, ‘use_booster’
  • User đã vượt một mốc ‘checkpoint’ trong ứng dụng: sử dụng các events như: ‘finish_tutorial’, ‘finish_level_5’
  • User trình độ cao, top user, có khả năng tương tác nhiều hơn trong ứng dụng: sử dụng user property như ‘highest_score’, ‘current_level’, ‘rank’

Cách tạo một Audience: hiện Firebase hỗ trợ lọc condition theo khá nhiều yếu tố. 2 phần quan trọng nhất theo mình vẫn là event và user property. Nhưng ngoài ra, bạn còn có thể lọc theo ứng dụng (1 project có nhiều ứng dụng được), nguồn của user (rất hữu ích nếu bạn chạy chiến dịch quảng cáo đặc biệt là trên Google Ads – Adword):

Các condition hỗ trợ để lọc Audience

Ta cùng thử khởi tạo một tập Audience. Giả sử bạn muốn định nghĩa top user là những user có lượng ‘hint’ lớn hơn 500 nhưng nhỏ hơn 1000, đã từng hoàn thành tutorial của chế độ classic, đã vượt qua level 5 của chế độ puzzle, trong 7 ngày bất kỳ (không phải gần nhất) có “tương tác” với quest nhiều hơn 5 lần. Vậy các điều kiện sàng lọc user của tôi như sau:

  • trong ví dụ này mình muốn target user Android nên sẽ lọc platform theo Android
  • sử dụng event finish_tutorial_classic với điều kiện là được kích hoạt hơn 0 lần (hâm hâm chút là với số lần xảy ra thì FA chỉ cho dùng điều kiện lớn hơn)
  • sử dụng event quest_engagement với điều kiện là xảy ra nhiều hơn 5 lần trong 1 khung 7 ngày bất kỳ (chứ không phải 7 ngày gần nhất)
  • sử dụng event finish_level_puzzle với điều kiện là thông số (paramater) level đi kèm trong event lớn hơn 5. Một cách khác có thể sử dụng ở đây là sử dụng user property current_puzzle_level lớn hơn 5.
  • sử dụng user property hint với điều kiện lớn hơn 500
  • đồng thời tạo một nhóm exclude và thêm điều kiện user property hint lớn hơn hoặc bằng 1000 do yêu cầu chỉ nhận user với hint lớn hơn 500 và nhỏ hơn 1000.
🙁

Thử lọc Firebase dashboard theo một tập Audience (ví dụ user đã mua IAP, ta sẽ thấy hầu hết các chỉ số (rất tiếc chưa có retention  ) sẽ được cập nhật theo:

Firebase demo project dasboard khi không có filter
Firebase demo project dashboard khi filter theo Purchases (user đã mua IAP)
Doanh thu theo từng user cao hơn, thời gian chơi cao hơn (14 so với 12)
Giá mà tất cả user đều mua

Sử dụng Audience, hãy thử chia user của bạn thành các tập nhỏ dựa trên các điều kiện mình đã gợi ý ở trên, hoặc dựa trên chính ứng dụng cụ thể của bạn, user nào bạn nghĩ sẽ tương tác nhiều với ứng dụng, sẽ mang lại giá trị cao. Từ đó, hãy tìm ra tập Audience có giá trị nhất với bạn để có thể có cách “phân biệt đối xử” phù hợp: tập trung cho các chiến dịch quảng cáo, hoặc tùy chỉnh ứng dụng để khai thác tốt hơn (qua notification, remote config)

Kết

3 bộ phận quan trọng của Firebase Analytics là Event, User Property và Audience.

FA hoạt động dựa trên cơ chế event, khi mọi hành vi của user đều có thể kích hoạt các event đi kèm với bộ tham số của chúng. FA sẽ dựa vào dữ liệu của event này để tính toán ra các thông số thống kê trên dashboard của mình

User property là các thông số gắn kèm với từng user, định nghĩa user là ai, trạng thái hiện tại như thế nào. Việc khai thác user property đi kèm với event cho bạn cái nhìn toàn diện hơn về việc “user của bạn đang ở trạng thái abc khi thực hiện hành vi xyz”

Audience là tính năng cho phép bạn tách các user tương đồng với nhau thành một nhóm dựa trên việc họ đã thực hiện hành vi gì (event) hoặc họ có trạng thái như thế nào (user property) hoặc họ đến từ nguồn nào (source cho ad campaign). Từ đó, giúp bạn tìm ra được tập Audience có giá trị nhất để có thể tập trung đầu tư cũng như khai thác tốt hơn tập user này.

(Hết phần 2. Dài quá nhưng vẫn còn tiếp)

Published by

Kevin Pham

Mình có hơn 11 năm kinh nghiệm về làm mobile game. Mình may mắn được trải nghiệm qua các ngành mobile game, social casino, publishing, ecommerce, dropship và đặc biệt là global advertising cho casual và hyper casual game. Mình là gamer chính hiệu và chơi rất nhiều thể loại như hearthstone, diablo, fallout 4, fallout mobile, và khá nhiều hyper casual games.