DOL Edu - Onboarding Flow Documentation (Web V2)
DomainsDOL EnglishUX1.917 words10 min read
Reading Rule
Phần tiêu đề “Reading Rule”- Nếu câu hỏi là shell post-login, default entry, hoặc return/continuity sau auth, đọc
../ENG_Navigation_00_Overview.mdtrước. - Core canon của lane auth vẫn đọc từ
./REG_00_Overview.md. - File này chỉ giữ onboarding/goal nudge behavior sau khi entry route đã được quyết.
- Current truth của onboarding lane nằm trong
UX Design/Register;Discoverychỉ là supporting trail khi cần replay quyết định cũ.
Purpose
Phần tiêu đề “Purpose”- Thu thập thông tin mục tiêu đủ dùng để cá nhân hóa gợi ý học, nhưng không làm tăng friction lúc tạo tài khoản.
- Đảm bảo mục tiêu học tập là lớp tùy chọn và không trở thành điều kiện bắt buộc ở bất kỳ flow nào.
- Làm rõ khác biệt giữa lane
thi chứng chỉvà lanegiao tiếp thực tếđể user chọn mục tiêu đúng ngữ cảnh ngay từ đầu. - Giữ lane onboarding riêng cho KID: phụ huynh quản lý tạo account con, con vào học nhanh bằng code.
Core rules
Phần tiêu đề “Core rules”- First landing sau khi đăng ký thành công là Home dạng empty-state.
- Onboarding mục tiêu xuất hiện dưới dạng popup trên Home ngay sau khi đăng ký thành công.
- Trong 7 ngày đầu sau signup, Home có thể hiển thị activation card inline để gợi ý bước học đầu tiên/tiếp theo.
- Onboarding là optional: user có thể bỏ qua.
- Không dùng nhắc popup theo chu kỳ tuần cố định.
- Nhắc lại mục tiêu theo ngữ cảnh, không chặn luồng chính.
- Goal popup đi theo logic hỏi ngắn dạng “chọn hướng học trước” thay vì hiển thị cùng lúc nhiều field.
- Touchpoints nhắc mục tiêu:
- Home,
- Tiến độ,
- Profile.
- Tần suất nhắc:
- nhắc mục tiêu: tối đa 1 lần/ngày cho mỗi account,
- tổng cap goal/profile nudge: tối đa 1 lần/ngày cho mỗi account.
- Chống mỏi nudge:
- nếu user dismiss/ignore goal nudge
>=3lần trong rolling14ngày và vẫn chưa có goal:- bật
soft-snoozetrong14ngày.
- bật
- trong soft-snooze:
- không hiện popup goal,
- chỉ giữ nhắc nhẹ inline ở touchpoint hợp lệ.
- nếu user chủ động mở form goal hoặc lưu goal thì thoát soft-snooze ngay.
- nếu user dismiss/ignore goal nudge
- Nếu đồng thời thiếu cả goal và profile milestone:
- ưu tiên nhắc goal trước.
- Goal không bắt buộc trong flow trả phí; checkout chỉ bắt buộc thông tin thanh toán.
- Nếu đăng ký phát sinh từ flow cần auth (ví dụ bắt đầu làm bài), sau khi xác thực thành công user quay lại đúng context trước đó; nếu context không còn hợp lệ thì fallback theo thứ tự:
- route hợp lệ gần nhất trong cùng skill/program,
- route hợp lệ ở cấp program,
- onboarding / program choice / discovery là fallback cuối.
- Nếu user được return về protected in-progress context:
- không chèn goal popup ngay tại thời điểm return,
- ở lần vào Home đầu tiên sau đó trong cùng session, goal nudge vẫn có thể hiển thị nếu chưa vượt cap ngày.
- Activation guidance boundary:
- activation chỉ là nudge trên Home (inline card), không thêm popup onboarding mới.
- goal onboarding và activation card cùng là non-blocking; không có hard prerequisite giữa hai phần.
- Kid lane boundary:
- lane phụ huynh chỉ hiển thị trong domain KID, không hiển thị trong English/Academy,
- con vào KID bằng code thì ưu tiên vào học ngay, không chèn goal popup kiểu thi/chứng chỉ ở thời điểm vào lớp học.
- phụ huynh có thể thiết lập mục tiêu cơ bản cho con trong khu quản lý, không chặn việc vào học.
- khi user chuyển từ KID sang English/Academy và kích hoạt login độc lập, goal popup theo chương trình được bật ở lần vào Home đầu tiên của domain mới.
Screen ON.1 - Goal popup
Phần tiêu đề “Screen ON.1 - Goal popup”Purpose: ghi nhận mục tiêu học tập để cá nhân hóa Home, recommendation và theo dõi tiến bộ.
Question flow (Idea-first)
Phần tiêu đề “Question flow (Idea-first)”- Hỏi
Bạn học tiếng Anh để làm gì lúc này?Thi chứng chỉhoặcGiao tiếp thực tế.
- Nếu chọn
Thi chứng chỉ:- chọn chương trình (
IELTS,TOEIC,SAT), - chọn assessment form + skill ưu tiên,
- chọn điểm mục tiêu theo đúng thang điểm của chương trình đã chọn,
- chọn ngày thi dự kiến (hoặc chọn
Chưa chốt ngày thi).
- chọn chương trình (
- Nếu chọn
Giao tiếp thực tế:- chọn bối cảnh sử dụng chính (đời sống/công việc/du lịch…),
- chọn mức năng lực mong muốn,
- chọn mốc thời gian kỳ vọng (ví dụ 1/3/6 tháng hoặc
Chưa chốt).
- Hiển thị thẻ tóm tắt mục tiêu trước khi lưu để user rà lại lựa chọn.
Inputs
Phần tiêu đề “Inputs”- Nhánh mục tiêu:
Thi chứng chỉhoặcGiao tiếp thực tế. - Nếu nhánh
Thi chứng chỉ:- chương trình mục tiêu (
IELTS,TOEIC,SAT), - assessment form + skill mục tiêu chính,
- điểm mục tiêu theo guardrail của
program + assessment form(tham chiếu catalog scale), - ngày thi dự kiến (optional, khuyến nghị điền).
- chương trình mục tiêu (
- Nếu nhánh
Giao tiếp thực tế:- bối cảnh giao tiếp ưu tiên,
- mức năng lực mong muốn,
- mốc thời gian kỳ vọng (optional).
- Thẻ tóm tắt mục tiêu trước khi
Lưu mục tiêu. - CTA:
Lưu mục tiêuBỏ qua
Program Scale Source (V1)
Phần tiêu đề “Program Scale Source (V1)”- Goal picker phải đọc từ
REG_Goal_Scale_Catalog.md. - Baseline scale theo chương trình:
IELTS: band0.0 -> 9.0(step0.5),TOEIC: theo form/skill (10..990,5..495,0..200),SAT: total400..1600, section200..800(step10),Giao tiếp: levelA1..C2(CEFR).
Behavior
Phần tiêu đề “Behavior”Lưu mục tiêu:- lưu goal profile,
- payload goal phải lưu đủ
program + assessment form + skill + scale profile + target value, - nếu là nhánh thi và chưa có ngày thi, vẫn cho lưu (không chặn) nhưng gắn nhắc nhẹ bổ sung mốc thời gian ở touchpoint sau,
- nếu là nhánh giao tiếp và chưa có mốc thời gian, vẫn cho lưu (không chặn) và ưu tiên gợi ý hoàn thiện ở Home/Profile,
- nếu user chỉ tạo 1 goal thì goal đó mặc định là
primary, - cho phép thêm 1 goal phụ (
secondary) sau đó từ Profile/Practice Management, - mỗi lần đổi goal tạo
goal_version_idmới (append-only), - đóng popup,
- cập nhật card/nudge liên quan ở Home,
- hiển thị popover xác nhận nhanh.
Bỏ qua:- đóng popup,
- giữ trạng thái goal chưa trả lời,
- chỉ nhắc lại khi user đi qua touchpoint ngữ cảnh hợp lệ.
- Goal input rendering:
- sau khi user chọn program, UI chỉ render các target options hợp lệ theo program đó,
- sau khi user chọn assessment form, UI chỉ render skill options hợp lệ theo form đó,
- không dùng một field điểm mục tiêu chung cho mọi chương trình,
- không hiển thị trường “điểm thi” cho nhánh
Giao tiếp thực tế, - nếu target quá tham vọng so với mốc thời gian đã chọn, chỉ cảnh báo mức độ thách thức (không hard-block).
Profile completion milestones
Phần tiêu đề “Profile completion milestones”Profile completion đi theo milestone progression. Mỗi milestone hoàn thành nhận 1 badge ghi nhận.
Milestone groups
Phần tiêu đề “Milestone groups”Basic profile: tên, tuổi, ngày sinh, thành phố, social links.Academic profile: chương trình + mục tiêu theo lane (exam score hoặc communication proficiency), đều optional và cho phép partial completion.Goal profile: lớp mục tiêu cá nhân hoá (optional).Payment profile: thông tin thanh toán/thẻ trong luồng trả phí.
Nudge resolution
Phần tiêu đề “Nudge resolution”- Home giữ nudge hoàn thiện hồ sơ theo từng milestone đang thiếu.
- Goal profile là lớp khuyến khích, không phải hard gate.
- Payment milestone vẫn hiển thị cho mọi user.
- Payment milestone có trọng số trong % hoàn thiện profile.
- Nếu user cung cấp payment profile sớm trước khi trả phí, hệ thống lưu nhận như dữ liệu optional/prefill.
- Badge/milestone anti-abuse:
- mỗi milestone chỉ thưởng 1 lần/account.
- Achievement scope V2:
- chỉ track + display,
- social sharing deferred (data-ready).
Data contracts
Phần tiêu đề “Data contracts”first_post_signup_landing = home_empty_state.goal_required_policy = none.goal_status = answered | unanswered | skipped.goal_model_mode = program_assessment_form_skill_aware.goal_depth_scope = program_assessment_form_skill.goal_program_id = enum.goal_assessment_form = enum.goal_skill_id = enum.goal_form_skill_options_source = assessment_form_catalog_v1.goal_scale_catalog_id = reg_goal_scale_catalog_v1.goal_scale_catalog_version = 2026-03-04.goal_scale_profile_id = string.goal_target_value = number | string.goal_priority = primary | secondary.goal_secondary_limit = 1.goal_version_id = string.goal_versioning_policy = append_only.goal_nudge_mode = contextual_only.goal_nudge_touchpoints = home | practice_management | profile.goal_nudge_daily_cap = 1.goal_nudge_suppress_on_return_to_protected_context = true.goal_nudge_allow_on_first_home_entry_same_session_if_cap_allows = true.goal_nudge_dismiss_streak_threshold = 3.goal_nudge_dismiss_window_days = 14.goal_nudge_soft_snooze_days = 14.goal_nudge_soft_snooze_popup_policy = suppress.goal_nudge_soft_snooze_surface = inline_only.goal_nudge_soft_snooze_exit = manual_goal_open | goal_saved.profile_completion_milestone_state = basic | academic | goal | payment.profile_completion_badges_count = integer.profile_completion_nudge_priority = goal_first.profile_completion_nudge_global_daily_cap = 1.profile_completion_payment_milestone_weighted = true.activation_window_days = 7.activation_surface_mode = home_inline_card_only_non_blocking.activation_ladder_steps = first_attempt | second_attempt_within_48h | active_days_ge3_week1.kid_access_mode = parent_managed_code_entry.kid_goal_popup_policy_on_child_entry = suppress.kid_to_independent_login_policy = same_account_upgrade_no_recreate.
Analytics
Phần tiêu đề “Analytics”onboarding_goal_popup_viewed.onboarding_goal_saved.onboarding_goal_skipped.onboarding_goal_contextual_nudge_viewed.onboarding_goal_soft_snooze_entered.onboarding_goal_soft_snooze_exited.onboarding_goal_primary_set.onboarding_goal_secondary_set.onboarding_goal_version_created.profile_milestone_completed.profile_badge_awarded.
References
Phần tiêu đề “References”REG_00_Overview.md../Home & Discovery/HOME_ENG_Home_Post_Login.md(archived, DEC-0096)REG_Goal_Scale_Catalog.md
Change log
Phần tiêu đề “Change log”- 2026-03-25: Đồng bộ onboarding với auth return canon mới: context invalid không fallback thẳng về Home mà đi theo ladder context gần nhất trước, Home sau cùng.