Blog
PSLMay 2026 · 5 min read

What Is PSL Waste in Salesforce and How Do You Find It?

Permission Set Licenses cost $50–$75/user/month and are routinely assigned to users who never use them. In orgs with 500+ seats, this is often where the real money is.

What Are Permission Set Licenses?

Permission set licenses (PSLs) are add-on license entitlements that unlock specific Salesforce features beyond what's included in a user's base license. Common examples include:

  • Sales Cloud Einstein — AI-powered sales features, lead scoring, Einstein Activity Capture
  • Revenue Intelligence — forecasting dashboards, pipeline analytics
  • Salesforce Inbox — email integration with activity tracking
  • High Velocity Sales — sales engagement cadence tools
  • Field Service Lightning — scheduling and dispatch features
  • Identity Connect — Active Directory integration

PSLs are billed separately from base licenses. A Sales Cloud Enterprise seat runs roughly $175/user/month at list price. A Sales Cloud Einstein PSL adds another $50–$75/user/month on top of that. Revenue Intelligence can run $100+/user/month. These costs add up fast.

Why PSL Waste Is So Common

PSLs are assigned through Permission Set License Assignments (the PermissionSetLicenseAssign object in Salesforce). The assignment is typically made once, when a feature is rolled out or a user is onboarded, and then forgotten.

Unlike base licenses, PSL assignments don't automatically surface in standard license reports as “unused.” They remain assigned even when:

  • The user is deactivated
  • The user stops logging in
  • The user moves to a different role and no longer needs the feature
  • The feature was part of a pilot that ended
  • The user was offboarded but the Salesforce account wasn't cleaned up

The result: a quiet, compounding cost. At renewal, your Salesforce AE presents a utilization report showing “you're using 95% of your Einstein licenses.” What they don't show you is that 40 of those assignments belong to users who haven't logged in for six months.

How to Find PSL Waste in Your Org

The data lives in two Salesforce objects. Here's the SOQL to surface it:

SELECT
  psla.Assignee.Name,
  psla.Assignee.Username,
  psla.Assignee.IsActive,
  psla.Assignee.LastLoginDate,
  psla.PermissionSetLicense.MasterLabel,
  psla.CreatedDate
FROM PermissionSetLicenseAssign psla
WHERE psla.Assignee.IsActive = false
   OR psla.Assignee.LastLoginDate < LAST_N_DAYS:90
ORDER BY psla.PermissionSetLicense.MasterLabel

This query returns all PSL assignments where the user is either inactive OR hasn't logged in for 90+ days. Cross-reference the PermissionSetLicense.MasterLabel against your contract to get per-unit costs, and multiply by the number of wasteful assignments.

A Real Example: What This Looks Like in Practice

In a 600-seat Enterprise org audited recently, the query returned:

  • 23 Sales Cloud Einstein PSL assignments — all users inactive or 90+ days without login
  • 11 Revenue Intelligence assignments — users from a pilot that ended 8 months prior
  • 6 Salesforce Inbox assignments — users who had left the company but weren't deactivated in Salesforce

At list pricing, that was approximately $28,000/year in recoverable PSL spend — on top of the base license waste from the 74 inactive users.

The Renewal Conversation This Creates

Walking into a Salesforce renewal negotiation with this data changes the conversation entirely. Instead of being reactive (“can we get a discount?”), you can be specific:

“We have 23 Einstein PSL assignments that have been inactive for 90+ days and 11 Revenue Intelligence assignments from a pilot that ended in Q3. We need to right-size these before we sign the renewal — that's $28K/year we shouldn't be paying for.”

This is the kind of data a CFO or procurement team can act on. It's not a vague “we think we're overpaying” — it's a specific, auditable line item.

Automating the Audit

Running this query manually once is useful. Running it weekly — and getting a PDF report delivered to the right stakeholders every Monday — is what turns a one-time finding into a continuous optimization capability.

SpendReady automates exactly this. It connects to your Salesforce org via read-only OAuth, runs weekly audits across user activity, license pool utilization, and permission set assignments, and delivers a formatted report to whoever needs it: the Salesforce admin, RevOps, the CFO, or all three.

By the time your renewal conversation happens, you have 3–6 months of trend data showing exactly which PSL assignments have been dormant, for how long, and what they cost.

Run a free PSL waste audit.

Connect your org in 5 minutes. Read-only OAuth — we never write to your Salesforce org. No AppExchange install required.

Get your first audit free →