Bỏ qua để đến nội dung

STATE - Notification Reactivation

DomainsDOL EnglishProduct818 words4 min read
active

Self-study reactivation is stage-based, one-time per milestone, with recurring 3-month reminder when prolonged inactivity continues. Reminder click now provides one-time intent handoff to first recommendation set in the same session.

  • Reactivation stages:
    • lost streak
    • 1 week inactive
    • 1 month inactive
    • 1 year dormant
  • Default channels:
    • email
    • web push
    • Zalo
  • User can manage channel settings.
  • Each channel has independent unsubscribe control.
  • Email unsubscribe stops only email channel.
  • Daily cap applies to engagement nudges only.
  • Cap unit for engagement campaign remains 1/day per channel.
  • If multiple engagement triggers occur on same day, send highest return-risk first.
  • Engagement trigger overflow queues to next eligible day if trigger remains valid.
  • Multi-channel reminders are sent simultaneously.
  • Delivery failures retry with cap and backoff.
  • Retry policy: max 3 attempts at +5m, +30m, +2h.
  • Quiet-hours policy (local timezone): no sends during 22:00-07:00; if initial send or retry falls into quiet hours, queue next send at 08:00.
  • 1-year inactive message keeps simple comeback CTA (return to practice).
  • Stage templates use 3-4 randomized variants.
  • Reminder content owner/approver role: marketer.
  • Template governance: Draft -> Review -> Publish.
  • Initial V2 rollout uses approved template rotation; advanced A/B remains deferred.
  • Harmful-template safeguard: auto-disable problematic template and fallback to safe template.
  • If no marketer-approved template is available at send time, system uses default safe fallback template.
  • Admin can draft templates and optionally pin manual exercises.
  • Trend source defaults to newly published exercises in the user’s program.
  • If program mapping is missing, fallback to last practiced skill trend.
  • If last practiced skill trend is unavailable, fallback to global trending exercise bank.
  • Freshly published window default is 30 days and configurable by admin.
  • Recurring 3-month reminders continue while user remains inactive; channel unsubscribe/settings can stop channel delivery.
  • Reactivation resets immediately when user completes one new exercise.
  • If user returns via any channel reminder, pending sends/retries for the current cycle are canceled across channels.
  • If user crosses multiple inactivity milestones before first delivery, send only the highest reached stage.
  • Inactivity counters are evaluated by user local timezone day boundary.
  • Reminder-click default destination: Practice Management entry.
  • Reminder-click recommendation handoff:
    • notification payload carries reactivation_intent_stage and optional seed context (seed_program, seed_skill).
    • first recommendation set in same session applies one-time seed boost:
      • include at least one quick-win aligned item when inventory allows.
    • stage defaults:
      • lost_streak | inactive_1w -> last-active skill quick-win.
      • inactive_1m | inactive_1y | inactive_q3_repeat -> one quick-win + one trending-new in program.
    • boost expires after first attempt start or session end.
    • if seed inventory is missing, fallback to trending_14d + easy_start_bias.
  • No dedicated comeback mode.
  • If user opens reminder entry but does not start learning, do not add extra follow-up beyond base reactivation logic.
  • Show welcome-back popover on return only for users inactive >= 3 months.
  • Show welcome-back banner during 7 calendar days from first successful return; hide automatically after window ends.
  • Banner has exactly two actions: View Practice Management, Go to Exercise Bank.
  • Banner does not provide dismiss/close action for users.
  • Banner placement is flexible and chosen per page layout at a suitable, non-obstructive position.
  • AI Tutor plan reminder scope (separate from reactivation campaigns):
    • applies to daily required item in active AI Tutor 7-day plan,
    • daily required state uses local-day boundary at 00:00 in user timezone,
    • reminder uses system quiet-hours policy,
    • channels: in-app + one web push,
    • timing: one fixed daily reminder slot in user local timezone,
    • if required is completed, stop same-day reminder immediately.
    • if web push is disabled/unavailable, keep in-app reminder only,
    • daily required reminder cap: max 1 reminder/day (no same-day retry),
    • if user is not logged in at reminder slot, do not send same-day catch-up reminder later.
    • if user timezone changes, apply new reminder timezone starting next day,
    • perform required-completion precheck before reminder send and skip if already completed,
    • reminder state is account-level across devices; completion on one device stops same-day reminder for all devices.
    • if today’s required target is unavailable, auto-replace via A -> B -> C fallback and show short notice,
    • reminder click opens Practice Management and highlights today’s required item.
  • AI score-ready notification (separate from reactivation campaigns):
    • create notification-center entry always,
    • optional in-app toast/push one-shot when channel is enabled,
    • no repeated reminder loop for same score-ready event,
    • deeplink opens target task directly; AI interaction stays on-demand via contextual action.
  • DEC-0009
  • DEC-0010
  • DEC-0027
  • DEC-0028
  • DEC-0029
  • DEC-0030
  • DEC-0031
  • DEC-0052
  • DEC-0053
  • DEC-0076