FLYER Product · Kế hoạch sprint · 11/09/2026

Khôi phục Onboarding V3 cho sprint mới

Tài liệu dựng lại từng màn hình của phiên bản onboarding V3 — Freelance + Free trial (16/06/2025 → 30/12/2025), phiên bản có hiệu quả cao nhất trong sáu phiên bản từng chạy, để đội dev dùng làm tham chiếu khôi phục. Phân tích đầy đủ 6 phiên bản: roadmap.flyer.vn/onboarding-teacher.

▶ Bấm thử toàn bộ luồng — demo tương tác đượcKhông phải ảnh tĩnh: điền form, chọn vai trò, tick khảo sát, tạo lớp, mời học sinh — y như giáo viên thật sẽ trải qua. →
Phiên bản khôi phục
V3 — Freelance + Free trial
Chạy gốc
16/06/2025 → 30/12/2025
Quy mô mẫu
4.413 giáo viên
Trạng thái
Đề xuất — chờ dev xác nhận mã nguồn
Kết luận: V3 là phiên bản tốt nhất trong sáu phiên bản từng chạy — không chỉ ở tỷ lệ giao bài (D30 cao nhất 20,3%), mà vượt trội hẳn ở hai chỉ số nền tảng: 79% giáo viên tạo được lớp thật trong 7 ngày (so với 8–21% ở mọi phiên bản khác, kể cả bản đang chạy V6 chỉ 11,3%) và 14,4% có học sinh thật vào lớp (gấp 2,3 lần phiên bản đứng thứ hai). Đây không phải may mắn — mã nguồn cho thấy rõ cơ chế, trình bày ở mục 2.

1.Vì sao chọn V3 — so với năm phiên bản còn lại

Số liệu chốt từ bảng so sánh sáu phiên bản, nhóm mặc định (đã loại tài khoản automation/kiểm thử). Mỗi giáo viên được gán phiên bản theo ngày tạo tài khoản.

Phiên bảnThời gianGVGiao bài D7D30Tạo lớpCó học sinh
V0 — Chưa có onboarding20234.9895,7%7,7%21,3%7,6%
V1 — Ghi lộ trình click01/2024 → 03/20254.19912,4%16,4%15,3%6,3%
V2 — Khảo sát dài03/2025 → 06/20251.52616,9%19,9%9,3%3,5%
V3 — Freelance + Free trial06/2025 → 12/20254.41315,5%20,3%79,0%14,4%
V4 — Sprint 9712/2025 → 02/202675510,9%13,9%8,3%4,9%
V5 — Sprint 10002/2026 → 07/20262.15815,1%18,4%12,4%5,2%
V6 — Sprint 107 (đang chạy)07/2026 → nay1.83610,9%12,4%11,3%2,7%

Giải thích cột: D7/D30 = tỷ lệ giao bài tập thật trong 7/30 ngày đầu · Tạo lớp = tạo lớp thật trong 7 ngày (loại lớp hệ thống tự sinh) · Có học sinh = lớp đó có ít nhất 1 học sinh thật.

Đã kiểm tra theo nhóm nguồn đăng ký (tự đăng ký / B2B trường / admin tạo / automation) — V3 vẫn dẫn đầu trong từng nhóm, không phải do cơ cấu nguồn đăng ký khác nhau giữa các thời kỳ trùng hợp có lợi cho V3. Chi tiết bộ lọc theo nhóm: xem mục 1 tại trang phân tích đầy đủ.

2.Cơ chế tạo ra khác biệt — hai màn hình mấu chốt

Đây là phần quan trọng nhất để dev đọc trước khi làm: lý do V3 vượt trội không nằm ở phần khảo sát (khảo sát của V3 giống hệt V2), mà nằm ở điều xảy ra ngay sau khảo sát.

AĐẩy thẳng sang tạo lớp — không cho vào dashboard trốngKhảo sát vừa xong, WelcomeModal gọi router.replace(PATH.ONBOARDING_CREATE_CLASS) — điều hướng cứng, không phải gợi ý. Giáo viên không có lựa chọn "bỏ qua" hay "để sau". Tiêu đề màn hình: "Hành trình giảng dạy bắt đầu từ một lớp học."
Chi tiết để build lại
Điểm dễ làm sai nhất: phải dùng router.replace chứ không phải router.push. Với replace, màn khảo sát bị xoá khỏi history — giáo viên bấm nút Back của trình duyệt không quay lại được khảo sát, cũng không né được màn tạo lớp. Nếu dùng push, một phần giáo viên sẽ Back ra và rơi vào dashboard trống, đúng thứ mà V3 cố tránh.
  • Vị trí gọi: ngay trong WelcomeModal, sau khi bước khảo sát cuối (ReasonKnow) ghi nhận xong.
  • Có nút “Bỏ qua” (xem ảnh gốc) — vậy 79% tạo lớp không phải vì bị ép tuyệt đối, mà vì bước này được đặt đúng thời điểm (ngay sau khảo sát, đang có đà) khiến phần lớn giáo viên thuận theo thay vì bấm bỏ qua. Nút bỏ qua vẫn nên giữ lại khi khôi phục — không cần chặn cứng hơn bản gốc.
  • Cờ cần ghi: class_created khi lớp được tạo thành công, để đo lại đúng chỉ số "Tạo lớp" ở mục 1.
BNgay sau đó là mời học sinh vào lớpTạo lớp xong, màn tiếp theo mời học sinh luôn: chia sẻ mã lớp / đường link, hoặc gửi email hàng loạt — không tách rời hai bước bằng một trang trung gian nào. Đây là lý do 14,4% GV có học sinh thật, so với 2,7–7,6% ở các bản khác.
Chi tiết để build lại
Nguyên tắc: nối liền mạch, không chèn trang trung gian (không "Chúc mừng đã tạo lớp!" rồi đẩy về dashboard). Giáo viên vừa tạo xong lớp là đang ở đúng ngữ cảnh để nghĩ đến học sinh của lớp đó — tách ra là mất.
  • Hai cách mời song song: (1) chia sẻ mã lớp / đường link để học sinh tự vào, (2) nhập danh sách email gửi hàng loạt. Cách (1) quan trọng hơn với giáo viên Việt Nam vì phần lớn học sinh không có email riêng.
  • Cờ cần ghi: student_created — đây là chỉ số "Có học sinh" ở mục 1, cũng là nút thắt lớn nhất của toàn phễu hiện tại (V6 chỉ 2,7%).
  • Gợi ý đo thêm: tách riêng tỷ lệ dùng mã lớp vs gửi email để biết đường nào hiệu quả hơn trước khi tối ưu tiếp.

Vì sao điều này quan trọng cho sprint: nếu thời gian có hạn, đội dev có thể chỉ khôi phục riêng hai màn A–B (bắt buộc tạo lớp → mời học sinh ngay sau khảo sát hiện tại của V6) mà chưa cần quay lại toàn bộ khảo sát 4 bước dài của V3 — đây là đòn bẩy lớn nhất, chi phí dev thấp nhất.

3.Toàn bộ trình tự 7 màn hình V3

Để đội dev có đầy đủ bối cảnh khi build lại, không chỉ hai màn hình mấu chốt. Ảnh dựng lại theo đúng câu chữ và thứ tự trường đọc từ component + file ngôn ngữ tại thời kỳ V3 chạy — bố cục tương đối, câu chữ chính xác.

1Bạn là ai?Modal chặn toàn màn hình: Giáo viên / Quản lý trung tâm / Phụ huynh. Giữ nguyên như V2, kèm mồi 14 ngày dùng thử miễn phí.
Chi tiết để build lại
Component WelcomeModal/steps/ChooseRole.tsx. Modal chặn toàn màn hình, không đóng được — không có nút X hay "để sau".
  • Ba vai trò: Giáo viên · Quản lý trung tâm · Phụ huynh. Bản đang chạy V6 đã bỏ "Phụ huynh", chỉ còn hai — nếu khôi phục cần quyết định giữ hai hay ba.
  • Copy mở đầu: "Chào mừng bạn! Đầu tiên…" kèm nhắc 14 ngày dùng thử miễn phí ngay từ màn đầu tiên — mồi quyền lợi trước khi hỏi bất cứ điều gì.
2Thông tin chung + "Tôi là giáo viên tự do"Điểm khác biệt duy nhất so với V2 ở phần khảo sát: ô tick Tôi là giáo viên tự do — cho phép bỏ qua phần trường học. Key is_freelance_teacher ghi nhận 3.813 lần.
Chi tiết để build lại
Component WelcomeModal/steps/AboutYour.tsx. Đây là màn duy nhất trong khảo sát mà V3 sửa so với V2.
  • Các trường: Họ · Tên · Tên trường · Số lượng giáo viên · Số lượng học sinh.
  • Tên trường chọn từ danh sách trường có sẵn (ghi school_id); chọn "Khác" thì chỉ lưu tên tự nhập.
  • Ô tick "Tôi là giáo viên tự do" — khi bật thì bỏ yêu cầu nhập trường. 3.813/4.413 giáo viên chạm vào key này, tức phần lớn giáo viên mới là giáo viên tự do, không thuộc trường nào. Bỏ ô này đi là ép một nhóm lớn phải khai thông tin không có thật.
3Trường bạn đang công tácBa câu chọn nhiều: giáo trình, chương trình (Bộ GD / Cambridge / TOEFL / IELTS), phương pháp dạy. Giữ nguyên như V2.
Chi tiết để build lại
Component WelcomeModal/steps/YourSchool.tsx. Ba câu đều là chọn nhiều (multi-select), không phải chọn một.
  • Giáo trình đang dạy: 12 lựa chọn — ghi vào what_lesson_teaching.
  • Chương trình: Bộ GD&ĐT / Cambridge / TOEFL / IELTS — ghi vào what_curriculum_teaching.
  • Phương pháp: trực tuyến / tại lớp / cả hai — ghi vào what_teaching_method.
  • Cân nhắc khi khôi phục: đây là màn nặng nhất của khảo sát. Nếu muốn rút ngắn luồng, đây là màn nên cắt trước tiên — nó không dính tới cơ chế tạo lớp vốn là đòn bẩy chính.
4Bạn biết chúng tôi qua?8 lựa chọn + ô nhập lý do khác. Bước cuối trước khi tài khoản được tạo. Giữ nguyên như V2.
Chi tiết để build lại
Component WelcomeModal/steps/ReasonKnow.tsx. Ghi vào how_do_you_know_us (2.718 lượt trong V3).
  • Là bước cuối của khảo sát — trả lời xong, toàn bộ dữ liệu khảo sát được ghi và ngay sau đó là điều hướng cứng sang màn tạo lớp (xem mục 2).
  • 8 lựa chọn kênh + ô nhập tự do cho "khác".
  • Giá trị marketing: đây là nguồn dữ liệu attribution duy nhất khai từ chính giáo viên — nếu cắt bớt khảo sát thì cân nhắc giữ riêng câu này.
5Banner kích hoạt dùng thử"Chào mừng đến với FLYER Teacher!" + nút Dùng thử miễn phí. Hai key isViewFreeTrialActivated (1.055) và isViewFreeTrialExpired (651).
Chi tiết để build lại
Banner nằm trên dashboard, không phải một bước trong wizard — nó tồn tại xuyên suốt những phiên làm việc đầu.
  • Hai trạng thái tách riêng: isViewFreeTrialActivated (1.055 — nhìn thấy khi còn hạn dùng thử) và isViewFreeTrialExpired (651 — nhìn thấy khi đã hết hạn). Việc tách hai trạng thái cho phép đo được bao nhiêu giáo viên thực sự sống tới lúc hết hạn.
  • Nguồn chữ: nhánh welcome_modal.free_trial* trong file ngôn ngữ.
6Bắt buộc tạo lớp đầu tiênMấu chốtKhảo sát xong là bị đẩy thẳng sang đây bằng router.replace — không có đường vòng về dashboard trống.
Chi tiết để build lại
Đây là màn quyết định toàn bộ chênh lệch của V3 — 79% tạo được lớp thật, so với 11,3% của V6.
  • Code: router.replace(PATH.ONBOARDING_CREATE_CLASS) gọi từ WelcomeModal sau bước khảo sát cuối. Dùng replace (không phải push) nên nút Back của trình duyệt không đưa giáo viên thoát ra được.
  • Copy: "Hành trình giảng dạy bắt đầu từ một lớp học."
  • Có nút “Bỏ qua” ở dưới nút Tiếp tục (dạng phụ, màu xám) — không chặn cứng, nhưng đặt đúng lúc giáo viên đang có đà nên phần lớn không bấm.
  • Cờ cần ghi: class_created.
7Mời học sinh vào lớpMấu chốtNối liền ngay sau khi tạo lớp, không có trang trung gian — lý do V3 đạt 14,4% có học sinh thật.
Chi tiết để build lại
Nút thắt lớn nhất của phễu hiện tại nằm ở đây — V6 chỉ đạt 2,7% có học sinh thật.
  • Hai cách mời: chia sẻ mã lớp / đường link, hoặc nhập email gửi hàng loạt.
  • Nối liền mạch: không chèn màn "chúc mừng" hay đẩy về dashboard giữa bước tạo lớp và bước này.
  • Cờ cần ghi: student_created.

Nguồn chữ: welcome_modal.* + welcome_modal.free_trial*, commit 9640b4f0a (29/08/2025). Khảo sát 4 bước (màn 1–4) không đổi trong suốt 6 tháng V3 chạy — đã đối chiếu tại ba mốc 28/10, 26/11 và 31/12/2025.

4.Việc cần làm trong sprint

5.Rủi ro & lưu ý

Không kết luận nhân quả tuyệt đối từ bảng so sánh: sáu phiên bản chạy ở sáu thời kỳ khác nhau, chênh lệch có thể một phần do chất lượng nguồn đăng ký thay đổi theo thời gian (nhóm tự đăng ký chiếm 30% ở V3 nhưng 66% ở V6). Đã kiểm tra riêng từng nhóm nguồn — V3 vẫn dẫn đầu — nhưng A/B thật (mục 4, gạch cuối) là cách duy nhất kết luận chắc chắn 100%.