12 KiB
New User Parallel Work Telemetry
Goal
Measure whether the new parallel-work tours and the eight-step Getting started flow improve new-user activation and retention.
The product question is not "did the tour render?" It is:
- Did users who were eligible for the new parallel-work education retain better at D1, D3, and D7?
- Did seeing or completing the tour increase the behaviors that the activation plan expects: terminal splits, two agents in one worktree, two worktrees within 72 hours, task/review source use, setup script configuration, notifications, and agent capability setup?
- Where do users leave the education flow: before the tour starts, during a tour, after skipping a tour, after opening
Getting started, or partway through the eight setup steps?
This document implements the telemetry portion of new-user-parallel-work-activation.md.
Validation mode: the current branch logs the would-be event name and payload to the console instead of sending these new feature-education events through product telemetry. Keep the logged payload shape identical to the event payloads below so reviewers can verify what would be emitted before product telemetry is re-enabled.
Product Decisions
Question: Should Orca keep, revise, or disable the automatic workspace-agent-sessions tour for new users?
Decision owner/use: Product and growth review the retention and activation read after rollout. If exposed users retain and activate better than eligible-but-unexposed users, keep or expand the tour. If exposed users underperform or skip/cancel heavily, revise copy, timing, or gating.
Question: Which part of the education flow is weak?
Decision owner/use: If users usually stop on a specific tour step, revise that step or shorten the tour. If users complete the tour but do not progress through Getting started, improve the handoff. If users open Getting started but stall before the first two parallel-work steps, revise the checklist actions.
Dashboard: New User Parallel Work Activation
Action: Use the dashboard to decide whether to continue rollout, adjust the tour, reorder checklist steps, or add missing downstream action telemetry.
Existing Telemetry To Reuse
Keep the existing contextual-tour events as the primary tour exposure and outcome contract:
contextual_tour_showncontextual_tour_outcome
contextual_tour_outcome already carries:
tour_idsourceoutcome:completed,skipped, orcancelledsteps_seentotal_steps
For the current branch, workspace-agent-sessions is the activation tour. Its source should distinguish automatic first-workspace exposure from checklist-triggered education:
workspace_agent_sessions_visiblefor automatic surface-driven tour exposuresetup_guide_parallel_workfor the explicit checklistTry it outpath
Do not add one telemetry event per tour opportunity or step render. Opportunity checks are driven by local UI eligibility, retries, target visibility, modal state, and session guards; emitting every "not shown" reason would turn tour gating into passive eligibility telemetry. One shown event plus one outcome event keeps volume low and still answers whether users saw, skipped, cancelled, completed, and how far they got.
Tour Depth Improvement
Add stable step-depth fields to contextual_tour_outcome so the analysis can tell whether a user reached the actual late steps, not only how many visible steps happened to render.
Additive schema fields:
furthest_step_index: integer1..8defined_step_count: integer1..8
Keep steps_seen and total_steps:
steps_seenremains the count of unique rendered visible steps.total_stepsremains the visible-step denominator for the user session.furthest_step_indexis the highest 1-based index from the tour definition reached by the user.defined_step_countis the number of steps defined for that tour, regardless of target skipping.
This handles target-skipping correctly. A user who sees tour steps 1, 4, and 5 should report steps_seen: 3, total_steps: 3, furthest_step_index: 5, and defined_step_count: 5.
New Setup Guide Events
The eight Getting started steps need a small telemetry contract because they are not contextual-tour steps. They are durable activation milestones.
setup_guide_opened
Emit once when the modal opens.
Payload:
source:sidebar,contextual_tour,settings,feature_wall,help_menu, orunknowninitial_completed_count: integer0..8total_steps: integer8first_incomplete_step_id: one of the eight setup step ids, ornone
Use:
- Measures whether users reach the checklist after the tour.
- Establishes starting depth so existing progress does not look like checklist-driven progress.
setup_guide_closed
Emit once when a shown setup guide closes or unmounts.
Payload:
source: same value used bysetup_guide_openedoutcome:completed,dismissed, orinterruptedinitial_completed_count: integer0..8final_completed_count: integer0..8total_steps: integer8active_step_id: one of the eight setup step ids, ornone
Use:
- Measures whether users treat the checklist as useful or dismiss it without progress.
- Gives a compact "how far through the 8 steps" read without uploading a progress snapshot on every render.
setup_guide_step_completed
Emit once per setup step when that step first transitions from incomplete to complete while the setup guide is visible. Hidden/background progress is persisted locally as baseline state but not emitted, because async setup refresh cannot reliably distinguish old completions from new user action.
Payload:
step_id: one oftwo-worktrees,browser,notifications,default-agent,task-sources,setup-script,add-two-repos,agent-capabilitiessection_id:parallel-workorsetupcompleted_count: integer1..8total_steps: integer8setup_guide_visible: boolean
Use:
- Measures the in-guide depth through the eight steps without backfilling old setup state on launch.
- Lets retention analysis bucket users by
0,1,2,3-4,5-7, and8completed setup steps.
Implementation detail: persist a local set of emitted setup-guide step ids, similar in spirit to contextualToursSeenIds, so inferred durable state does not re-emit on every launch. Do not upload that local set.
Downstream Activation Events
Reuse existing downstream events whenever possible:
workspace_createdfor worktree/workspace creation depthagent_startedfor agent activity and follow-up actionssettings_changedfor supported settings such as notifications- setup script prompt events for setup-script configuration paths
- task/source-specific events where they already exist
Add action-specific downstream telemetry only when the retention question cannot be answered from existing events. The first likely gap is terminal splitting. The activation plan names first-session terminal split as a primary success criterion, but the branch currently records terminal-pane-split as local feature-interaction state, not product telemetry.
If no existing telemetry captures terminal split, add:
terminal_pane_split
Emit when a split succeeds, capped to the first split for each source + direction pair per UTC day on the local profile. This keeps the event useful for activation cohorts without making heavy terminal users dominate telemetry volume.
Payload:
source:contextual_tour,keyboard,context_menu,command,unknowndirection:verticalorhorizontal
Do not include pane ids, worktree ids, paths, commands, prompts, repo names, branch names, hostnames, or terminal content.
Retention Analysis
Use new-user eligibility as the least-biased baseline:
- Eligible baseline: new-user cohorts represented by first-run/onboarding events rather than uploading local tour eligibility state.
- Exposed cohort: users with
contextual_tour_shownwheretour_id = workspace-agent-sessions. - Tour outcome cohorts: users with
contextual_tour_outcomebroken down byoutcome. - Tour depth cohorts:
furthest_step_index / defined_step_countandsteps_seen / total_steps. - Checklist depth cohorts: latest
setup_guide_step_completed.completed_count, bucketed as0,1,2,3-4,5-7, and8.
Primary retention read:
- D1, D3, and D7 return to
app_opened - Compare new-user baseline, shown, completed, skipped, cancelled, and checklist-depth cohorts
Primary activation read:
- terminal split in first workspace session
- two agent sessions in one worktree
- two worktrees within 72 hours
- follow-up/manual agent action
- task/review source use
- setup script configured
- notifications configured
- agent capabilities completed
Interpretation rules:
- A completed tour with no downstream activation means the tour is educational but not converting.
- A skipped tour with strong downstream activation means the feature may be discoverable without the tour.
- A high cancelled rate usually points to target loss, modal conflicts, or timing problems.
- Strong checklist-depth retention with weak tour retention means the checklist is the value driver, not the automatic tour.
Volume Estimate
Telemetry volume estimate:
- Trigger: contextual tour shown/outcome, setup guide open/close, setup step first completion, optional terminal split
- Expected events/user/day: 2-6 for new users who encounter the flow
- Max events/user/day: about 14 on a heavy first day: 2 tour events, 2 setup guide events, 8 setup step completions, 1-2 split events
- At 1,000 DAU: expected 2,000-6,000 events/day
- Monthly at 1,000 DAU: expected 60,000-180,000 events/month
- Approval note: The events answer the rollout decision directly and are bounded by explicit user actions or one-time durable setup completions. There are no timers, render-loop events, polling snapshots, or passive heartbeats.
If observed volume exceeds expectation, remove or sample setup_guide_opened / setup_guide_closed before removing completion events. Completion events are the durable activation-depth read.
Privacy
All payloads must be low-cardinality and schema-bounded.
Never include:
- prompts
- terminal commands
- paths
- URLs
- hostnames
- repo names
- branch names
- task titles
- user-authored text
- raw errors
- tokens
- pane ids, worktree ids, repo ids, or other persistent product identifiers
Implementation Plan
- Extend
contextual_tour_outcomeschema insrc/shared/telemetry-events.tswith optionalfurthest_step_indexanddefined_step_count. - Track the highest reached defined tour step in
ContextualTourOverlay.tsxalongside the existingsteps_seenset. - Add setup-guide event schemas and bounded enums in
src/shared/telemetry-events.ts. - Add a setup-guide telemetry helper in
src/renderer/src/lib/feature-education-telemetry.tsor a dedicated setup-guide telemetry module. - Emit
setup_guide_openedandsetup_guide_closedfromSetupGuideModal.tsx. - Emit
setup_guide_step_completedfrom a small hook that observes visible setup-guide progress transitions, persists emitted step ids locally, and ignores hidden/background completions except as local baseline state. - Add
terminal_pane_splitonly if no existing telemetry captures successful terminal splits. - Add schema tests for accepted payloads, rejected raw strings, count bounds, and enum bounds.
- Add renderer tests that prove each modal open emits one open event, each close emits one close event, each step completion emits once, rerenders do not re-emit, and pre-completed persisted steps are not backfilled repeatedly.
Dashboard Tiles
Create a PostHog dashboard named New User Parallel Work Activation.
Tiles:
- Tour exposure:
contextual_tour_shownbytour_idandsource - Tour outcome:
contextual_tour_outcomebyoutcome - Tour depth: median
furthest_step_index / defined_step_count - Setup guide reach:
setup_guide_openedbysource - Setup guide close outcome:
setup_guide_closedbyoutcome - Eight-step depth: latest
setup_guide_step_completed.completed_countbucket - Activation funnel: tour shown -> tour outcome -> setup guide opened -> first two setup steps complete -> D1/D3/D7 return
- Downstream actions: tour shown -> terminal split -> two agents in one worktree -> two worktrees within 72 hours
Do not publish dashboard tiles that require raw user content or identifiers.