How to Score Accounts for Expansion: Build an Upsell Score Step by Step
To score accounts for expansion, you combine the signals that come before an upgrade (seats near the plan limit, growing use of premium features, new teams in the product, changes at the customer's company) into one number per account, measure each account against its own baseline, and check the result against the accounts that actually expanded. The output is an Upsell Score: a ranking of which customers are ready to buy more, and why.
Most teams already have a customer health score for churn. Far fewer score the upside, so upsell conversations happen when a customer asks, or at renewal, months after the moment passed. This guide shows how to build an Upsell Score step by step, how to avoid the usual mistakes, and when a rule-based score stops being enough.
What an Upsell Score is (and why it is not your health score)
An Upsell Score answers one question: how ready is this account to grow right now? Grow means buy more seats, move to a higher plan, add a module or roll the product out to another team.
It is tempting to reuse the health score for this. It does not work well, for two reasons:
- A health score is built to find risk. Its signals (falling usage, overdue invoices, open tickets) separate healthy accounts from unhealthy ones. A healthy account that has used the product the same way for two years and an account that is about to outgrow its plan both look "green".
- Expansion has its own signals. Seats at the limit, clicks on features the plan does not include, a new department signing up: none of these say much about churn, and most health scores ignore them.
So treat them as two scores that sit next to each other: one for the downside, one for the upside. Read together, they tell your team whether to sell now or fix a problem first (more on that below).
Why it is worth the effort: expansion is what turns retention into growth. In SaaS Capital's 2025 benchmarks, companies with net revenue retention of 120 to 130% grew at a median of 38% a year, against 15% for companies below 90%. And because revenue is concentrated (in our study of 44,000 SaaS users, the top 10% of customers held 58% of MRR on average), knowing which accounts are ready to grow is worth more than any campaign to the whole base.
The signals that predict expansion
Expansion signals fall into five groups. You will not need all of them; the point is to know where to look.
| Group | Signals | What it tells you |
|---|---|---|
| Capacity | Seats used close to seats licensed; usage, records or API calls near the plan limit | The account will hit a wall soon. The clearest and most reliable signal. |
| Depth | Growing use of premium or advanced features; clicks on features the plan does not include | The account is outgrowing its tier. |
| Breadth | New users from another department or email domain; usage spreading across teams | Room for a department rollout or a bigger plan, not just more seats. |
| Intent | Pricing page visits; an upgrade started and not finished; questions like "can we get more seats?" | The customer is already thinking about it. Converts well, but covers few accounts. |
| Company changes | The customer is hiring or growing; a contact changes role; a key user leaves | Outside your product, but often the trigger. Hiring opens room to grow; a champion leaving is a reason to wait. |
Two rules make these signals useful:
- Measure trends, not snapshots. 40 active users means nothing on its own. 40 active users, up from 25 three months ago, on a 45-seat plan, means a lot.
- Compare each account to itself. Ten active seats is a capacity signal on a 10-seat plan and a warning sign on a 50-seat plan.
For more on which signals matter at which stage, and the playbooks that follow them, see our guide to expansion revenue and upselling.
How to build an Upsell Score, step by step
This is the rule-based way: you choose the signals and weights yourself. It is the natural place to start, and you can do it in a spreadsheet, a BI tool or your CRM.
Step 1: Define what "expanded" means for you
Before you score anything, write down what counts as expansion: a seat increase, a plan upgrade, a new module, a price increase at renewal, or all of them. Then pull the list of accounts that expanded in the last 12 months. You need this list twice: to pick signals (step 2) and to test the score (step 5).
Also decide what the score is for. "Tell each account owner which three accounts to call this week" leads to a different score than "forecast expansion revenue for next quarter". Start with the first.
Step 2: Pick four to six signals
Look at the accounts that expanded and ask what they had in common 30 to 90 days before. Typical candidates:
- seat utilization (active seats divided by licensed seats)
- usage growth against the account's own 90-day average
- number of active users from a new team or domain
- usage of premium features, or attempts to use features outside the plan
- pricing page visits or upgrade-related support questions
- hiring or headcount growth at the customer
Fewer signals make a score you can explain. If an account owner cannot say in one sentence why an account scores high, they will not trust it, and they will not call.
Step 3: Normalize each signal to the same scale
Convert every signal to the same range, for example 0 to 100, before you weight anything. Otherwise a signal with a wide range (API calls) quietly outweighs one with a narrow range (seat utilization).
- Percent of limit works for capacity: 9 of 10 seats used = 90.
- Change against baseline works for usage: +50% against the account's own 90-day average = high, flat = low.
- Yes or no works for intent: pricing page visited in the last 14 days = 100, otherwise 0.
Step 4: Weight the signals and calculate
Give each signal a weight that reflects how often it showed up before real expansion. A simple example:
| Signal | Weight | Account A | Account B |
|---|---|---|---|
| Seat utilization | 35% | 95 | 40 |
| Usage growth vs. own baseline | 25% | 80 | 30 |
| New team active | 20% | 100 | 0 |
| Premium feature use | 10% | 60 | 70 |
| Pricing page or upgrade question | 10% | 100 | 0 |
| Weighted score (0 to 100) | 89 | 29 |
Then group the result into bands your team can act on. We use a 1 to 5 scale, where 5 means most ready to grow:
| Upsell Score | Weighted result | What the account owner does |
|---|---|---|
| 5 | 80 to 100 | Talk this week, with the signals in hand |
| 4 | 60 to 79 | Plan the conversation this month |
| 3 | 40 to 59 | Watch; nurture with value, not an offer |
| 1 to 2 | below 40 | No expansion motion now |
Step 5: Back-test against accounts that really expanded
Take the accounts from step 1 and calculate what their score would have been 30 to 60 days before they expanded. Then do the same for accounts that did not expand.
- If most expanded accounts would have scored 4 or 5, the score works.
- If they are spread across all bands, your signals or weights are off. Go back to step 2.
- If many accounts score 5 and never expand, a signal is too generous (often raw logins or "active users" without a baseline).
Do this before you show the score to the team. A score that flags the wrong accounts in its first month rarely gets a second chance.
Step 6: Read it next to churn risk
An Upsell Score on its own can send your team into the wrong conversation. A customer can be ready to buy more seats and, at the same time, unhappy with support. Put both scores side by side:
| Low churn risk | High churn risk | |
|---|---|---|
| High Upsell Score | Talk now. The best expansion conversations you have. | Fix first, then sell. Solve the problem, then come back with the offer. |
| Low Upsell Score | Nurture. Help them get more value; the signals will come. | Retention work. No upsell, focus on saving the account. |
An upsell offer on top of an open escalation speeds up churn. The matrix stops that from happening.
Step 7: Turn the score into work
A score nobody acts on grows nothing. Connect each band to a step: an Upsell Score of 5 creates a task for the account owner with the signals behind it; a score that jumps from 2 to 4 in a week sends a note to the CSM. Review the weights every quarter, because your plans, prices and customers change.
Where rule-based upsell scores break
A home-built score is a good start. Teams usually hit the same limits:
- One threshold for everyone. 80% seat utilization means different things for a 5-seat team and a 500-seat company.
- Guessed weights. Unless you back-test regularly, weights reflect what the team believes, not what the data says.
- Seasonality. A customer that grows every September looks "ready to expand" every September.
- Maintenance. Every new plan, price change or product feature needs a manual update.
- No explanation. A number without the reason behind it does not help the account owner start a conversation.
Predictive expansion scoring
A predictive score turns the method around. Instead of you choosing signals and weights, a machine learning model learns from your history which patterns come before expansion, and scores each account against its own baseline. An LLM layer can then explain each score in plain language: which signals push it up (drivers) and which hold it back (brakes).
The trade-off is cost. To build one yourself you need clean history across billing, product usage and CRM, enough expanded accounts to learn from, someone to train and monitor the model, and someone to keep the data pipelines running. For most CS teams that is a project of several months, plus ongoing maintenance.
How Customerscore.io scores accounts for expansion
Customerscore.io gives every account an Upsell Score from 1 to 5, refreshed daily, next to its Churn Risk Score. The model is pre-trained on tens of thousands of SaaS users and then tuned to your data, so you do not start from guessed weights.
- Signals from your product and outside it: seats, usage, feature adoption and billing from your stack, plus changes at the customer's company such as hiring, a contact changing role or a key user leaving.
- Drivers and brakes behind every score, so the account owner knows what to say.
- Both directions at once: upsell readiness next to churn risk, so your team sells to the right accounts and fixes the rest first.
- Work, not just a number: accounts that become upsell-ready show up in My Day, and playbooks create the tasks for the account owner. Your team has the conversation.
- Reporting: net revenue retention split into expansion, contraction and churn, by segment.
Setup is expert-led, done with you on your data, and most teams are live in 1 to 3 weeks. See how it works on our upsell and expansion software page, or book a demo.
Frequently asked questions
What is the best way to score accounts for expansion?
Start with four to six signals that came before real expansion in your own data (seat utilization, usage growth against the account's baseline, a new team in the product, premium feature use, upgrade intent), normalize them, weight them, and back-test the score against accounts that actually expanded. Then read it next to churn risk before anyone makes an offer.
Which signals best predict an upsell?
Capacity signals are the most reliable: seats or usage approaching the plan limit. Breadth (new teams or domains) and depth (premium feature use) come next. Intent signals such as pricing page visits convert well but cover fewer accounts. Company changes, like hiring, often trigger the need.
Can I use my customer health score to find expansion opportunities?
Only partly. Most health scores are built to flag churn, so a stable, healthy account and an account about to outgrow its plan look the same. A separate Upsell Score, read next to the churn score, separates them.
How often should an Upsell Score update?
At least weekly, ideally daily. Expansion windows are short: a team that hits its seat limit will either buy more seats or find a workaround within weeks.
What data do I need to score accounts for expansion?
Billing data (plan, seats, MRR) and product usage are the core. CRM and support data add context, and signals about the customer's company (hiring, role changes) add timing. You also need a list of accounts that expanded in the past, to test the score.
Is an Upsell Score the same as a propensity-to-buy model?
They answer the same question. "Propensity model" usually means a predictive score built by a data team. An Upsell Score can be rule-based or predictive; what matters is that it ranks accounts by readiness to grow and shows the reasons.
Key takeaways
- An Upsell Score is not your health score: it needs its own signals, built around capacity, depth, breadth, intent and company changes.
- Measure each account against its own baseline and plan, not one threshold for everyone.
- Back-test against accounts that really expanded before the team sees the score.
- Read the Upsell Score next to churn risk: sell to healthy accounts, fix the others first.
- Rule-based scores are a good start; predictive scoring removes the guessing and the manual upkeep.
Related articles
Best Customer Success Software for SaaS Teams in 2026
The 8 best customer success software platforms for SaaS in 2026, compared by company size and use case: health scoring, churn prediction, automation, pricing.
BlogMulti-Year Renewals in B2B SaaS: When to Offer Them and How
When a multi-year renewal pays off, what discount to expect, which clauses protect both sides, and how to time the offer.
BlogCustomer Success Org Design: Structure, Roles and CSM Capacity
How to structure a customer success team, size books by hours rather than ratios, and evolve the org as the company grows.
BlogSales to Customer Success Handoff: Template, Checklist and Other Handoffs
A one-page handoff brief, the fields it needs, timing targets, and how support to CS and product to CS handoffs work.
