Track your user onboarding flow to identify drop-off points and optimize for faster activation.
Onboarding Analytics Overview
Why Track Onboarding?
| Metric | Impact |
|---|---|
| Faster activation | 2x higher retention |
| Complete onboarding | 3x conversion rate |
| Day 1 value | 40% more engaged |
Key Onboarding Metrics
| Metric | Formula | Benchmark |
|---|---|---|
| Completion Rate | Completed ÷ Started | 40-60% |
| Time to Complete | Avg minutes | <10 min |
| Drop-off Rate | Abandoned ÷ Started | <40% |
| Reactivation Rate | Returned ÷ Dropped | 10-20% |
Designing Trackable Onboarding
Define Onboarding Steps
Typical SaaS onboarding:
| Step | Action | Purpose |
|---|---|---|
| 1 | Account Created | Entry |
| 2 | Profile Completed | Personalization |
| 3 | Core Feature Used | Value preview |
| 4 | First Success | Aha moment |
| 5 | Second Session | Habit forming |
Track Each Step
// Step tracking function
function trackOnboardingStep(stepNumber, stepName, metadata = {}) {
zenovay('track','onboarding_step', {
step: stepNumber,
step_name: stepName,
time_on_step: calculateTimeOnStep(),
total_time: calculateTotalOnboardingTime(),
...metadata
});
}
// Usage
trackOnboardingStep(1, 'account_created', { method: 'email' });
trackOnboardingStep(2, 'profile_completed', { fields: ['name', 'company', 'role'] });
trackOnboardingStep(3, 'first_project', { template_used: 'marketing' });
trackOnboardingStep(4, 'first_success', { action: 'report_generated' });
Track Completion
// Onboarding completed
zenovay('track','onboarding_completed', {
total_steps: 5,
total_time_minutes: 8,
skipped_steps: [],
method: 'guided'
});
// Onboarding skipped
zenovay('track','onboarding_skipped', {
completed_steps: 2,
skipped_at_step: 3,
reason: 'skip_button_clicked'
});
Creating Onboarding Funnels
Main Onboarding Funnel
- Go to Goals → Funnels
- Create "User Onboarding"
- Add your steps:
Step 1: signup_completed
Step 2: profile_completed
Step 3: first_feature_used
Step 4: aha_moment
Step 5: second_session
View Drop-off Analysis
| Step | Users | Conversion | Drop-off |
|---|---|---|---|
| Signup | 1,000 | - | - |
| Profile | 680 | 68% | 32% |
| First Use | 510 | 75% | 25% |
| Aha Moment | 340 | 67% | 33% |
| Return Visit | 255 | 75% | 25% |
Focus: Profile completion has highest drop-off.
Tracking Onboarding Variations
Guided vs Self-Serve
// Track onboarding type
zenovay('track','onboarding_started', {
type: 'guided', // or 'self-serve', 'demo', 'wizard'
source: 'signup_flow'
});
A/B Test Onboarding
// Track variant
zenovay('track','onboarding_variant', {
experiment: 'onboarding_v2',
variant: 'simplified',
user_id: 'user_123'
});
Compare variants:
- Completion rate
- Time to complete
- Downstream retention
Onboarding Segments
By User Role
| Role | Completion | Time | Focus |
|---|---|---|---|
| Admin | 72% | 12 min | Settings |
| User | 58% | 8 min | Features |
| Viewer | 45% | 3 min | Navigation |
By Company Size
| Size | Completion | Needs |
|---|---|---|
| 1-10 | 65% | Speed |
| 11-50 | 58% | Team features |
| 51-200 | 48% | Customization |
| 200+ | 42% | Enterprise |
By Traffic Source
| Source | Completion | Notes |
|---|---|---|
| Organic | 62% | High intent |
| Paid Ads | 45% | Lower quality |
| Referral | 68% | Pre-educated |
| Content | 55% | Curious |
Session Replay for Onboarding
Find Problem Areas
- Go to Sessions
- Filter: "onboarding_step" contains step 3
- Filter: Missing "onboarding_completed"
- Watch where users struggle
Common Findings
UI confusion:
- Users click non-clickable elements
- Miss important buttons
- Don't scroll to CTA
Form friction:
- Hesitate on fields
- Error corrections
- Abandoned forms
Value unclear:
- Leave before core feature
- Don't understand next step
- Exit at pricing mention
Optimizing Each Step
Step 1: Account Creation
Track:
zenovay('track','signup_field', {
field: 'email',
time_spent: 5
});
Optimize:
- Fewer fields
- Social signup options
- Clear password requirements
Step 2: Profile/Setup
Track:
zenovay('track','profile_section', {
section: 'company_info',
completed: true,
time_spent: 45
});
Optimize:
- Make optional fields clear
- Progressive disclosure
- Skip option visible
Step 3: First Core Action
Track:
zenovay('track','first_action', {
action_type: 'create_project',
used_template: true,
template_name: 'getting_started'
});
Optimize:
- Provide templates
- Pre-populate data
- Guide to quick win
Step 4: Aha Moment
Track:
zenovay('track','aha_moment', {
trigger: 'first_result_seen',
time_from_signup_minutes: 5,
value_demonstrated: 'report_generated'
});
Optimize:
- Reduce time to value
- Celebrate the moment
- Explain what happened
Time-Based Analysis
Time to Activate
// Track activation time
zenovay('track','user_activated', {
time_from_signup_hours: 2,
session_count: 1,
actions_taken: 15
});
Optimal Onboarding Time
| Completion Time | Retention 30d |
|---|---|
| <5 min | 45% |
| 5-15 min | 52% |
| 15-30 min | 38% |
| >30 min | 25% |
Sweet spot: 5-15 minutes = highest retention.
Incomplete Onboarding Recovery
Track Abandonment
// User exits during onboarding
zenovay('track','onboarding_abandoned', {
last_step: 2,
time_spent: 180,
page: '/onboarding/profile'
});
Re-engagement Tracking
// User returns to continue
zenovay('track','onboarding_resumed', {
days_since_abandon: 2,
resumed_at_step: 2,
source: 'email_reminder'
});
Recovery Tactics
| Days Inactive | Action | Track |
|---|---|---|
| 1 | Email prompt | reminder_sent |
| 3 | Feature highlight | highlight_email |
| 7 | Offer help | support_offer |
Onboarding Checklist Component
Track Checklist Usage
// Checklist item completed
zenovay('track','checklist_item', {
item: 'invite_team',
checked: true,
position: 4,
total_items: 6
});
// Checklist fully completed
zenovay('track','checklist_completed', {
total_time_days: 3,
items_completed: 6
});
Checklist Analytics
View in dashboard:
- Most completed items
- Least completed items
- Time to complete each
- Order of completion
Onboarding Health Score
Calculate Score
// Update onboarding score
function calculateOnboardingScore(userId) {
const score = {
profile_complete: 20,
first_action: 25,
team_invited: 20,
integration_setup: 25,
second_session: 10
};
zenovay('track','onboarding_score_updated', {
user_id: userId,
score: calculateTotal(score),
components: score
});
}
Score Distribution
| Score Range | Users | Conversion |
|---|---|---|
| 0-25 | 30% | 5% |
| 26-50 | 25% | 15% |
| 51-75 | 25% | 35% |
| 76-100 | 20% | 55% |
Reporting
Weekly Onboarding Report
Include:
- Signups this week
- Completion rate
- Average time to complete
- Step-by-step drop-offs
- Segment breakdown
Cohort View
Track cohorts over time:
- Week 1 completion rate
- Week 2 activation rate
- Week 4 retention rate
Best Practices
Design for Measurement
-
Define success first
- What is activation?
- What is the aha moment?
- Track those specifically
-
Instrument everything
- Every step
- Every skip
- Every retry
-
Segment from start
- Capture role/use case
- Track source
- Note company size
Common Mistakes
-
Too many steps
- Overwhelming
- High abandonment
-
Unclear progress
- No progress bar
- Users feel lost
-
Forced onboarding
- No skip option
- Frustrates power users
-
Ignoring data
- Not watching replays
- Not optimizing drop-offs