How to find unused SaaS subscriptions (and what to do about them)

CostLens · Apr 21, 2026 · 4 min read

Every SaaS stack has ghosts. Tools paid for and not used. Subscriptions renewed on autopilot while nobody notices. If your team has been buying software for more than a year, you have some. The question isn't whether, it's which ones.

This is a practical audit method. An hour of work for a 20-tool stack. Typically finds $500–2,000 of monthly spend that nobody will miss.

Step 01 — Start with a complete list

The audit is worthless if the list has gaps. Before you start measuring, make sure you're looking at every subscription.

Pull the last 12 months of card transactions. Flag every recurring charge. Cross-reference against whatever subscription tracker you already have. Add the things paid from employee cards and reimbursed. Expect 20–40% more than you remembered.

If you already have a current ledger (one row per sub, owner assigned, cost recorded), skip ahead.

Step 02 — Measure login activity per tool

The clearest single signal of a ghost sub: nobody logs in.

Go into each tool's admin panel. Find the user activity log, the audit log, or the "last seen" column. Most SaaS tools expose this somewhere, usually under "Users," "Members," "Team," or "Security."

What you're measuring: in the last 30 days, how many of the people with licenses actually opened the tool?

  • Zero logins in 30 days: ghost, cancel
  • Under 50% of licensed users logged in: partial ghost, downgrade candidate
  • Everyone logged in regularly: keep

Some tools don't expose login data in the admin. SSO-backed setups usually do — Google Workspace and Okta both show last-login for every connected app. Standalone tools vary. For the ones that hide it, email the vendor: "What's the 30-day active-user count on our account?" You'll get an answer or a reason they can't give one.

Step 03 — Check seat count against active users

Separate from "did anyone log in," this measures whether you're paying for more seats than you actually use.

For each tool, record: (a) number of paid seats, (b) number of active users in the last 30 days.

The ratio is what matters. Forty seats and eighteen active users means you're paying for twenty-two seats nobody uses. At $15 a seat, that's $330/mo, or $3,960 a year of pure waste on one tool.

Every hire gets provisioned. Nobody gets deprovisioned when they leave the team or stop using the tool. That's how the gap opens.

Step 04 — Check tier against features used

For each tool you're keeping, compare the tier you're on against the features you actually use.

Common patterns:

  • Paying Business tier for SSO you never configured
  • Paying Pro for "advanced analytics" nobody opens
  • Paying Team for unlimited users when you have six

Every tool has a Plans & Billing page that lists what's included at each tier. Thirty seconds per tool asking "which features do we actually use?" is enough. If the tier above yours doesn't give you anything you use, downgrading is free money you left on the table.

Step 05 — Ask the owner one question

Walk up to the person who owns each subscription. Ask the same question:

If this tool disappeared tomorrow, what would you do?

Three honest reactions:

  1. "Replace it immediately with X." Keep, or switch to X if it's cheaper.
  2. "Work around it with Y." Downgrade or cancellation candidate. The workaround exists.
  3. "I'd...think about it." Near-certain cancellation.

The first reaction is usually accurate. An owner saying "I'd think about it" is stronger evidence than any login report.

Step 06 — Sort into buckets

After the first five steps, every subscription falls into one of four buckets:

  • Keep. Active users, features used, owner says the tool is essential.
  • Renegotiate. Keeping, but the per-seat rate is out of line with your current volume. Email the account manager; they usually discount.
  • Downgrade. Partial usage. Lower tier would cover actual needs, or you have too many seats.
  • Cancel. Zero logins, or one person using it who shrugs at the "would you replace it" question.

Write one sentence per subscription: what are you doing, who owns it, when does it happen.

Step 07 — Execute cancellations first

Cancellations save more money than downgrades per unit of effort.

For each one:

  1. Export the data if there's any worth keeping.
  2. Set a calendar reminder to confirm the tool stopped charging next cycle.
  3. Cancel through the vendor's billing portal, not by emailing support.
  4. Save the cancellation email. Forward to finance.

Budget 15 minutes per tool. Most of that is exporting data. The actual cancel is two or three clicks.

Step 08 — Make it a habit

The audit is only useful if you run it again. Once a year is too infrequent; ghost subs accumulate in months, not years.

Add a quarterly "SaaS audit" task to a recurring calendar. Block 60 minutes. Use the same bucket list each time. Your goal isn't to find new cuts each quarter — it's to confirm the last quarter's cancels actually went through, and to catch the new ghosts before they're six months old and nobody remembers signing up.

For teams on 20+ tools, a dedicated tracker (CostLens, Substly, Cledara) automates the seat-vs-active report by showing the numbers next to each sub. The habit matters more than the tool, though. The best SaaS hygiene happens on teams that block 60 minutes every 90 days, regardless of what software they use to support it.

Closing

Ghost subs are not a moral failing. They're the natural outcome of buying software faster than you review it. The fix is a quarterly audit with clear criteria, and the habit of running it even when nobody's asking for budget cuts.

If you only do one thing from this post: open each SaaS admin panel this week and write down the 30-day active user count. The numbers will tell you where the next hour of your time pays the highest ROI.