Learn how to combine product usage data with CRM data to predict churn, identify expansion opportunities, and improve customer success operations. Complete with SQL examples and step-by-step setup.
Most SaaS companies track product usage and customer data in completely separate systems. Product teams monitor feature adoption in Amplitude or Mixpanel. Sales teams track deals and accounts in Salesforce or HubSpot. Customer Success teams are left trying to manually piece together which accounts are healthy, at risk of churning, or ready for expansion.
This guide shows you how to automatically join product usage data with CRM data to create a complete view of account health. You'll learn to identify churn risk before it's too late, spot expansion opportunities early, and give your Customer Success team the insights they need to be proactive rather than reactive.
To implement account health scoring using product usage and CRM data, you'll need access to the following tools and data sources:
Track user behavior and feature usage:
Customer and account relationship data:
Airbook connects your product analytics and CRM data without requiring engineering resources. Key capabilities:
Follow these steps to connect your product usage and CRM data sources and start tracking account health automatically.
Start by connecting your product analytics platform to Airbook. This will give you access to user events, feature usage, and engagement metrics.
For Amplitude users:
Connect your CRM system to access account information, contract details, and customer relationship data.
For Salesforce users:
The most critical step is mapping product users to CRM accounts. This connection allows you to aggregate usage data at the account level.
Before building complex queries, verify that your data is flowing correctly and accounts are properly mapped.
-- Verify account mapping coverage
SELECT
COUNT(DISTINCT crm_account_id) as mapped_accounts,
COUNT(DISTINCT user_id) as total_users,
COUNT(DISTINCT CASE WHEN crm_account_id IS NOT NULL THEN user_id END) as mapped_users,
ROUND(
COUNT(DISTINCT CASE WHEN crm_account_id IS NOT NULL THEN user_id END) * 100.0 /
COUNT(DISTINCT user_id), 2
) as mapping_coverage_percent
FROM amplitude_users
Here's a comprehensive SQL query that combines product usage data with CRM information to calculate account health scores. This query creates a complete picture of account engagement, risk factors, and expansion opportunities.
-- Account Health Scoring: Join Product Usage with CRM Data
WITH usage_metrics AS (
SELECT
account_id,
account_name,
-- Usage Activity Metrics
COUNT(DISTINCT user_id) as active_users_30d,
COUNT(DISTINCT DATE(event_time)) as active_days_30d,
COUNT(*) as total_events_30d,
-- Feature Adoption Metrics
COUNT(DISTINCT CASE WHEN event_type = 'feature_used' THEN event_properties:feature_name END) as features_used,
COUNT(DISTINCT CASE WHEN event_type = 'advanced_feature_used' THEN user_id END) as power_users,
-- Engagement Depth
AVG(session_length_minutes) as avg_session_length,
MAX(DATE(event_time)) as last_activity_date,
MIN(DATE(event_time)) as first_activity_date,
-- Value Realization Signals
COUNT(DISTINCT CASE WHEN event_type = 'goal_completed' THEN event_id END) as goals_completed,
COUNT(DISTINCT CASE WHEN event_type = 'integration_connected' THEN event_id END) as integrations_active
FROM amplitude_events
WHERE event_time >= CURRENT_DATE - INTERVAL 30 DAY
AND account_id IS NOT NULL
GROUP BY account_id, account_name
),
crm_context AS (
SELECT
id as account_id,
name as account_name,
annual_recurring_revenue__c as arr,
contract_start_date__c as contract_start,
contract_end_date__c as contract_end,
customer_success_manager__c as csm_id,
account_tier__c as tier,
industry,
employees as company_size,
-- Contract Health
DATEDIFF(contract_end_date__c, CURRENT_DATE) as days_to_renewal,
DATEDIFF(CURRENT_DATE, contract_start_date__c) as days_since_start,
-- Account Value Metrics
CASE
WHEN annual_recurring_revenue__c >= 100000 THEN 'Enterprise'
WHEN annual_recurring_revenue__c >= 25000 THEN 'Mid-Market'
ELSE 'SMB'
END as revenue_segment
FROM salesforce_accounts
WHERE type = 'Customer'
AND is_deleted = FALSE
),
account_health AS (
SELECT
u.account_id,
u.account_name,
c.arr,
c.contract_end,
c.days_to_renewal,
c.revenue_segment,
c.tier,
c.industry,
-- Usage Health Scores (0-100)
LEAST(100, u.active_users_30d * 10) as user_adoption_score,
LEAST(100, u.active_days_30d * 3.33) as frequency_score,
LEAST(100, u.features_used * 5) as feature_breadth_score,
LEAST(100, u.power_users * 20) as depth_score,
LEAST(100, u.goals_completed * 2) as value_realization_score,
-- Engagement Metrics
u.active_users_30d,
u.active_days_30d,
u.features_used,
u.power_users,
u.avg_session_length,
u.goals_completed,
u.integrations_active,
-- Risk Factors
DATEDIFF(CURRENT_DATE, u.last_activity_date) as days_since_last_activity,
CASE
WHEN DATEDIFF(CURRENT_DATE, u.last_activity_date) > 14 THEN 'High Risk'
WHEN DATEDIFF(CURRENT_DATE, u.last_activity_date) > 7 THEN 'Medium Risk'
ELSE 'Active'
END as activity_risk_level,
-- Expansion Signals
CASE
WHEN u.power_users >= 5 AND u.features_used >= 15 THEN 'High Expansion Potential'
WHEN u.power_users >= 2 AND u.features_used >= 8 THEN 'Medium Expansion Potential'
ELSE 'Low Expansion Potential'
END as expansion_potential
FROM usage_metrics u
LEFT JOIN crm_context c ON u.account_id = c.account_id
)
SELECT
account_id,
account_name,
arr,
revenue_segment,
tier,
industry,
-- Overall Health Score (weighted average)
ROUND(
(user_adoption_score * 0.25 +
frequency_score * 0.20 +
feature_breadth_score * 0.20 +
depth_score * 0.15 +
value_realization_score * 0.20), 1
) as overall_health_score,
-- Individual Component Scores
user_adoption_score,
frequency_score,
feature_breadth_score,
depth_score,
value_realization_score,
-- Engagement Details
active_users_30d,
active_days_30d,
features_used,
power_users,
ROUND(avg_session_length, 1) as avg_session_minutes,
goals_completed,
integrations_active,
-- Risk Assessment
days_since_last_activity,
activity_risk_level,
days_to_renewal,
-- Opportunity Classification
expansion_potential,
-- Health Categorization
CASE
WHEN ROUND((user_adoption_score * 0.25 + frequency_score * 0.20 + feature_breadth_score * 0.20 + depth_score * 0.15 + value_realization_score * 0.20), 1) >= 80 THEN 'Excellent'
WHEN ROUND((user_adoption_score * 0.25 + frequency_score * 0.20 + feature_breadth_score * 0.20 + depth_score * 0.15 + value_realization_score * 0.20), 1) >= 60 THEN 'Good'
WHEN ROUND((user_adoption_score * 0.25 + frequency_score * 0.20 + feature_breadth_score * 0.20 + depth_score * 0.15 + value_realization_score * 0.20), 1) >= 40 THEN 'At Risk'
ELSE 'Critical'
END as health_category,
contract_end
FROM account_health
ORDER BY overall_health_score DESC, arr DESC;
User Adoption Score: Based on number of active users per account
Frequency Score: How often the account uses your product
Feature Breadth Score: Variety of features being used
Depth Score: Number of power users showing advanced usage
Value Realization: Completion of key goals or workflows
Expansion Signals: Usage patterns indicating growth potential
Raw account health scores are just the beginning. The real value comes from visualizing this data in ways that drive action across your Customer Success, Sales, and Product teams.
Line charts showing health trajectories over time
Accounts categorized by churn risk level
ARR at risk vs. expansion opportunities
Understanding what your account health scores mean and how to act on them is crucial for driving customer success outcomes. Here's how to interpret different score ranges and identify the right actions to take.
Account health scoring isn't just for Customer Success teams. Different roles need different views of the data, with varying frequencies and focus areas. Here's how each team should use account health insights.
Frequency: Daily monitoring
Focus: At-risk accounts, expansion opportunities
Actions: Proactive outreach, health check calls, onboarding optimization
Key Metrics: Overall health score, usage trends, feature adoption
Frequency: Weekly reviews
Focus: Expansion revenue, upsell timing
Actions: Qualified expansion conversations, renewal strategy
Key Metrics: Expansion signals, power user growth, feature breadth
Frequency: Bi-weekly analysis
Focus: Feature adoption patterns, user engagement
Actions: Product roadmap decisions, feature optimization
Key Metrics: Feature usage depth, adoption rates, session quality
Frequency: Monthly reporting
Focus: Revenue forecasting, churn prediction
Actions: Model refinement, process optimization
Key Metrics: Predictive accuracy, revenue at risk, expansion pipeline
Frequency: Quarterly reviews
Focus: Strategic health trends, business impact
Actions: Resource allocation, strategic initiatives
Key Metrics: Portfolio health, churn rates, expansion rates
Frequency: Ongoing maintenance
Focus: Data quality, model accuracy
Actions: Pipeline monitoring, score calibration
Key Metrics: Data freshness, mapping coverage, prediction accuracy
After helping dozens of companies implement account health scoring, we've seen the same mistakes repeatedly. Here are the critical pitfalls to avoid when building your own system.
The Mistake: Giving too much weight to the last 7 days of activity, causing scores to fluctuate wildly based on vacation schedules, holidays, or temporary usage spikes.
The Fix: Use rolling 30-day averages and include trend analysis. A single week of low activity shouldn't tank an otherwise healthy account's score.
Example: An account goes quiet for a week due to a company holiday. Their health score drops from 85 to 45, triggering unnecessary CS outreach and creating customer confusion.
The Mistake: Using the same health scoring criteria for a 10-person startup and a 10,000-person enterprise. Different account sizes and industries have completely different usage patterns.
The Fix: Segment your scoring by account size, industry, or customer lifecycle stage. Create different benchmarks for different account types.
Example: A small startup with 3 active users gets a low health score, while an enterprise with 50 active users (out of 500 licenses) gets a high score, despite having much lower adoption rates.
The Mistake: Prioritizing metrics that look good (total logins, page views) over metrics that predict outcomes (feature depth, goal completion, integration usage).
The Fix: Focus on value-realization metrics. Track actions that correlate with customer success and retention, not just engagement volume.
Example: An account has high daily login counts but never completes key workflows or connects integrations. They churn despite appearing "engaged" in surface metrics.
The Mistake: Not validating that product users are correctly mapped to CRM accounts, leading to incomplete or inaccurate health scores.
The Fix: Implement data quality checks and regular audits. Monitor mapping coverage and investigate accounts with suspiciously low usage data.
Example: 30% of your product users can't be mapped to CRM accounts due to email domain mismatches, causing major enterprise accounts to appear inactive.
The Mistake: Setting up health scoring once and never revisiting the model. Customer behavior and product features evolve, but the scoring stays the same.
The Fix: Review and refine your scoring model quarterly. Test different weightings and add new metrics as your product and customer base mature.
Example: Your scoring heavily weights a feature that's no longer core to customer success, while ignoring a new integration that's become critical for retention.
The Mistake: Creating beautiful health score dashboards that don't tell teams what to do next. Scores without context or recommended actions don't drive behavior change.
The Fix: Include specific recommendations with each health score. "Account health: 45" should become "Account health: 45 - Low feature adoption, recommend onboarding call."
Example: CS team sees an account with a score of 60 but doesn't know if that's trending up or down, or what specific actions would improve the score.
Answer: Join product usage data with CRM data by mapping product users to CRM accounts using email domains, account IDs, or custom identifiers. Connect your product analytics platform and CRM system through a data integration tool, then use SQL queries to combine usage metrics with account information.
Answer: Key metrics for account health scoring include user adoption, usage frequency, feature breadth, usage depth, and value realization. Weight these metrics based on their correlation with customer retention and expansion in your specific business.
Answer: Predict churn by identifying accounts with declining usage patterns combined with CRM risk factors. Build predictive models that weight historical churn patterns against current account behavior and contract details.
Answer: You need a product analytics platform, a CRM system, and a data integration platform. Airbook provides pre-built connectors and SQL workspace for analysis without requiring engineering resources.
Answer: Map product users to CRM accounts using email domain matching, account ID properties, organization IDs, or contact record joins. Validate mapping coverage regularly to ensure account-level metrics accuracy.
Answer: Expansion opportunity signals include high user adoption within existing seats, advanced feature usage, API usage approaching limits, and strong engagement trends with health scores above 80.
Answer: Monitor account health scores daily for high-value accounts, weekly for standard accounts, and monthly for lower-tier accounts. Set up automated alerts for significant score changes and accounts approaching renewal dates.
Account Tier | Monitoring Frequency | Alert Thresholds | Responsible Team |
---|---|---|---|
Enterprise (>$50k ARR) | Daily | Score drop >10 points | CSM + Account Manager |
Mid-Market ($10k-$50k) | Weekly | Score drop >15 points | Customer Success |
SMB (<$10k ARR) | Monthly | Score drop >20 points | Customer Success |
Learn from real implementations of account health scoring across different SaaS business models and use cases.
Customer Success team couldn't identify which enterprise accounts were at risk until contracts were already up for renewal.
Reduced churn by 23% by identifying at-risk accounts 45 days earlier. Customer Success team now has 90-day lead time for intervention strategies.
High trial-to-paid conversion but significant churn after 6 months due to poor adoption of advanced features.
Increased 12-month retention by 34% and identified $2.1M in expansion opportunities through advanced feature adoption tracking.
Individual developer sign-ups weren't converting to team plans, missing enterprise expansion opportunities.
Increased individual-to-team conversion by 67% and identified enterprise prospects 3 months earlier in the adoption cycle.
Seasonal businesses showed erratic usage patterns that triggered false churn alerts during off-peak periods.
Reduced false positive churn alerts by 78% and improved CS team efficiency by focusing on truly at-risk accounts rather than seasonal variance.
Joining product usage data with CRM information creates a powerful foundation for understanding and improving account health. Here's a recap of the key steps and considerations.