Guide

A subscription tracking spreadsheet that survives contact with reality

Most companies track renewals in a spreadsheet, and most of those spreadsheets are fine right up until they aren’t. Here is a template worth starting from, and an honest account of the point at which it stops holding.
Last updated: 6 September 2026

Start here: the template

Nine columns. Download it, replace the six example rows with your own, and you have a working register in about twenty minutes. It opens in Excel, Numbers and Google Sheets.

Download the renewal tracking template (CSV)

Why CSV
Because it opens everywhere and nothing is hidden in it — no macros, no formulas you have to trust, no lock-in. In Google Sheets: File → Import → Upload. In Excel: just open it, then save as .xlsx if you want formatting to stick.

The columns, and why each one earns its place

The two people always leave out are Owner and Department, and they are the two that decide whether anyone ever acts on the sheet. A renewal date with no name against it is a fact nobody is responsible for.

ColumnWhat goes in it
NameWhat it is, written the way someone else would recognise it. “Adobe CC” is fine; “invoice 4471” is not.
TypeSubscription, contract, licence, warranty or asset. It changes what happens at the end of the term.
DepartmentWho the money belongs to. This is what turns a list into a budget conversation.
OwnerA named person. Not a team, not an inbox — a person.
CurrencyBecause the moment you have two, totalling the column by hand goes wrong.
AmountWhat you pay per cycle, not per month, unless the cycle is monthly.
Renewal dateThe date it renews or expires. ISO format — 2026-03-01 — so sorting works.
CadenceAnnual or monthly. Blank for things that expire once and don’t come back.
Asset tagFor hardware and warranties, the number written on the thing itself.

One column people add that they shouldn’t

A “status” column with values like active, review, chasing. It always drifts, because nobody updates it unless they happen to be in the file. The renewal date already tells you the status; a person’s name tells you who should care.

One column worth adding after a year

Last year’s price. Not this year’s — last year’s. Price creep is invisible when you overwrite the amount at each renewal, and it is the single most common way a software budget grows without anybody deciding it should.

Making a spreadsheet actually remind you

A spreadsheet can highlight. It cannot chase a person. Within that limit, two things are worth setting up:

Conditional formatting on the date column. One rule for anything inside 30 days, another for anything inside 7. In Google Sheets that is Format → Conditional formatting → “Date is before”. It gives you an at-a-glance read the moment you open the file — which is exactly the catch: you have to open the file.

A calendar entry per renewal, with the owner invited. Not an all-day event on a shared calendar, which everyone learns to ignore, but a real invitation to the named person, set for the day the decision has to be made rather than the day the money leaves.

The honest limit
Both of these notify whoever set them up, not whoever owns the renewal. If the person who built the sheet leaves, the reminders leave with them. That is not a flaw in your spreadsheet; it is what a spreadsheet is.

Where spreadsheets break

Four failures, in the order they usually arrive:

Nobody owns the file. It lives in someone’s Drive. They change roles. Six months later there are two copies with different numbers and no way to tell which is right.

The reminder reaches the wrong person. The sheet knows the renewal date. It has no way to put that date in front of the one person who can decide, repeatedly, until they decide.

History gets overwritten. Someone updates the amount at renewal, and last year’s figure is gone. You lose the ability to answer “what did this cost us three years ago?” — which is the question that wins a renegotiation.

Nobody can see their own numbers. Either everyone can edit everything, or one person is the bottleneck. There is no middle setting where a department head sees their spend and nothing else.

When to stop using one

Roughly, when either of these is true:

  • More than about twenty renewals. Below that you can hold the list in your head and the sheet is just a record. Above it, the sheet is the only record and the risk moves with it.
  • More than one person needs to see it. The moment access matters — someone should see their department, someone shouldn’t see payroll software costs — a shared file is the wrong shape.

Below both, keep the spreadsheet. It is genuinely the right tool, and we would rather say so than sell you something you don’t need yet.

Moving the sheet in, when you get there

The template above is the same format SpendRegister imports, on purpose. The nine columns are exactly its expected headers — Name, Type, Department, Owner, Currency, Amount, Renewal date, Cadence, Asset tag — so the file you have been keeping uploads as-is, one row per item, with the reminder ladder set up for each.

Rows that don’t validate are reported back to you with the reason and the row number. Nothing is silently dropped, because a register that quietly loses a line is worse than no register.

If you have not run a proper look at what you’re paying for yet, do that first — the software spend audit walks through finding everything before you commit it to a list.

Or skip the spreadsheet stage

Free for up to 10 items, unlimited users and departments on every plan, and the import takes the file you already have. If the spreadsheet is still working for you, keep it — come back when it isn’t.