Track your user onboarding flow to identify drop-off points and optimize for faster activation.
Info
Sample business figures, conversion ranges and scoring thresholds in this guide are illustrative. They are not industry benchmarks, Zenovay customer results or measured causal effects. Define events for your product and compare observed cohorts before adopting a target.
Onboarding Analytics Overview
Why Track Onboarding?
| Metric | What to compare |
|---|---|
| Faster activation | Retention by activation-time cohort |
| Complete onboarding | Conversion among completed and incomplete cohorts |
| Day 1 value | Engagement after the first meaningful action |
Key Onboarding Metrics
| Metric | Formula | Illustrative range |
|---|---|---|
| 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
- Open your website's dashboard and select the Journeys tab, then the Funnels sub-tab
- Click New funnel and name it "User Onboarding"
- Add your steps as Event steps:
Step 1: signup_completed
Step 2: profile_completed
Step 3: first_feature_used
Step 4: aha_moment
Step 5: second_session
- Choose the time window Within 7 days or Within 30 days, then click Create funnel. The last step happens on a later visit, and the default Same visit only counts steps within one visit. On cookieless sites, a returning visitor gets a new anonymous ID every day, so these longer windows undercount there.
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
- Open your website's dashboard and select the Sessions tab
- Filter and search the session list to surface recordings around the step you care about
- Watch where users struggle during onboarding
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% |
Compare retention across your observed activation-time cohorts. Time alone does not establish a causal effect.
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
Because each checklist interaction is a custom event, you can break them down in your dashboard's event reports to see:
- 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
Next Steps
Use this workflow in Zenovay
Create an onboarding funnel in Open the dashboard from account creation to your first meaningful product action. Verify that both events arrive before reporting activation.