Required Datapoints
- Defined Intent Signals (e.g., feature exploration, upgrade page views, CS mentions)
- Total Number of Accounts in Period
- Accounts Exhibiting ≥1 Intent Signal
Expansion Intent Signal Rate measures the percentage of accounts showing behavioral or engagement signals that indicate interest in upgrading, expanding, or purchasing add-ons. It helps identify and prioritize expansion-ready accounts.
Expansion Intent Signal Rate is a key indicator of latent upgrade interest and upsell momentum, reflecting how frequently customers display early-stage behaviors that signal readiness for expansion—even before they take explicit action.
The relevance and interpretation of this metric shift depending on the model or product:
A rising trend reflects growing product curiosity and perceived value, while a flat trend can indicate poor feature discoverability or upgrade awareness.
By segmenting by account stage, persona, or activation path, you unlock insights for sales prioritization, nurture timing, and targeting of high-intent accounts.
Expansion Intent Signal Rate 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 |
|---|---|
| Expansion Targeting | Expansion Targeting is a strategic process focused on analyzing existing customer accounts to uncover new avenues for revenue growth. It gives teams a clear plan for where to focus, how to sequence work, and what to measure. Relevant KPIs include Expansion Intent Signal Rate and Expansion Opportunity Score. |
| Intent-Based Nurtures | Intent-Based Nurtures is a strategic activity focused on identifying, prioritizing, and engaging prospects or customers based on their demonstrated buying intent. It helps teams translate strategy into repeatable execution. Relevant KPIs include Expansion Intent Signal Rate. |
| Sales Handoff | Sales Handoff focuses on The Customer Transition Enablement activity ensures a seamless handoff of key account insights, customer context, and relationship ownership from the sales team to post-sales, customer success, or onboarding teams. It helps teams translate strategy into repeatable execution. Relevant KPIs include Expansion Intent Signal Rate. |
| Product Usage Tracking | Product Usage Tracking involves systematically collecting, monitoring, and analyzing customer interactions with a product following initial acquisition. It turns signals into decisions, interventions, and measurable follow-up. Relevant KPIs include Expansion Intent Signal Rate. |
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(`Accounts`, { sql: `SELECT * FROM accounts`, measures: { totalAccounts: { sql: `id`, type: 'count', title: 'Total Number of Accounts', description: 'Total number of accounts in the specified period.' }, accountsWithIntentSignal: { sql: `id`, type: 'countDistinct', title: 'Accounts Exhibiting ≥1 Intent Signal', description: 'Number of accounts exhibiting at least one intent signal.' }, expansionIntentSignalRate: { sql: `100.0 * ${accountsWithIntentSignal} / NULLIF(${totalAccounts}, 0)`, type: 'number', title: 'Expansion Intent Signal Rate', description: 'Percentage of accounts showing intent signals for expansion.' } }, dimensions: { id: { sql: `id`, type: 'string', primaryKey: true, title: 'Account ID', description: 'Unique identifier for each account.' }, createdAt: { sql: `created_at`, type: 'time', title: 'Account Creation Date', description: 'The date when the account was created.' } }})cube(`IntentSignals`, { sql: `SELECT * FROM intent_signals`, measures: { definedIntentSignals: { sql: `signal_type`, type: 'count', title: 'Defined Intent Signals', description: 'Count of defined intent signals such as feature exploration or upgrade page views.' } }, dimensions: { id: { sql: `id`, type: 'string', primaryKey: true, title: 'Intent Signal ID', description: 'Unique identifier for each intent signal.' }, accountId: { sql: `account_id`, type: 'string', title: 'Account ID', description: 'Identifier for the account associated with the intent signal.' }, signalType: { sql: `signal_type`, type: 'string', title: 'Signal Type', description: 'Type of intent signal, e.g., feature exploration, upgrade page views.' }, signalDate: { sql: `signal_date`, type: 'time', title: 'Signal Date', description: 'The date when the intent signal was recorded.' } }, joins: { Accounts: { relationship: 'belongsTo', sql: `${CUBE}.account_id = ${Accounts}.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