Required Datapoints
- New Users or Accounts (by cohort)
- Users Who Used Target Feature Within Set Period (e.g., 7 days)
- Feature Tracking Events
Feature Adoption Rate (Early) measures the percentage of new users who use a key feature within their first few sessions or days. It helps evaluate onboarding effectiveness and early value realization.
Feature Adoption Rate (Early) is a key indicator of onboarding quality and product clarity, reflecting how quickly new users engage with key features during their first interactions with your product.
The relevance and interpretation of this metric shift depending on the model or product:
A high early adoption rate suggests strong guidance and intuitive UX, while a low rate may signal feature invisibility, unclear benefits, or friction in setup.
By segmenting by source, persona, or plan, you can tailor onboarding and education to speed up time-to-value and reduce early churn.
Feature Adoption Rate (Early) informs:
These are the main factors that directly impact the metric. Understanding these lets you know what levers you can pull to improve the outcome
Actionable ideas to optimize this KPI, from fast, low-effort wins to strategic initiatives that drive measurable impact.
Activities commonly tied to improving or operationalizing this KPI.
| Activity | Description |
|---|---|
| Onboarding | Onboarding is the process of guiding new users or customers through the initial stages of adopting a product or service, ensuring they experience value as quickly as possible. It helps teams translate strategy into repeatable execution. Relevant KPIs include Active Feature Usage Rate and Breadth of Use. |
| Early Engagement | Early Engagement is the strategic process of initiating meaningful interactions with potential customers at the earliest stages of their buyer journey. It coordinates execution across touchpoints so teams can move users or accounts toward the target outcome. Relevant KPIs include Feature Adoption Rate (Early) and First Critical Feature Reuse Rate. |
| Product Education | Product Education is a strategic process focused on equipping go-to-market teams—including sales, customer success, and support—with the essential knowledge, skills, and resources to effectively position, demonstrate, and support a product. It helps teams translate strategy into repeatable execution. Relevant KPIs include Feature Adoption Rate (Early) and Feature Adoption Velocity (Top 3 Features). |
| Guided Tours | Guided Tours is a structured, interactive session where prospects or customers are guided through key features and workflows of a product, typically in a live or virtual setting. It helps teams translate strategy into repeatable execution. Relevant KPIs include Feature Adoption Rate (Early). |
This KPI is associated with the following stages in the AAARRR (Pirate Metrics) funnel:
This KPI is classified as a lagging Indicator. It reflects the results of past actions or behaviors and is used to validate performance or assess the impact of previous strategies.
This role is directly accountable for the KPI and is expected to drive progress and decisions around it.
These roles contribute directly to performance and typically partner on execution, reporting, or optimization.
These leading indicators influence this KPI and act as early signals that forecast future changes in this KPI.
These lagging indicators confirm, quantify, or amplify this KPI and help explain the broader business impact on this KPI after the fact.
How this KPI is structured in Cube.js, including its key measures, dimensions, and calculation logic for consistent reporting.
cube('NewUsers', { sql: `SELECT * FROM new_users`, measures: { count: { type: 'count', sql: 'id', title: 'New User Count', description: 'The total number of new users.' } }, dimensions: { id: { sql: 'id', type: 'string', primaryKey: true }, createdAt: { sql: 'created_at', type: 'time', title: 'User Creation Date', description: 'The date when the user account was created.' } }})cube('FeatureUsage', { sql: `SELECT * FROM feature_usage`, measures: { count: { type: 'count', sql: 'user_id', title: 'Feature Usage Count', description: 'The number of times the feature was used by new users within the set period.' } }, dimensions: { userId: { sql: 'user_id', type: 'string', title: 'User ID', description: 'The ID of the user who used the feature.' }, eventTime: { sql: 'event_time', type: 'time', title: 'Feature Usage Time', description: 'The time when the feature was used.' } }})cube('FeatureAdoptionRate', { sql: `SELECT * FROM ( SELECT nu.id AS user_id, COUNT(fu.user_id) AS feature_usage_count FROM new_users nu LEFT JOIN feature_usage fu ON nu.id = fu.user_id WHERE fu.event_time <= DATE_ADD(nu.created_at, INTERVAL 7 DAY) GROUP BY nu.id )`, measures: { adoptionRate: { type: 'number', sql: 'feature_usage_count / NULLIF(${NewUsers.count}, 0)', title: 'Feature Adoption Rate (Early)', description: 'The percentage of new users who used the feature within their first 7 days.' } }, dimensions: { userId: { sql: 'user_id', type: 'string', title: 'User ID', description: 'The ID of the user.' } }, joins: { NewUsers: { relationship: 'belongsTo', sql: `${CUBE}.user_id = ${NewUsers}.id` } }})Note: This is a reference implementation and should be used as a starting point. You’ll need to adapt it to match your own data model and schema