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.MasterLabelThis 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 →