剃亮希望 User Journey Strategy
Complete user flow from Instagram discovery to viral sharing for Shave for Hope CCF campaign.
Core Idea
Create a searchable bridge between user Instagram posts and the Shave for Hope campaign. Since Instagram doesn’t allow clickable links in post captions, the strategy relies on:
- Consistent hashtags and @mentions to make the campaign findable
- CCF’s official IG (@childrenscancerfoundationhk) as the hub with “link in bio”
- Strategic upselling during AI processing wait times
- Optimized sharing flow to complete the viral loop
Why It Matters
- Discovery Problem: IG doesn’t support links in posts - users need alternative ways to find the campaign
- Conversion Opportunity: Wait times during AI processing (5-10s for photo, 1-2min for video) are prime upsell moments
- Viral Loop: Each participant can bring new participants through IG shares
- Campaign Success: March 7, 2026 Head Shaving Day depends on viral growth
Phase 1: Discovery (IG Post → Finding Campaign)
The Problem
Instagram doesn’t allow clickable links in post captions. When a user sees their friend’s transformation post, how do they find the campaign?
Caption Strategy for User Posts
我為希望剃頭!🎗️
支持兒童癌病基金 @childrenscancerfoundationhk
想試?搜尋「剃亮希望」或 IG 搵 @childrenscancerfoundationhk
#shaveforhopehk #剃亮希望 #CCF
Key Elements
- Tag official CCF IG:
@childrenscancerfoundationhk - Searchable hashtags:
#shaveforhopehk#剃亮希望 - Call-to-action: “搜尋「剃亮希望」” (Search “Shave for Hope”)
- Bilingual option for English speakers
CCF Official IG Strategy
- Bio link → Linktree (see Linktree Configuration below)
- Use “Link in bio” CTA in all campaign posts
- Create highlight story “剃亮希望” with swipe-up link
- Cross-reference user posts with reshares
- Apply for Blue Tick verification (see Client Action Items)
- Daily countdown stories to Head Shaving Day (see Client Action Items)
Linktree Configuration
Why Linktree? Single bio link supports multiple destinations - campaign, donation, event info, main CCF site.
Recommended Linktree Setup:
| Priority | Link Title | Destination | Icon |
|---|---|---|---|
| 1 | 🎗️ 剃亮希望 - AI 變身體驗 | shaveforhope.ccf.org.hk | ✨ |
| 2 | 💰 立即捐款支持 CCF | ccf.org.hk/donate | 💝 |
| 3 | 📅 Head Shaving Day 2026 | Event registration page | 📍 |
| 4 | 🏠 CCF 兒童癌病基金 | ccf.org.hk | 🏥 |
Linktree Styling:
- Use CCF brand colors (warm orange #F5A623)
- Add campaign header image
- Enable analytics tracking
CCF.org.hk Homepage Integration
Problem: The Shave for Hope project site is NOT hosted on ccf.org.hk - users who land on the main CCF site need to be directed to our project.
Recommended Solutions:
| Option | Implementation | Visibility |
|---|---|---|
| Banner (Top) | Full-width banner at top of ccf.org.hk | High - all visitors see it |
| Modal/Popup | Show once per session on homepage | Very High - but interruptive |
| Hero Section | Dedicated section in homepage hero | High - natural placement |
| Navigation Link | Add “剃亮希望” to main nav | Medium - requires user action |
Recommended: Banner + Nav Link
┌─────────────────────────────────────────────────────────┐
│ 🎗️ 剃亮希望 2026 - 立即參與 AI 虛擬剃頭! [了解更多 →] │
└─────────────────────────────────────────────────────────┘
Banner Content:
- Clear campaign name: “剃亮希望 2026”
- Value prop: “AI 虛擬剃頭體驗”
- CTA button: Links to shaveforhope.ccf.org.hk (or actual domain)
- Dismissible but persistent across pages during campaign period
Coordination Required:
- CCF web team to add banner to ccf.org.hk
- Agree on banner design matching CCF brand guidelines
- Set campaign period (Feb - March 7, 2026)
- Track click-through from banner to project site
Phase 2: Conversion (Landing → Virtual Shaver Registration)
Homepage Optimization
- Hero should immediately convey value prop
- Show community gallery (social proof from real IG posts)
- Clear CTA: “立即參與” button
During Photo Transformation (5-10s) - Interactive Upsell
Key Insight: Don’t just show passive loading - engage user with a decision point!
Opening Message (Cantonese style):
┌─────────────────────────────────────────────────────────┐
│ ✨ 幫緊你,幫緊你! │
│ │
│ 圖片製作中... │
│ ████████░░░░░░░░░░░░ 40% │
│ │
│ 你會唔會考慮成為登記用户, │
│ 享受製作剃頭短片的機會? │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ ✅ 好呀!註冊 │ │ ❌ 唔使喇 │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
│ 🎬 登記用户專享:8秒個人化變身影片 │
└─────────────────────────────────────────────────────────┘
Decision Flow During Wait
flowchart LR
A["⏳ Image generating"] --> B{"Register?"}
B --> |"好呀!"| C["📝 Inline form appears"]
B --> |"唔使喇"| D["Continue waiting"]
C --> E["Complete registration"]
E --> F["🎉 Image ready + Video unlocked!"]
D --> G["🎉 Image ready"]
G --> H["Post-result registration CTA"]
Option A: User clicks “好呀!註冊”
Show inline compact registration form (no page navigation):
┌─────────────────────────────────────────────────────────┐
│ 🎉 太好喇!快速註冊: │
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ 🔵 Continue with Google (推薦) │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ ─────────── 或者 ─────────── │
│ │
│ 顯示名稱 ┌────────────────────────────────┐ │
│ │ │ │
│ └────────────────────────────────┘ │
│ 電郵地址 ┌────────────────────────────────┐ │
│ │ │ │
│ └────────────────────────────────┘ │
│ 密碼 ┌────────────────────────────────┐ │
│ │ •••••••• │ │
│ └────────────────────────────────┘ │
│ │
│ ☑️ 我同意條款及私隱政策 │
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ 立即註冊 │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ ⏳ 圖片仍在製作中... (背景繼續處理) │
└─────────────────────────────────────────────────────────┘
Key UX Points:
- Form appears as overlay/expansion, NOT page navigation
- Image generation continues in background
- Google OAuth is prominent (1-click, fastest)
- Minimal required fields (name, email, password)
- If user completes before image ready → show “註冊成功!影片功能已解鎖 🎬”
- If image ready before registration complete → keep form open, show image preview below
Option B: User clicks “唔使喇”
Continue with simple loading, then show result:
- Hide registration prompt
- Show rotating tips/facts about CCF
- When image ready → show result with post-result CTA (existing flow)
Post-Result Registration CTA (for users who declined)
After transformation success, show smaller reminder card:
┌─────────────────────────────────────────────────────────┐
│ 🎬 想製作 8 秒變身影片? │
│ 立即註冊解鎖更多功能! │
│ │
│ [註冊 / 登入] │
└─────────────────────────────────────────────────────────┘
Technical Implementation Notes
Inline Registration Benefits:
- No page navigation = no context loss
- Background processing continues
- Higher conversion rate (user already engaged)
- Smooth transition to video generation after registration
State Management:
1. User uploads photo → Start AI transformation
2. Show decision prompt during wait
3. If "Yes" → Expand inline form, continue background processing
4. On registration success → Update auth state, enable video features
5. When image ready → Show result (with video option if registered)
Phase 3: Engagement (Video Generation Wait Time 1-2+ min)
Wait Screen Philosophy
Key Insight: The 1-2 minute wait is NOT dead time - it’s prime engagement time. Users are captive and invested (they’ve already uploaded a photo and registered).
Opening Message:
✨ 我們正在為你製作個人化影片...
預計需要 1-2 分鐘,請耐心等待
趁住等緊,不如了解更多?
Content Format: Video vs Text?
| Format | Pros | Cons | Recommendation |
|---|---|---|---|
| Short Videos (15-30s) | High engagement, emotional impact, easy to consume | Higher production cost, data usage | ✅ For CCF impact stories |
| Animated GIFs | Eye-catching, no sound needed, loops | Limited storytelling | ✅ For IG sharing tutorial |
| Text + Images | Easy to update, low cost, scannable | Lower engagement | ✅ For stats, event info |
| Interactive Cards | Engaging, clickable | More dev effort | ✅ For donation CTA |
Recommended Mix:
- CCF Impact Story → Short video (emotional, builds connection)
- Donation CTA → Interactive card with suggested amounts
- IG Tutorial → Animated GIF (visual step-by-step)
- Event Info → Text + image card
Content Timeline During Wait
| Timeframe | Content Type | Format | Purpose |
|---|---|---|---|
| 0-20s | Progress bar + “製作中…” | Animation | Set expectations |
| 20-40s | CCF impact story | 15-30s Video | Emotional connection |
| 40-60s | Donation CTA | Interactive Card | Upsell donation |
| 60-90s | IG sharing tutorial | Animated GIF | Prepare for sharing |
| 90s+ | Event info (March 7) | Text + Image | Deeper engagement |
Progress Bar UX
Show meaningful progress, not fake progress:
┌────────────────────────────────────────┐
│ ████████░░░░░░░░░░░░░░░░░░░░ 35% │
│ │
│ 🎬 正在生成你的變身影片... │
│ 預計剩餘時間:約 1 分鐘 │
└────────────────────────────────────────┘
Rotating Tips (change every 10s):
- “你知道嗎?每年香港有超過 500 名兒童確診癌症”
- “CCF 每年支援超過 1,000 個癌症家庭”
- “你的分享可以鼓勵更多人加入!”
- “3月7日剃亮希望日,中環街市見!”
IG Sharing Tutorial Content
Format: Animated GIF (loops, no sound needed)
Step-by-step visual guide:
- 📥 “點擊下載影片” (video saves to camera roll)
- 📋 “Caption 已自動複製” (shows clipboard icon)
- 📱 “打開 Instagram” (shows IG app icon)
- ➕ “點擊 + 新增 Reel” (shows IG interface)
- 🎬 “選擇剛下載的影片” (shows camera roll)
- 📝 “長按貼上 Caption” (shows paste action)
- ✅ “分享!” (shows post button)
Duration: ~8-10 seconds loop Style: Screen recording style with highlighted tap areas
Phase 4: Viral Loop (Share → New Discovery)
One-Click IG Sharing (Ideal UX)
Goal: Make sharing as frictionless as possible - ONE button click to complete the IG post.
Technical Reality: iOS/Android don’t allow apps to directly post to IG with pre-filled captions. Best we can do:
| Approach | User Steps | Friction Level |
|---|---|---|
| Option A: Share Sheet | 1 click → iOS share sheet → select IG | Medium |
| Option B: Deep Link + Clipboard | 1 click → opens IG app + caption copied | Medium |
| Option C: IG Story Sticker | 1 click → opens IG Stories with image | Low (but Story, not Feed) |
Recommended Flow:
- Single “分享到 Instagram” button that:
- Saves video/image to device camera roll
- Copies caption to clipboard
- Opens IG app via deep link (
instagram://) - Shows toast: “相片已儲存,caption已複製!”
- User only needs to: Select from camera roll → Paste caption → Post
Post-Share: Encourage IG URL Submission
After user returns from posting to IG, prompt them to submit their post URL:
🎉 已經分享到 Instagram?
請貼上你的 IG 貼文連結,讓我們加入社區牆!
[輸入 IG 貼文連結] [提交]
✨ 提交後你的貼文將顯示在我們的社區展示牆
Benefits of collecting IG post URLs:
- Populate community gallery with real user posts
- Track viral reach and engagement
- Create social proof for new visitors
- Build sense of community among participants
Technical: Save to user profile’s instagramPostUrl field (already exists in schema)
Caption Template (Auto-copied)
我成為咗虛擬剃頭人!🎗️✨
支持兒童癌病基金 @childrenscancerfoundationhk
你都想試?搜尋「剃亮希望」
一齊為癌症小朋友打氣!💪
#shaveforhopehk #剃亮希望 #CCF #兒童癌病基金
Related Concepts
- [[Viral Loop Design]]
- [[User Onboarding Optimization]]
- [[Social Media Marketing Strategy]]
- [[AI-Powered User Experience]]
- [[Nonprofit Fundraising Digital Strategy]]
Next Steps
Content to Create
- CCF impact stats/stories for wait screen content
- Animated GIF tutorial for IG posting workflow
- Donation tier suggestions (HK$100, $300, $500)
CCF IG Coordination
- Set up Linktree with campaign links (see Linktree Configuration)
- Update IG bio link to point to Linktree
- Create pinned campaign post explaining how to join
- Create story highlight “剃亮希望” with swipe-up
Client Action Items (CCF Marketing Team)
🔵 Blue Tick Verification
- Apply for Instagram verification badge for @childrenscancerfoundationhk
- Prepare verification documents (charity registration, official website, press coverage)
- Benefits: Increased credibility, prevents impersonation, higher visibility in search
- Timeline: Apply ASAP (verification can take 2-4 weeks)
- Reference: Instagram Verification Requirements
📅 Daily Countdown Stories (Feb → March 7)
- Create story template for countdown (branded with campaign colors)
- Schedule daily stories starting ~30 days before Head Shaving Day
- Each story includes:
- Countdown number (“距離剃亮希望日還有 X 天!”)
- Swipe-up/Link sticker to project site
- Different content daily (participant testimonials, CCF impact stories, event teasers)
- Use story highlights to archive countdown posts
- Example story content rotation: | Day | Content Theme | |—–|—————| | 30 | 活動預告 - 什麼是剃亮希望? | | 25 | AI 變身示範 - 你都可以試! | | 20 | CCF 故事 - 受惠家庭分享 | | 15 | 嘉賓預告 - 誰會現場剃頭? | | 10 | 籌款進度 - 我們一起達成! | | 5 | 活動詳情 - 中環街市見! | | 1 | 明天見!最後召集 |
Technical Implementation
- Update
src/lib/constants.ts- Share captions with @tag and search instructions - Enhance
src/app/transform/page.tsx- Timed content during transformation - Improve
src/components/VideoGenerator.tsx- Wait time content - Optimize
src/components/ShareButtons.tsx- IG deep link flow
Semantic Search Suggestions
To find related notes, search for:
- “viral marketing strategy”
- “Instagram engagement”
- “fundraising campaign”
- “user journey optimization”
- “conversion funnel”
| *Created: 2026-01-06 | Project: Shave for Hope CCF Campaign* |
User Levels
| Level | Name | Description | Key Actions |
|---|---|---|---|
| 1 | 👀 Friend | Sees friend’s IG post | Search hashtag, visit CCF IG |
| 2 | 🌐 Visitor | Site visitor | Create AI image, download, share |
| 3 | 👤 User | Registered user | Make videos, track stats |
| 4 | 💪 Brave the Shave | Fundraiser | Set target, create fundraising page, commit to real shave |
| 5 | 💝 Shave the Brave | Donor | Support a Brave, donate to their campaign |
User Journey Flow (Mermaid)
flowchart TB
subgraph Friend["👀 Level 1: Friend"]
A["See friend's IG post"] --> B{"How to find?"}
B --> C["Search #shaveforhopehk"]
B --> D["Click @ccf IG"]
B --> E["Visit ccf.org.hk"]
C --> F["Find CCF IG"]
D --> F
E --> E2["See banner"]
F --> F2["Click Linktree"]
F2 --> LT{"Linktree Options"}
LT --> G["🎗️ AI 變身體驗"]
LT --> DON["💰 立即捐款"]
LT --> EVT["📅 活動報名"]
E2 --> G
end
subgraph Visitor["🌐 Level 2: Visitor"]
G --> H["📸 Upload selfie"]
H --> I["⏳ AI Processing"]
I --> J{"Register?"}
J --> |"好呀!"| K["📝 Quick signup"]
J --> |"唔使喇"| L["Continue"]
K --> M["🔐 OAuth/Email"]
L --> O["🎉 Image ready"]
M --> O
O --> P["📥 Download"]
O --> Q["📤 Share to IG"]
end
subgraph User["👤 Level 3: User"]
M --> U1["✅ Registered"]
U1 --> U2["🎬 Make video"]
U2 --> U3["⏳ 1-2min wait"]
U3 --> U4["✅ Video ready"]
U4 --> U5["📤 Share video"]
U1 --> U6{"Want to fundraise?"}
end
subgraph Brave["💪 Level 4: Brave the Shave"]
U6 --> |"Yes!"| B1["Set fundraising target"]
B1 --> B2["Create personal page"]
B2 --> B3["Share fundraising link"]
B3 --> B4["Track donations"]
B4 --> B5["🎯 Commit to real shave"]
B5 --> B6["📅 March 7 Head Shaving Day"]
end
subgraph Supporter["💝 Level 5: Shave the Brave"]
DON --> S1["Browse Braves"]
B3 --> S1
S1 --> S2["Choose a Brave to support"]
S2 --> S3["💰 Make donation"]
S3 --> S4["Leave encouragement"]
S4 --> S5["📤 Share support"]
S5 -.-> |"Viral"| A
end
Q -.-> |"Viral Loop"| A
U5 -.-> |"Viral Loop"| A
style Friend fill:#e8f5e9,stroke:#4caf50
style Visitor fill:#fff3e0,stroke:#ff9800
style User fill:#e3f2fd,stroke:#2196f3
style Brave fill:#fff9c4,stroke:#fbc02d
style Supporter fill:#fce4ec,stroke:#e91e63
User Level Summary
| Level | Entry Point | Key Action | Upsell To |
|---|---|---|---|
| 👀 Friend | IG post | Search/Click → Linktree | Visitor |
| 🌐 Visitor | Project site | AI transform → Share | User |
| 👤 User | Registration | Make video → Share | Brave the Shave |
| 💪 Brave the Shave | Fundraising signup | Set target → Recruit donors | - |
| 💝 Shave the Brave | Donation page | Donate → Share support | - |
Conversion Funnel
Friend (100%) → Visitor (50%) → User (20%) → Brave (5%)
↓
Shave the Brave (donors)