---
title: "How Do I Identify Upsell Opportunities in SaaS From Usage Data?"
description: "Identify upsell opportunities in SaaS from six usage signals: seat utilisation, limit hits, new teams, API volume, integrations and sponsors, ranked weekly."
topic: "Revenue & Expansion"
author: "Jay Bheda, Co-founder, GainTrace"
audience: "Customer Success Manager, Account Manager"
published: 2026-09-04
modified: 2026-09-04
source: https://gaintrace.com/explore/revenue/identify-upsell-opportunities-saas-usage-signals
---

# How Do I Identify Upsell Opportunities in SaaS From Usage Signals?

*Six usage signals, a weekly ranking, and the opener that is not a pitch*

**Short answer:** To identify upsell opportunities in SaaS, watch six usage signals against each account's own 90-day baseline: seat utilisation above 85%, repeated feature-limit hits, a new team or department invited, rising API volume, an admin adding integrations, and an executive sponsor who starts attending. Rank accounts weekly by how many signals moved in the last 30 days, and open with the outcome the usage shows, never the SKU.

**Key takeaways**

- Readiness is capacity pressure plus spread plus sponsorship. One of the three on its own is a note; two inside 30 days is a conversation this week.
- The user who drives expansion is rarely the champion. It is the first person from a second team, or the admin who connects a new integration. Track who invited whom.
- Read every signal as change against the account's own baseline, not as a level. 85% seat utilisation means something different on a plan they were forced onto at signing.
- The same signals read as churn risk when they move the other way, so run one weekly sweep for both and split the list at the end.
- Do not pitch inside 45 days of a renewal, within two weeks of an unresolved P1, or in the 90 days after a champion leaves. The signal will still be there next month.

You want to identify upsell opportunities in SaaS accounts you already manage, and everything you have was built to catch churn rather than growth. The CRM holds a renewal date and two contacts. Usage lives in a dashboard someone built last year. Leadership has added an expansion number to your quarter, and the only method anyone has handed you is to ask on the next check-in whether they need more seats.
This page is the default we would give a CSM or account manager with 80 to 200 accounts and no CS platform: the six usage signals that mean an account is ready, what each looks like in an export, how to rank the book every Monday in under an hour, what to say on the call, and when to say nothing.

## Why does a usage number alone not tell me an account is ready?

High usage tells you an account likes you, not that it is about to need more, and those are two different lists. Teams that start with one number, usually weekly active users, and pitch wherever it is high end up pitching their happiest customers rather than their readiest ones.

> "Usage is easy to measure, but it does not always explain whether an account is getting real value."
>
> — r/CustomerSuccess, 2026

We read 3,628 public G2 reviews of the three most-reviewed customer success platforms and grouped 1,386 sentences describing the job the software was bought to do. 102 name upsell or expansion. Only 27 tie it to usage in the same sentence, and 50 pair it with churn risk, which is how practitioners think about it: the same handful of signals, read in both directions. One account executive described the data points that mattered to him as the ones showing

> "which features are being used the most / how is the volume / usage peaks or drops that can indicate upsell potential or churn."
>
> — Account Executive, mid-market SaaS, public G2 review

Peaks and drops. Change, not level. An account is ready for more when its usage is pressing against what it bought: seats nearly full, a limit hit again, a team that was never in scope logging in. That pressure shows up in a handful of specific signals, never in a total.

The commercial reason to get this right: Benchmarkit's 2025 benchmarks report that expansion ARR from existing customers was a median 40% of total new ARR in calendar 2024, up from 25% in 2022, and ChartMogul's H1 2024 analysis puts expansion at 40% of growth for companies between $15M and $30M ARR. That is why the number landed on your quarter; [net revenue retention](https://gaintrace.com/explore/revenue/how-to-calculate-net-revenue-retention-b2b-saas) covers how it is measured.

## Which usage signals identify upsell opportunities in SaaS?

Each row is one signal, what to pull to measure it, the threshold we would start with, how much warning it typically gives, and the way it fools you. The thresholds are defaults to tune against your own book after a quarter, not benchmarks.

| Signal | What to measure | Default threshold | Lead time | False-positive risk and what confirms it |
| --- | --- | --- | --- | --- |
| Seat utilisation | Active users in the last 30 days over licensed seats, from the admin console or billing export. | Above 85%, or a 10-point rise against the account's own 90-day average. | Short. At 95% they are already sharing logins. | High utilisation on a plan they were pushed onto at signing is saturation, not growth. Confirm with a rising invite count or an access request in support. |
| Feature-limit hits | Times an account hit a plan cap (exports, records, storage, API rate) in 30 days, from product events or the error log. | Three or more in 30 days, or the same limit two months running. | Short to medium. The first hit is curiosity; the third is a workaround somebody maintains. | One user testing the edge, or a misconfigured integration. Confirm that more than one user hit it, or that a ticket asked how to raise it. |
| New team or department invited | New users by email domain, department field or team name against the teams named at kickoff, from the user list. | Any user whose team did not exist in the account 90 days ago. | Medium. A second team runs on the first team's seats for about a quarter. | Contractors, auditors, a one-off project. Confirm the new team is still active after 30 days. |
| API volume | Calls per month by account, and distinct keys or endpoint families in use. | Two consecutive months above 50% growth on baseline, or a new endpoint family. | Medium. Integration work precedes the process it serves by one to two months. | A backfill, a migration, a runaway script. Confirm volume holds a second month and a named engineer owns it. |
| Admin adding integrations | Integrations connected per account and when, from the integrations page or audit log. | Any new connection to a system of record (CRM, warehouse, SSO, ticketing) in 30 days. | Medium to long. Connecting SSO or the CRM is the moment a tool becomes infrastructure, and infrastructure gets budget. | An admin trying things during onboarding. Confirm it is still syncing after 30 days. |
| Executive sponsor engagement | Sponsor attendance at reviews and sponsor logins. | The sponsor attends a review they used to skip, or logs in for the first time. | Long. Sponsors show up two quarters before they sign, and the ask often comes through them. | A sponsor attending because something is wrong. Read the last five tickets before you treat it as growth. |

Only the first two rows need user-level product analytics. The rest come from a user list, an audit log and your calendar, so start there if you have no product data yet.

### Which users drive account expansion?

One of the questions that reaches this site from Google is whether there is a way to track which users drive account expansion. There is, and the answer surprises most CSMs: it is rarely the champion. The champion drives adoption. Expansion is driven by the first user from a team outside the original scope, by the admin who connects a new system, and by the person who keeps hitting a limit.

You need three columns most user exports already have: who invited each user, their team, and when they were created. Group by inviter. An account where the champion invited everyone has one advocate. An account where a user invited in month three has since invited eight people has a second centre of gravity, and that person is your expansion contact.

> "Knowing their usage and who is logging in to accomplish tasks is a huge benefit - it gives me additional contacts to reach out to when my main point of contact isn't responding."
>
> — Senior Account Executive, enterprise SaaS, public G2 review

Log the second inviter in the CRM with a role of your own naming, something like "expansion lead", so whoever covers the account next knows who is pulling the product into the organisation.

## How do I rank accounts for upsell every week?

> **The ready list:** The ready list ranks accounts by readiness rather than happiness: approaching a limit, adding a team, building a workaround for something you sell. High usage finds the accounts that like you, which is a different list from the accounts about to need more, and only one of the two closes.

The ranking is the same sweep a CSM runs for churn risk, with the signals read upward. If you already run the weekly sweep from [early warning signs of churn when your data is scattered](https://gaintrace.com/explore/retention/early-warning-signs-of-churn-scattered-data), add these six columns to the same sheet and split the list at the end.

1. **Pull three exports on Monday.** The user list with created date, inviter and team; the integrations or audit log for the last 30 days; and whatever usage export you have. Save each as a filtered view so next week is a click.
2. **Score change, not level.** One row per account per week, one column per signal. A 1 when that signal moved against the account's own 90-day baseline this month, otherwise 0. Never write the raw number in the scoring sheet; the raw number is what makes the sheet unreadable by week four.
3. **Sum, then weight by what it is worth.** Add the six columns. Multiply by 2 for accounts in your top ARR quartile, 1 for everyone else. Sort descending.
4. **Strike the accounts you must not pitch.** Run the top of the list through the do-not-pitch checklist below. Blocked accounts keep their score in the sheet so you can see when the block lifts.
5. **Take the top five, and log the outcome beside the score.** Five conversations a week fits around a full book. Record what you learned next to the flag: real, not yet, or wrong. After a quarter you will know which signals predict anything in your product and can drop the rest.

> **Decision rule:** Two signals moved inside the last 30 days: a conversation this week, with a specific observation. One signal: a CRM note and a check next month. Seat utilisation above 95%, or a hard limit that blocked work: this week regardless, because they are already paying the cost of not expanding. Anything on the do-not-pitch list: nothing, and a date to look again.

**The readiness score**

```
Readiness = (Limit proximity × 3) + (Team growth × 2) + (Manual workaround × 2) + (Champion engagement × 1)
```

Where:
- Each signal: scored 0, 1 or 2 from the definitions above, so the maximum is 16
- Weights: proximity to a limit is weighted highest because it is the one signal with a deadline the customer already feels
- Use it as: a sort order for the week, not a threshold. The top five get a conversation, the rest wait

## What does ranking four accounts from a 120-account book look like?

The sheet on a Monday, in a seat-priced product with an API and a records limit. Figures are illustrative.

> **Monday ranking:** **Account A**, $48,000 ARR, 100 seats, 91 active last month, up from 74. Six new users in three weeks, all on an "emea" mailbox suffix the original team never used, invited by a user who joined in month four. Renewal in seven months. Two signals: call this week, and call the month-four user, not the champion. **Account B**, $22,000 ARR, 25 seats, 24 active, hit the export limit six times in 30 days across three users. Renewal in 40 days. Two signals, but inside the 45-day window, so it goes into the renewal as a plan change rather than a separate pitch. **Account C**, $90,000 ARR, 400 seats, 210 active (52%). The admin connected the CRM and SSO last week and the sponsor attended the last review for the first time. Two signals, and utilisation is low. This is an adoption play: the integrations are the lever to get the other 190 seats used, and the sponsor's attendance is the moment to agree that plan. No upsell yet. **Account D**, $15,000 ARR, 20 seats, 19 active, API calls doubled month over month twice. A P1 ticket has been open nine days. Two signals, blocked. Fix the ticket, then call in two weeks with the API story.

The point of the example is Account C. Two signals fired and the answer was still not a pitch, because they were about spread and sponsorship while the capacity number said the opposite. Readiness needs pressure. Come back when utilisation crosses 80%.

## What do I say so it sounds like an observation, not a pitch?

The difference between a CSM raising an upsell and a salesperson raising one is that the CSM has seen something specific. Use it. The opener has three parts, in order: the observation from their own data, what it means for the outcome they told you they wanted, and one open question about their plan. The product and the price do not appear.

> **The opener, three variants:** **Seat utilisation.** "You had 74 people active in May and 91 in August, and six of the new users are on the EMEA team, which we never scoped. Is EMEA rolling this out on purpose, or did it spread on its own? I want them set up properly rather than sharing logins." **Feature-limit hits.** "Three people on your team hit the export cap six times last month, which usually means someone is stitching exports together by hand. What are they building? If it is the weekly board pack there is a cleaner way, and I would rather fix that than have them keep working around us." **New integration.** "I saw your admin connected SSO and the CRM last week, which is normally the point where a team decides this is a system of record. What is the plan behind that? I want to point the right resources at it."

Every variant ends with a question about intent, and the answer tells you whether the signal was real. "EMEA are just trialling it" means you learned something and pitched nothing. "EMEA are meant to be on it by Q1" means the customer opened the seats conversation themselves, and it can move to whoever prices it; [how a CSM cross-sells a second product without sounding like sales](https://gaintrace.com/explore/revenue/cross-sell-saas-customer-success-playbook) covers that handoff. Avoid the words that describe the transaction: upgrade, package, tier, SKU, promotion, discount, end of quarter. Any of them turns an observation into a pitch.

## When should I not pitch, even when the signals say yes?

The signals tell you an account has room to grow. They do not tell you it trusts you enough to hear it this week.

**Do not pitch when any of these is true**
- [ ] A P1 or an escalation is open, or was closed in the last 14 days. The customer is measuring whether you fixed it.
- [ ] The champion left, changed role or went on extended leave in the last 90 days. Find out who the advocate is first.
- [ ] Renewal is inside 45 days and pricing is not agreed. Fold the expansion into the renewal as a plan change. Two commercial conversations in one month is how renewals slip.
- [ ] Seat utilisation is high but weekly active users fell against baseline. That is contraction wearing a growth costume.
- [ ] The limit was hit by a misconfiguration or one user's script. Fix it, thank them, move on.
- [ ] The account has not reached its first value milestone. A customer without the first outcome cannot want a second one; see [time to value when onboarding is complete but the customer churned](https://gaintrace.com/explore/onboarding/time-to-value-onboarding-complete-but-churned).
- [ ] The customer announced a hiring freeze, layoffs or a reorganisation this quarter. Ask about the plan, do not propose one.

## Why do the signals fire and nothing closes?

If you have run a version of this for a quarter and the conversations go nowhere, the fault is usually in one of four places, and none of them is the signal.

- You pitched the product, not the outcome. "You are at 91% of seats" is a fact about your invoice. "EMEA are sharing logins and their activity will not show up in your reporting" is a fact about their problem. Only the second gets a meeting.
- You raised it with the champion, who cannot buy. Champions approve of you; sponsors and the new team's manager hold the budget. Use the inviter graph to find who is pulling the product in, and ask the champion for an introduction rather than a decision.
- Your plan has nothing to sell. Flat pricing, unlimited seats or a single tier means usage pressure has nowhere to go. The only expansions left are modules or services, and those are cross-sells with different moments.
- The signal was a one-off. A migration doubles API volume for two months and stops. A merger invites forty users who never log in again. This is why the sheet records outcomes: after a quarter you can see which signals preceded an expansion.

Most expansion targets we have seen handed to CSMs come without any of this: no signal list, no weekly ranking, no do-not-pitch rule, a number and a template. The number is fair, given where growth now comes from. The method has to come from somewhere, and the sweep above is the smallest version that works.

## How does GainTrace find upsell opportunities?

GainTrace connects billing, CRM, product usage and support in the first week and reads all six signals as change against each account's own baseline, so the Monday ranking runs continuously and the do-not-pitch blocks apply automatically. [Product signals](https://gaintrace.com/platform/product-signals) shows which signal moved, when, and which user drove it, and [expansion intelligence](https://gaintrace.com/solutions/expansion-intelligence) ranks the accounts where several have moved together, with the observation ready for the opener.

## Frequently asked questions

### Which usage signals tell me a B2B SaaS account is ready for an upsell?

Six, read as change against the account's own baseline: seat utilisation above 85%, three or more feature-limit hits in a month, a new team or department invited, API volume growing for two consecutive months, an admin connecting a system of record, and an executive sponsor who starts attending reviews. Two of them moving inside 30 days is the trigger for a conversation.

### Is there a way to track which users drive account expansion?

Yes, from the user list. Export users with created date, inviter and team, then group by inviter. The user who drives expansion is usually not the champion but the first person from a second team, or the admin who connects a new integration. A user invited in month three who has since invited eight people of their own is your expansion contact. Log them in the CRM.

### What predicts expansion better than usage alone?

Pressure against what the account bought, plus spread beyond the original team, plus sponsorship. Total usage measures how much they like the product. Seat utilisation, limit hits and a second team measure whether they need more of it. Sponsor engagement and new integrations measure whether it is becoming infrastructure, which is what gets budget.

### How often should I review my book for upsell opportunities?

Weekly, in the same sweep you run for churn risk, because the signals are the same ones read in the other direction. One row per account per week, one 0/1 column per signal, sorted by the sum and weighted by contract value. Five conversations a week fits around a full book. Monthly is too slow for seat and limit signals, which move inside a month.

### Should I bring up an upsell during the renewal conversation?

Fold it in as a plan change if renewal is inside 45 days, rather than running a second commercial conversation in the same month. If the signal appears earlier, raise it earlier and let the renewal absorb the outcome. Two separate asks in one month is a common reason renewals slip; see the renewal call preparation checklist for how to frame the plan change.

### How do I find upsell opportunities without a customer success platform?

With three exports anyone with admin access can pull: the user list (created date, inviter, team), the integrations or audit log, and whatever usage export you have. Score each signal 0 or 1 against the account's own 90-day baseline in one sheet, sum, sort, and take the top five each week. Log the outcome beside each flag so you learn which signals predict anything in your product.

## How this was researched

We read 3,628 public G2 reviews of the three most-reviewed customer success platforms and grouped 1,386 sentences that describe the job the software was bought to do; 102 name upsell or expansion, 27 tie it to usage in the same sentence and 50 pair it with churn risk. We then read 1,328 threads from r/CustomerSuccess, r/SaaS, r/sales and r/startups and pulled every thread on expansion signals and CS revenue targets. The six signals, thresholds, lead times, decision rule and worked example are our defaults and are illustrative rather than measured outcomes. The expansion share of new ARR is from Benchmarkit's 2025 benchmarks and ChartMogul's H1 2024 analysis.

## Sources

- [Benchmarkit, 2025 B2B SaaS Performance Metrics Benchmarks (calendar 2024 data)](https://www.hibob.com/wp-content/uploads/2025-SaaS-Performance-Metrics-Benchmarks.pdf)
- [ChartMogul, SaaS Retention: The New Normal (H1 2024 data)](https://chartmogul.com/reports/saas-retention-the-new-normal/)
- [r/CustomerSuccess: What customer success signal predicts expansion better than usage alone?](https://reddit.com/r/CustomerSuccess/comments/1tuy897/what_customer_success_signal_predicts_expansion/)
- [r/CustomerSuccess: Account expansion/upselling/cross-selling: thoughts and general advice?](https://reddit.com/r/CustomerSuccess/comments/1vgnzjb/account_expansionupsellingcrossselling_thoughts/)
- [r/CustomerSuccess: What does your actual renewal playbook look like?](https://reddit.com/r/CustomerSuccess/comments/1vte7f2/what_does_your_actual_renewal_playbook_look_like/)

## Next steps

See all six signals ranked across your book, with the user who moved each one, in the first week. [Start free](https://app.gaintrace.com/auth/login) or [book a demo](https://gaintrace.com/booking).
