Contract management for a small team: a renewal tracker that sorts by notice date

Most small firms do not lose money on a contract because the deal was bad. They lose it because a vendor contract renewed on its own, and the one date that mattered passed without anyone looking at it. That date is the notice deadline, which falls weeks before the renewal date. ContractG describes an operations manager who tried to cancel an unused platform six weeks after the 90 day window closed and was held to another twelve months at $1,000 a month. That is a vendor's own marketing story, so read it as one author's report, not a measured rate.
This guide is contract management at the size where you do not need software: one Google Sheet with eight columns, a rule for calculating the notice deadline, four questions the owner answers at each renewal, and a weekly Slack post that lists what is due. It is written for the owner or operations generalist who signs or pays the contracts, not for a legal team.
The short version
- Track the notice deadline, not the renewal date. The deadline is the end date minus the notice period.
- Keep eight columns. One person owns each row and one backup covers that person.
- Once a week, post the rows whose deadline falls in the next 60 days, plus any whose deadline has already passed.
- For every row in that post, the owner answers four questions in the thread. Someone with the authority approves the renewal at the full term cost.
- A person sends any cancellation or renegotiation notice. The sheet and the post only make sure the decision happens in time.
Why auto renewals slip past small teams
The renewal date is the date the contract shows on its first page, so it is the date people write down. The date that decides the money sits in a cancellation clause, often deep in the document, and it is earlier. PactAlert's template guide shows the arithmetic: a contract ending January 1, 2027 with a 60 day notice period has a deadline of November 2, 2026. Miss that day and you are in the next term, even though January looks far away.
Three other things make it worse for a firm of 5 to 100 people.
- Notice periods are longer than people assume. DEV Community's renewal guide says notice periods of 30, 60 or 90 days are common, and ContractG says 60 to 90 days is typical in business agreements. A 90 day window can close before your budget review for the year has started.
- Vendors may not remind you. One Hacker News thread about ZoomInfo renewals quotes a short seller's report on small business complaints and a commenter who says customers learn of a 60 day window only after it has closed. That is one commenter's report, not data, but it matches the pattern the vendor blogs describe.
- The tracker lives in one person's head or sheet. Expiration Reminder describes a company with a spreadsheet and more than 300 vendor contracts where an insurance renewal went unprocessed after staff turnover, even though the date was in the sheet. It is vendor marketing and the numbers are unverified, but the failure is easy to recognise, because a date in a cell alerts no one.
SpotDraft's guide to contract management in Excel is blunt about the same limit: Excel does not send alerts on its own, so you have to check it on a schedule or connect it to something that reminds you. Most guides leave that connection out, so this article builds it.
The eight columns that matter at this size
The spreadsheet guides list twelve to fifteen columns. SpotDraft lists governing law, termination terms and an amendment log, which a legal team needs. At 5 to 100 people, eight columns carry the decision.
| Column | What goes in it | Why it earns a place |
|---|---|---|
| Vendor or customer | The counterparty and what the contract covers | Finds the row |
| Owner | One named person | PactAlert is right that "the team" is not an owner |
| Backup owner | A second named person | Covers leave and departures |
| End date | The date the current term ends | The base for the calculation |
| Notice period in days | From the cancellation clause | The input people forget |
| Notice deadline | End date minus notice period, calculated by the sheet | The only date you sort by |
| Annual cost | What the next full term costs | Drives who approves |
| Used for | One line on what the contract does for the firm | Makes the keep or cancel question answerable |
Add a status column (active, deciding, cancelled) if you want to filter, but those eight are the minimum. Set the sheet to sort by the deadline, soonest first, and turn rows yellow inside 30 days and red once the deadline has passed, as PactAlert's template does. Put the formula in the deadline column so nobody types it by hand: the end date cell minus the notice period cell.
Expiration Reminder recommends backup contacts for every agreement, because vacations, leave and turnover leave a sheet with no one reading it. A backup owner costs one cell.
A worked example
This one is made up. A 12 person design studio pays $1,200 a month for an analytics tool. The contract ends on March 31, 2027 and the clause says 90 days written notice to stop it renewing for another year.
- End date: 2027-03-31
- Notice period: 90 days
- Notice deadline: 2026-12-31
- Annual cost of the next term: $14,400
The studio writes down March 31 and feels safe in November. The sheet sorts the row to the top because December 31 is the date it ranks by, so the row is already in front of the owner two months before the date that matters. If the studio had tracked March 31, it would have noticed the problem on the day it could no longer be fixed.
Try Kipwise Agent free in Slack: mention it once in a thread and it does the repetitive work, with your permissions.
The four questions at each renewal
A reminder that says "contract X renews soon" produces a shrug. A reminder that asks four things produces a decision. Staged alerts at 90, 60 and 30 days, as DEV Community suggests, work best when the early one is for research and the later ones are for action. At this size, one weekly post with four questions per row does the same job with less setup.
For each row in the weekly post, the owner answers these in the thread:
- Is it used? A line on who uses it and how often.
- What is the new price? The vendor's renewal price, not last year's. You want the number before the window closes, not after.
- Is there an alternative? Even if the answer is no, asking it is what gives you something to negotiate with.
- Who approves at this amount? Use your delegation table if you have one. If you do not, our delegation of authority guide shows how to set dollar limits for each approver.
The fourth question hides a mistake. A team can approve a renewal at the monthly price because that is the number on the invoice. A $1,200 monthly subscription feels like a small spend, and one person can sign it without asking anyone. The thing you are committing to is the twelve month term, $14,400 here, which may sit in a different approval band. Approve a renewal at the cost of the whole new term, not the monthly price, because the amount you are committing to is the full term that starts once the window closes. This is a recommendation, not a rule from the sources above, and it changes only which cell you compare to your limits. If you have a purchase order process for new buying, a renewal is the same decision with a different trigger, so use the same thresholds.
What stays with a person: reading any clause you do not understand, every message to the vendor, the keep or cancel decision, and any legal question. The sheet and the Slack post do not decide anything. They make sure someone is asked while the decision can still be made.
The weekly check in Slack
A sheet only works if someone looks at it. PactAlert says so directly, and recommends a recurring reminder to check it. A reminder in someone's calendar is still one person's reminder. Put the check where the team already works instead.
With the Kipwise agent, the setup is a few messages in your ops channel. Every step that changes something waits for the asker's Approve card, which expires after 30 minutes if nobody answers it.
- Add the contract. The person who signed it asks the agent to read the contract from Google Drive and say what it states about term, auto-renewal and notice period. The agent reads Docs, PDF, Word and text files with that person's own Drive access, so it only sees what they can open. If no notice clause turns up, read the document yourself.
- Confirm and file the row. The person checks the answer against the contract. Then the agent shows an Approve card before it adds a row to the renewals sheet. The sheet calculates the deadline, so the agent never does the arithmetic.
- Schedule the weekly post. Ask the agent, in plain language, to read the renewals sheet every Monday and post the rows whose notice deadline falls in the next 60 days, each with its owner. It uses your Slack timezone. Creating the scheduled task needs approval once. Later runs post without asking again.
- Answer in the thread. The owner replies with the four answers. A plain reply in the same thread continues the conversation, so nobody has to mention the agent again.
- A person sends the notice. Cancel, renegotiate or renew, and update the row.
The agent can list your scheduled jobs and tell you what happened on earlier runs, including failures, so you can check that Monday's post actually ran. Your workspace can turn Drive and Sheets lookups and changes off, which is worth knowing if the post ever stops reading the sheet. The guide to scheduling recurring agent jobs covers how those jobs work and fail.
Include the rows that are already late
A filter that shows the next 60 days drops a row the moment its deadline passes, which leaves a silent hole in the post. Nobody sees a red row that is no longer listed.
The weekly check must also list rows whose notice deadline has already passed, because a filter that shows only the next 60 days makes a missed deadline disappear from the one place everyone is looking. Ask for two groups in the same post: rows due in the next 60 days, and active rows with a deadline before today. When the second group is not empty, you want to know the same week. Whether a late row can still be fixed is the next section.
When the deadline has already passed
First check the paperwork, then the law.
Read the clause again for how notice is given and when the term actually starts. Check whether the contract allows any exit during the renewal term. If it does not, ask the vendor in writing for a shorter term or a lower price, and expect that the answer may be no.
Then ask whether the vendor did what the law requires. A passed deadline is not always the end of the story, because some state laws require the vendor to remind you in writing before your deadline, so ask whether that notice was sent before you accept the renewal as locked. New York General Obligations Law 5-903 is one example. It covers contracts for service, maintenance or repair of property with an automatic renewal clause, and it makes the clause unenforceable against the customer unless the provider gave written notice, at least 15 and no more than 30 days before the customer's termination deadline. It does not apply when the renewal period is one month or less. Most automatic renewal laws in the US are consumer statutes, and Wikipedia's summary says a few states, including New York and Wisconsin, also regulate renewals in business contracts. Rules vary by state and by contract type, so treat this as a question to put to a lawyer, not as a way out. This article is operations guidance, not legal advice, and a lawyer decides any dispute.
Handling edge cases
- The owner leaves. The backup owner takes the row the same day, and someone updates the owner column. Add this to your offboarding checklist, because an owner column that names a former employee is a tracker that has already failed.
- The contract has no notice clause. Write "none found" in the notice column and a person reads the contract. Do not enter 0.
- The contract was amended. Update the end date and notice period in the sheet. A stale end date will not announce itself, and PactAlert lists data decay among the ways a sheet breaks.
- Several contracts with one vendor. Give each its own row. The notice deadlines are rarely the same.
- Customer contracts that renew. Use the same sheet with a flag, but note that the question changes: you are deciding whether to remind the customer or renegotiate, not whether to cancel.
- File names. If the agent cannot find a contract in Drive, a consistent file name is the first thing to fix. Our file naming guide covers a convention that makes contracts searchable.
Verify it works
Run a pilot before you trust it.
- Pick five contracts, including one you know has a long notice period, and enter them.
- Check each deadline by hand against the contract. If one is wrong, fix the notice period cell and check the formula.
- Ask the agent to list the scheduled job and confirm the first Monday post appeared in the channel with the right owners.
- Change one row's end date and confirm the next post reflects it.
- Mark one test row with a past deadline and confirm it shows up in the late group.
- Pick one real row due in 60 days and walk the four questions through to a decision.
Then watch two numbers each quarter: contracts that renewed without anyone deciding, and the number of rows where the sheet was wrong when you checked it against the contract. The first should reach zero. If the second keeps coming back, the problem is data entry, and the fix is to have the person who signs the contract enter it, not the person who finds it later.
When a sheet stops being enough
A spreadsheet suits a small number of contracts. PactAlert puts the limit at around 15 to 20, and SpotDraft at around 25 to 30 active contracts, or earlier if several teams need to edit and approve. Those are vendor opinions, and both vendors sell software, so use them as rough signals, not thresholds. Signs that you have outgrown the sheet: you have missed a deadline because you forgot to check, several people need to edit it at once, or you are spending real time hunting through PDFs for dates. This setup reads files you can already open and keeps a sheet and a schedule honest. It is not contract lifecycle management, e-signature or legal review. If you need those other things, you need dedicated software and probably a lawyer.
What to do next
Open the three contracts that cost you the most each year, find the notice period in each cancellation clause, and write the notice deadline next to each in a new sheet with the eight columns above. If your team uses the Kipwise agent, ask it in your ops channel to read one of those contracts from Drive and tell you the notice period, then check its answer against the document. That one check shows how long the job takes.



