Required Datapoints
- Feature Set List: Modules or key feature groups.
- Usage Logs: Events by user or account.
- Account or User-Level Activity Data: Who used what, and how often.
- Measurement Period: Monthly or quarterly typical.
Breadth of Use measures the number of distinct features, modules, or product areas used by a single customer or account. It helps assess product adoption depth and customer stickiness.
Breadth of Use measures how many distinct product features or modules a customer actively uses, offering a clear signal of depth, stickiness, and cross-functional value within an account.
The relevance and interpretation of this metric shift depending on the model or product:
Greater breadth usually correlates with higher retention, upsell potential, and lower churn risk. Narrow use may indicate low feature discoverability, onboarding gaps, or siloed adoption.
Segment by account type, usage role, or industry to identify where to prioritize enablement, feature nudges, or success outreach.
Breadth of Use 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. |
| Feature Adoption | Feature Adoption involves continuously monitoring and analyzing how end users interact with specific product features after they are released. It helps teams translate strategy into repeatable execution. Relevant KPIs include Activation Progression Score and Breadth of Use. |
| Expansion Plays | Expansion Plays focuses on Expansion Motion encompasses the strategic activities aimed at increasing the value of existing customer accounts by identifying and pursuing opportunities for upselling, cross-selling, and encouraging broader product adoption. It coordinates execution across touchpoints so teams can move users or accounts toward the target outcome. Relevant KPIs include Average Revenue Per Account and Average Revenue Per Expansion Account. |
| Usage Heatmaps | Usage Heatmaps focuses on tracking, visualizing, and interpreting user interactions with a product or service to reveal patterns such as feature adoption, usage frequency, and points of friction. It helps teams translate strategy into repeatable execution. Relevant KPIs include Breadth of Use. |
For a customer:
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('FeatureUsage', { sql: `SELECT * FROM feature_usage`,
joins: { Accounts: { relationship: 'belongsTo', sql: `${CUBE}.account_id = ${Accounts}.id` } },
measures: { distinctFeaturesUsed: { sql: 'feature_id', type: 'countDistinct', title: 'Distinct Features Used', description: 'Number of distinct features used by an account within the measurement period.' } },
dimensions: { id: { sql: 'id', type: 'string', primaryKey: true },
accountId: { sql: 'account_id', type: 'string', title: 'Account ID', description: 'Unique identifier for the account.' },
featureId: { sql: 'feature_id', type: 'string', title: 'Feature ID', description: 'Unique identifier for the feature.' },
usageDate: { sql: 'usage_date', type: 'time', title: 'Usage Date', description: 'Date when the feature was used.' } }})cube('Accounts', { sql: `SELECT * FROM accounts`,
measures: { count: { sql: 'id', type: 'count', title: 'Accounts Count', description: 'Total number of accounts.' } },
dimensions: { id: { sql: 'id', type: 'string', primaryKey: true },
name: { sql: 'name', type: 'string', title: 'Account Name', description: 'Name of the account.' },
createdAt: { sql: 'created_at', type: 'time', title: 'Account Created At', description: 'Date when the account was created.' } }})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