Article

Upsell and cross-sell scoring: two models for expansion revenue

Your next best deal is probably already a customer. Score them for expansion the same way you score new leads, but check they are happy before anyone pitches.

Greg Toler, Founder 8 min read Account scoring Contact scoring Scoring

Most teams score leads carefully and treat customers on gut feel. The account manager with the loudest renewal gets the attention, and expansion happens when a customer asks for it. That leaves a lot of revenue to chance, and the share of revenue that comes from existing customers keeps growing.

In Benchmarkit’s 2025 SaaS Performance Metrics, expansion from existing customers made up a median 40% of new ARR, up five points in a year. For companies above $50M in ARR it was 58% to 67%. It is also cheaper revenue: the median CAC ratio was $1.00 for expansion against $2.00 for new logos. Meanwhile median net revenue retention sat at 101% and gross revenue retention at 88%. In plain terms, the typical company barely replaced what it lost.

Expansion is too big to leave to whoever asks first. Here are two scoring models, one for upsell and one for cross-sell, plus the check that has to come before either.

Upsell and cross-sell are different questions

  • Upsell means more of what they already have: a higher tier, more seats, more usage. The best signal is a customer pressing against the limits of their current plan.
  • Cross-sell means something they do not have yet: a second product, an add-on, a service. The best signal is a customer showing interest in a problem your other product solves.

They need separate models, because the signals that predict one do little for the other. A customer at 95% of their seat limit is a great upsell candidate and tells you nothing about a new product.

Score the account, then find the person

Expansion decisions are made by companies, not by one contact. Score the account first. Then use contact-level engagement to decide who to talk to: the admin who hit the limit, the new leader who asked about a feature, the power user who reads every release note.

This also stops a common mistake. A single enthusiastic user does not mean the account is ready to buy more. Five people from two departments using the product more each week usually does.

Step one: the health gate

Before any expansion score counts, check that the customer is healthy. Pitching an upgrade to an account with open escalations or a falling usage trend does not just fail. It raises the risk that they leave.

Treat health as a gate, not as one factor among many. An account that fails the gate goes to a retention play, whatever its expansion score says.

Gate checkFails when
Escalated or high-severity support ticketsAny open, or several in the last 60 days
SatisfactionRecent NPS or CSAT response in the detractor range
Usage trendActive users or core actions down meaningfully over the last 30 to 60 days
Champion statusYour main contact has left or changed roles and no one has replaced them
BillingPast due, or a downgrade request in progress

A note on support tickets: volume on its own is a weak signal. Busy, growing customers often log more tickets because they use more of the product. Escalations and severity say far more about how the relationship is going.

A note on NPS: use it, but lightly. Response rates are often low, and the people who answer are not always the people who decide. A detractor response is a useful red flag. A promoter response alone is not a buying signal.

Model 1: Upsell

For moving customers to a higher tier, more seats, or more usage.

Fit score

FactorWeightWhat counts as a strong match
Usage against plan limits30%Consistently above 80% of seats, records, or usage allowance
Account growth25%Headcount growth, new teams, or new regions since they signed
Tier gap20%Features they use workarounds for exist in the next tier
Time on current plan15%Past onboarding and into steady use, usually six months or more
Open escalated ticket10%, subtractsAny escalation still open, even if the account passed the gate

Engagement score

FactorWeightDecays
Hit a plan limit or saw an upgrade prompt30%Half every 30 days
Active users growing week over week25%Half every 30 days
Visited pricing, plan comparison, or billing pages20%Half every 30 days
Admin engaged with release notes, webinars, or feature docs15%Half every 60 days
Asked their CSM or support about a higher-tier feature10%Half every 60 days
Demo data. The fit side of the upsell model for one account, with an escalation pulling it down.

This account looks like an easy upsell. It is using nearly all of its plan and the company is growing. One escalated ticket, opened after the last health check, is what holds it to a 6.8. Close the ticket first, then make the offer, and the conversation starts from a much better place.

Model 2: Cross-sell

For selling a second product, an add-on, or a service.

Fit score

FactorWeightWhat counts as a strong match
Adoption of the product they own30%Core features in regular use across the team
Profile match for the second product30%Looks like the customers who already own both
Time since start20%Six months or more, so the first product has proven itself
Budget owner reachable20%You have a relationship with the person who buys the second product

Engagement score

FactorWeightDecays
Visited pages or docs for the product they do not own35%Half every 30 days
Used an integration or workaround the second product replaces25%Half every 60 days
Attended a webinar or event about the second product15%Half every 60 days
New contacts from a different department engaging15%Half every 30 days
Mentioned the problem in a call, ticket, or review10%Half every 90 days

The strongest cross-sell signal is usually a workaround. A customer exporting data to a spreadsheet every week, or wiring up a third-party tool to fill a gap, is telling you what they need. Look for it in product usage and support notes.

Profile match matters more here than in upsell. Look at the customers who already own both products and find what they share. That becomes the fit factor.

What to do with each score band

The same nine-cell grid applies: fit and engagement are each scored out of 10 and split into three bands. Any account that fails the health gate skips the grid and goes to retention. That account is unhappy, at risk, or in flux, so fix the issue and make no expansion pitch.

FitEngagement 6.0 and upEngagement 3.0 to 5.9Engagement under 3.0
7.0 and upAccount manager reaches out this week with a specific offer tied to what they did.Account manager reaches out this week with a specific offer tied to what they did.In-app messages and a targeted email about the next tier or product. Alert the owner when engagement climbs.
4.0 to 6.9Self-serve upgrade path, in-product offer, or a short call if the deal is large.Self-serve upgrade path, in-product offer, or a short call if the deal is large.Education. Show what the next tier or product does for accounts like theirs.
Under 4.0Check the fit data first. If it holds, a light self-serve offer at most.Check the fit data first. If it holds, a light self-serve offer at most.Leave them alone and focus on keeping them happy.

Time the offer to the account, not just the score. An account with fit 7.0 and up and engagement 6.0 and up, 60 days from renewal, is a natural expansion conversation. The same account three weeks after a price increase is not.

Check that the model works

Every quarter, look at what expanded and what did not.

  • Did accounts with fit 7.0 and up and engagement 3.0 and up expand at a clearly higher rate? If not, the weights are wrong.
  • Look at expansions that came from accounts with fit under 7.0. They point at a signal the model is missing.
  • Look at accounts that expanded and then churned or downgraded. They point at a health check that is too loose.

Then track the numbers that matter: expansion revenue, net revenue retention, and gross revenue retention. A good expansion model moves the first two without hurting the third.

What you end up with

A health gate that keeps you from selling to unhappy customers, two models that separate “needs more” from “needs something else,” and a play for every band. Expansion stops depending on who asks first and starts following the accounts that are ready, with the reasons visible to everyone who works the account.

Score anything
across the whole team.

RevOps
Owns the model

One shared definition of good, wired into HubSpot, that doesn’t need an engineer to change.

SDR / BDR
Works the list

A ranked list of who to work today, with the reasons sitting there before the call.

AE
Runs the deals

See which open accounts actually fit, and why, before you spend a cycle.

Sales leadership
Owns the number

One prioritized pipeline the team trusts, instead of reps cherry-picking.

Marketing / Demand gen
Feeds the pipeline

Spend on best-fit accounts, and stop passing leads sales won’t work.

Customer success
Grows the base

Score existing accounts for fit, expansion, and risk.

Sophisticated scoring for enterprise teams, simple enough for a team of one, technical or not.