STATE - Notification Reactivation
DomainsDOL EnglishProduct818 words4 min read
Current truth
Phần tiêu đề “Current truth”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.
Rules
Phần tiêu đề “Rules”- Reactivation stages:
- lost streak
- 1 week inactive
- 1 month inactive
- 1 year dormant
- Default channels:
- 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_stageand 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.
- notification payload carries
- 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.
Decision trace
Phần tiêu đề “Decision trace”- DEC-0009
- DEC-0010
- DEC-0027
- DEC-0028
- DEC-0029
- DEC-0030
- DEC-0031
- DEC-0052
- DEC-0053
- DEC-0076