Salesforce Renewal Negotiation: How to Get a Better Deal in 2026
Your Salesforce AE has a quota, a playbook, and a timeline. You need the same thing — except yours should be built on 90 days of usage data, not 90 days of urgency.
TL;DR: Most companies overpay on Salesforce renewals because they negotiate from gut feeling instead of data. Pull 90 days of LoginHistory, calculate your org-level license gap (purchased vs. average active seats), audit PSL waste on premium add-ons like Agentforce and Einstein, and bring a dollar figure to the table before your AE does. The team that sets the anchor wins the negotiation.
Salesforce renewals are not sales conversations. They're retention conversations — and that distinction matters. Your AE's job is to keep your contract value flat or growing. Your job is to make sure every dollar on that invoice maps to a seat someone actually uses.
After the August 2025 list-price hike (Enterprise to $165/user/month, Unlimited to $330), the gap between what companies pay and what they actually need has gotten wider. The companies that walk into renewal meetings with data get better deals. The ones that don't get auto-renewed at list price plus the annual uplift.
Here's how to be the first kind.
Start at T-90: The Data Collection Phase
Salesforce AEs typically initiate renewal conversations at T-60 (60 days before your contract end date). If you start preparing at T-60, you're already reactive. Start at T-90.
Pull your inactive user count
This is the headline number. Query every active user who hasn't logged in for 90+ days:
SELECT Id, Name, Username, LastLoginDate,
UserLicense.Name, Profile.Name
FROM User
WHERE IsActive = true
AND (LastLoginDate < LAST_N_DAYS:90
OR LastLoginDate = null)
ORDER BY LastLoginDate ASC NULLS FIRSTBe careful with this number. Not every inactive user is a negotiation chip — some are system accounts, integration users, or people on extended leave. Filter out usernames that match your org ID pattern (the @00d... format) and known service accounts like “Automated Process” or “Security User.” What remains is your genuine idle-seat count.
Calculate your org-level license gap
This is the number your AE doesn't want you to have. It's the difference between how many licenses you purchased and how many your org actually uses on average.
A single-day snapshot — the kind Optimizer and Org Check produce — is too noisy — it catches vacation weeks, quarter-end spikes, and seasonal patterns. What you need is the average active seat count across 90+ days of LoginHistory. Count distinct users with at least one login per week, average it across your measurement window, then compare against your purchased seat count.
If you have 247 purchased Enterprise licenses and your 90-day average active count is 95, you have a 152-seat gap. At $165/month, that's $25,080/month in licenses nobody is using. That number is your opening position.
Why averages beat snapshots: Your AE will push back on a single-day count (“that was a holiday week”). A 90-day average across multiple audit snapshots is much harder to dismiss. It shows a sustained pattern, not a fluke. Tools like SpendReady track this automatically across every audit run, giving you trend lines instead of one-off reports.
The PSL Audit: Where the Hidden Money Is
Permission Set Licenses are premium add-ons — Agentforce at $165/month, Einstein at $50/month, Revenue Intelligence at $200/month. They're assigned per-user, and they're frequently assigned to users who never activate them.
Run this query to find PSL assignments on inactive users:
SELECT
psla.Assignee.Name,
psla.Assignee.IsActive,
psla.Assignee.LastLoginDate,
psla.PermissionSetLicense.MasterLabel,
psla.PermissionSetLicense.TotalLicenses,
psla.PermissionSetLicense.UsedLicenses
FROM PermissionSetLicenseAssign psla
WHERE psla.Assignee.IsActive = true
AND (psla.Assignee.LastLoginDate < LAST_N_DAYS:90
OR psla.Assignee.LastLoginDate = null)Every PSL assigned to an inactive user is waste. If you have 15 Agentforce licenses assigned to people who haven't logged in since onboarding, that's $2,475/month your org is paying for software nobody touches.
The tricky part: credit-based SKUs like Data Cloud and MuleSoft don't have simple per-seat pricing. Track consumption trends instead — if your Data Cloud credits are consistently underutilized, that's a negotiation lever even without a clean dollar amount.
Build Your Negotiation Packet
Your AE will arrive with a renewal quote, a discount schedule, and a multi-year incentive. You need to arrive with something equally structured. Here's what belongs in your packet:
1. The one-page savings summary
This is the document that sets the anchor. It should contain four numbers:
- Inactive seats: Count of users with no login in 90+ days, multiplied by per-seat cost
- Org-level license gap: Purchased seats minus average active seats, multiplied by per-seat cost
- PSL waste: Premium add-ons assigned to inactive users, with per-SKU pricing
- Total estimated monthly savings: The sum — this is your headline
Format it for the CFO, not the admin. Annual numbers, not monthly. “We identified $301,000 in annual Salesforce spend on licenses and add-ons that are not being used” lands differently than “we have 152 inactive users.”
2. The trend chart
A single audit is an opinion. A trend line is evidence. If you've been running weekly audits for 8–12 weeks, you have a usage pattern that shows your active seat count is consistently 40–60% of purchased. That's not a one-time cleanup opportunity — it's a structural over-purchase.
Plot active users per week against your purchased license count. The gap between those two lines is your negotiation territory.
3. The security findings
This is your “we're serious about governance” signal. Include integration accounts with UI login sessions (they should be API-only), stale OAuth tokens older than 180 days, and orphaned auth sessions. These don't save money directly, but they demonstrate that you're running a disciplined org — which changes the tone of the conversation from “we want to pay less” to “we're optimizing our Salesforce investment.”
Five Tactics That Actually Work at the Table
1. Set the anchor first
Send your savings summary to your AE before the first call. Whoever sets the first number controls the negotiation frame. If your AE opens with a 5% discount on renewal, the conversation is about their 5%. If you open with “we've identified $301K in unused licenses,” the conversation is about your data.
2. Negotiate seats separately from add-ons
AEs bundle everything into one line item. Unbundle it. Your core license count is one conversation. Your PSL add-ons (Agentforce, Einstein, Revenue Intelligence) are separate. This prevents them from hiding add-on price increases inside a “flat renewal.”
3. Use the price hike as leverage
The August 2025 list-price increase means your existing contract rate is below current list. Your AE will position renewal at list as a “normal adjustment.” Counter with: “We're reducing seat count by X. The per-seat rate stays at our current contracted rate, not the new list.”
4. Resist the multi-year lock
AEs will offer 10–15% discounts for 3-year commitments. Run the math: if you're overpaying by 30–40% on unused seats, a 15% discount on a 3-year lock still costs more than right-sizing annually. The only scenario where multi-year wins is when your seat count is genuinely stable and growing.
5. Bring the CFO into the room
Not literally — but CC them on the pre-call email with the savings summary. When your AE knows Finance has seen the numbers, the conversation shifts from “let me see what I can do” to “let's find a structure that works.”
The Timeline: What to Do and When
| When | Action |
|---|---|
| T-90 | Start weekly usage audits. Pull LoginHistory, UserLicense, PSL data. |
| T-75 | First savings estimate. Identify license gap and PSL waste. |
| T-60 | AE reaches out. You already have 4+ weeks of trend data. |
| T-45 | Send savings summary to AE before first meeting. Set the anchor. |
| T-30 | Negotiate specifics: seat reductions, PSL removals, rate locks. |
| T-14 | Final terms. Loop in legal/procurement for contract review. |
| T-0 | Sign. Then set a calendar reminder for T-90 next year. |
What Most Companies Get Wrong
The biggest mistake isn't overpaying — it's not knowing they're overpaying. Salesforce doesn't send you a utilization report. Optimizer was retired. Org Check gives you a snapshot, not a trend. Without historical data, you're guessing.
The second biggest mistake is starting too late. At T-30, you're reacting. At T-90, you're prepared. The difference between those two positions is typically 15–25% of contract value.
Stop guessing. Start measuring.
SpendReady runs automated Salesforce audits that track inactive users, license gaps, PSL waste, and security findings across every audit run — giving you the trend data and savings estimates you need to negotiate from strength.
Connect your Salesforce org and get your first audit report in under 5 minutes.