Software Renewal Calendar Template
Four documents and four sheets that price every unused seat and put a decision-by date on it, before the notice window closes.
Free download · No account needed
Renewal Calendar
Larkmead, 14 applications, $730,800 a year
Review opened 2 February 2026. Sorted on decision-by, which is renewal minus notice minus 45 days of lead time.
| Application | Renews | Decision by | Days | $/yr |
|---|---|---|---|---|
| Quill Notes | 18 Apr | 2 Feb | 0 | 32,640 |
| Torrent Chat Support | 20 May | 4 Feb | 2 | 18,900 |
| Aperture Sales Engage | 30 Apr | 14 Feb | 12 | 56,100 |
| Helix CRM | 1 Jul | 18 Mar | 44 | 23,940 |
| Lumen BI | 12 Jun | 28 Jan | -5 | 44,100 |
| Quanta Dashboards | 10 Apr | 25 Jan | -8 | 24,000 |
| Pica Whiteboard | 28 Mar | 12 Jan | -21 | 36,720 |
Three windows had already shut on day one
Every renewal above is still months away. Three of the decisions were not. Notice on Pica was due 12 January, so $100,360 of identified saving is held for another twelve months and nothing in the analysis was wrong.
Ranked by dollars per day of window left rather than by dollars, which moves four of the nine live rows.
A renewal calendar sorted by renewal date is already late. Seats come off at renewal and almost never mid-term, so the option to reduce expires when notice is due rather than when the contract ends. Subtract the notice period and the time it takes to decide, get a counter-quote and obtain a signature, and the date that governs the whole thing can sit months before the comfortable one in the spreadsheet.
So every row here carries a decision-by date. On the worked portfolio, 14 applications at $730,800 a year, three of those dates had already passed on the day the review opened, while every renewal was still months away. Notice on one was due three weeks earlier. That deferred $100,360 of identified saving by twelve months, and nothing in the analysis was wrong: the review simply started after the options had shut.
The other half is a definition. A licence count says a seat is assigned, and a last sign-in gets written by failed attempts and background syncs alike, so a used seat has to mean an intentional action per application. That gap is 55 seats and $48,660 a year here. Send River the invoices, the identity export and the contracts, or take the Word documents and CSV sheets blank. Whether the vendor should hold your data is a vendor risk assessment, and the notice clauses themselves sit in a renewal tracker.
What's in the pack
Application Register
Built by crossing billing against the identity provider's application list, in both directions, so each mismatch becomes a finding.
Seat Utilisation versus Paid
Paid, assigned and task-active seats per application, with the definition of use and the window recorded beside the count.
Renewal Calendar
One decision-by date per contract, ranked by value per day of window left, with the missed rows kept visible and totalled.
Functional Overlap Map
Every consolidation netted against the keeper's tier uplift and the one-time switching cost, in year one and in steady state.
What Counts as a Used Seat
The per-application definition, and why a failed sign-in generates the same timestamp as a successful one.
Renewal Playbook
The annual cadence, the four outcomes a renewal resolves to, and what to do once a window has already closed.
Consolidation Recommendation
Written for the finance partner, including the cluster that is negative in year one and is recommended against by name.
Negotiation Brief
One page for whoever sits in the call: the ask, the dates, the costed alternative, and the walk-away decided in advance.
How to use it
- 1
Open in River, or take it blank
Open the pack in River and hand it the invoices and exports, or download the Word documents and CSV sheets and work through them yourself.
- 2
Cross billing against identity
Billed and not federated, or in identity with no invoice. Each mismatch is a finding, and trials converting on a date jump the queue.
- 3
Define use, then count
One definition per application and a stated window, recorded in the sheet. The count comes after the definition, never before.
- 4
Date every finding, then work the queue
Renewal minus notice minus lead time. Sort on value per day of window remaining, and total the rows whose windows already closed.
Frequently asked questions
Is this template free?
Yes, and nothing is gated. The zip holds Word documents and CSV sheets, no account and no card. Edit with AI is the optional half: River crosses the invoices against the identity export, dates every contract and prices the idle seats. More packs in the template library.
What format are the downloaded files?
Four Word documents and four CSV sheets, zipped. Excel, Numbers and Google Sheets open the sheets directly, and the playbook, brief and recommendation open in Word or Pages. Nothing needs converting and there is no proprietary format in the download.
Why not just sort by renewal date?
Because the renewal date is not the deadline. Notice is due before it, and deciding takes time before that, so the governing date can be months earlier. On the sample portfolio three windows had closed while every renewal was still months out, which is invisible on a date-sorted list.
Can I use last login instead of a usage export?
You can, and it will understate the reclaim. Microsoft's guidance notes that a sign-in attempt writes the timestamp whether it succeeded or failed, and that background sign-ins made on a user's behalf are a separate property. On the sample that costs 55 seats and $48,660 a year.
The usage export has no usernames in it. Why?
Usage reports commonly hide usernames, display names and groups by default, so the file cannot be joined to your seat list until an administrator changes that setting. Ask before the export rather than after. The data also lags by a couple of days.
What if the contract does not state a notice period?
Do not infer one from the term length. Record it as unknown, set the decision-by date from the most conservative period elsewhere in your portfolio, and flag the row as an assumption. It usually sits in the master agreement the order form incorporates, which is what an obligation register surfaces.
Does this cover the rollout of whatever survives?
No. This ends when the renewal is signed, downgraded or served notice. Getting people onto the tool you kept is a rollout and enablement job, and what the application feeds once it is kept belongs on a stack and integration map instead. If a renewal instead raises the question of building a replacement internally, that comparison runs before this pack's decision, not after it.
Put a decision-by date on every renewal
Take the Word documents and CSV sheets blank, or open this pack in River and let it cross the invoices against the identity export first.
Edit with AI