Contract Tracker Template
A free contract tracker for Excel and Google Sheets that actually calculates: the notice deadline, days left, and a status that turns red before a contract renews on you. Build one, or paste the tracker you already have and see what it's missing. No signup; your contracts never leave the browser.
Build the tracker
Always included: counterparty, agreement, owner, term end, auto-renewal, renewal term, notice period and how it's counted, notice deadline, days left, status, notice method, annual value. Add:
Google Sheets: download the .xlsx, then in Sheets use File → Import → Upload. Formulas, colours and dropdowns come across. Green columns are calculated — don't type in them.
Already have a tracker? Check it
Select the table in Excel or Google Sheets — header row included — copy, and paste it here. Column names don't have to match ours; we'll work out which is which.
WORKDAY and EDATE using the same rules as our contract deadline calculator: calendar or business days, month-based notice clamped to the end of short months, and three days' transit when notice counts on receipt. The preview and the check run the same maths in your browser, so what you see is what the file does. The .xlsx is assembled on this page — no upload, no third-party script. Analytics counts the visit and how many rows were checked, never their contents.
Built and maintained by Alec Zakhary.
What a contract tracker has to include
Most templates that rank for this search are a grid with a column called Renewal date. That is the wrong headline column: the renewal date is the day on which it is already too late to cancel. What you need to see — and sort, and be alerted on — is the notice deadline, and that is derived from four other fields most templates don't have.
| Column | Why it's there |
|---|---|
| Counterparty (legal entity) | The notice has to be addressed to the contracting entity, not the brand. |
| Agreement / reference | Three contracts with one vendor is normal; the notice has to name the right one. |
| Current term ends | The renewal trigger. After an auto-renewal it moves — which is why "renewal term" sits next to it. |
| Auto-renews? · Renewal term | Whether it rolls over and for how long. A 12-month contract can renew for 24. |
| Notice period · unit | 30, 60 or 90 days — or 3 months, which is not the same as 90 days. |
| Counted in | Calendar or business days. On a 60-day notice that's roughly 25 days' difference. |
| Notice effective on | Sending or receipt. Receipt moves the deadline earlier by however long delivery takes. |
| Notice deadline | Calculated, never typed. A typed deadline is the one that goes stale when an amendment changes the notice period. |
| Notice method + address | Certified mail to a registered office is still common, and email often doesn't count. |
| Annual value · owner | Which deadlines to defend first, and whose job it is — a role, not a person. |
The stakes are not small. World Commerce & Contracting and Deloitte put average contract value erosion at 8.6% — value lost between what a contract promised and what it delivered. Renewals nobody chose are among the most visible parts of it.
The formulas, if you'd rather build it yourself
These are the formulas in the downloaded file, written with plain cell names. They work the same in Excel and Google Sheets. End is the current term end, N the notice period, and Holidays a range of public-holiday dates.
| Clause says | Notice deadline |
|---|---|
| N days' notice | =End-N |
| N business days' notice | =WORKDAY(End,-N,Holidays) |
| N months' notice | =EDATE(End,-N) — clamps to the last day of short months, so 3 months before 31 May is 28 February |
| …effective on receipt | Subtract delivery time: =End-N-3, or for business days =WORKDAY(WORKDAY(End,-N,Holidays)-2,-1,Holidays) |
| Days left | =Deadline-TODAY() |
| Status | =IF(DaysLeft<0,"Deadline passed",IF(DaysLeft<=30,"Act now",IF(DaysLeft<=90,"Decide","OK"))) |
Two details catch people out. WORKDAY with a negative number counts backwards and doesn't count the end date itself, which is what "60 business days before" means. And EDATE on a month-based notice with business-day counting can land on a weekend — wrap it as =WORKDAY(EDATE(End,-N)+1,-1,Holidays) to fall back to the previous working day. For the colours, add conditional-formatting rules on the Status column (Format → Conditional formatting in Sheets, Home → Conditional Formatting in Excel) with "text is exactly" Act now. The downloaded file has all of this already, and because it's an .xlsx, the formulas work in any language setting — you don't have to swap commas for semicolons.
Why trackers fail, and the columns that help
A tracker doesn't fail because someone chose the wrong template. It fails in four structural ways, and three of them can be made visible with a column. That's what the Record hygiene group is for:
| Failure | Column that exposes it |
|---|---|
| The owner leaves, and the context goes with them | Backup owner, and an owner that is a role |
| Contracts arrive faster than anyone enters them | Arrived via — which mailbox or person it came through, so you can see which routes never feed the tracker |
| An amendment changes a term and the sheet never hears | Amendments and Last verified against contract, with a Record check formula that flags rows nobody has checked against the signed copy in 180 days |
| Nobody opens it between renewals | No column fixes this. Deadlines have to leave the spreadsheet and land in a calendar — the checker above exports them as .ics events with a 30-day warning. |
Getting reminders out of a spreadsheet
Neither Excel nor Google Sheets will remind anyone of anything on their own. The options, from least to most effort: export the deadlines to a shared calendar (the checker above does it in one click); use a Power Automate flow on an Excel file in OneDrive or SharePoint that emails the owner when Days left crosses a threshold; or a Google Apps Script trigger that does the same in Sheets. The last two work, and break quietly when someone renames a column.
When to stop using a spreadsheet
There is no magic number of contracts. The honest signals: nobody can say whether every contract is in the tracker; the last edit was more than a quarter ago; the person who built it has left; or you've had at least one renewal nobody chose. Until then, a tracker with calculated deadlines and a calendar feed is a perfectly good system — and a free one.
Frequently asked questions
What should a contract tracker include?
One row per contract: the counterparty as a legal entity, the agreement and reference, an owner role, the current term end, whether it auto-renews and for how long, the notice period and how it's counted, whether notice is effective on sending or receipt, the computed notice deadline, the notice method and address, and the annual value.
How do I calculate a contract notice deadline in Excel?
For calendar days, =End-N. For business days, =WORKDAY(End,-N,Holidays). For notice in months, =EDATE(End,-N). If notice only counts when received, subtract a few days for delivery. Or use the deadline calculator for a single contract.
Does this contract tracker work in Google Sheets?
Yes. Download the .xlsx and import it with File → Import → Upload. WORKDAY, EDATE and TODAY behave the same, and the dropdowns and colours come across.
How do I highlight contracts expiring in 30, 60 or 90 days?
Compute a Days left column (=Deadline-TODAY()) and add conditional-formatting rules on it or on a Status column — red at 30 days or fewer, amber at 90. Base the rule on the notice deadline rather than the end date, or the colour turns red after it's too late to act.
Should I track the renewal date or the notice deadline?
The notice deadline. The renewal date is when it's already too late; the deadline is the last day you can act. Keep the renewal date, but sort and alert on the deadline.
Is my contract data uploaded anywhere?
No. The spreadsheet is built on this page and the tracker check runs in your browser. Analytics counts the visit and how many rows were checked — never what's in them.
The tracker that fills itself in
A spreadsheet only knows what somebody typed into it. SynapticRelay reads every contract that arrives in your contracts@ mailbox, extracts the parties, the term, the renewal clause and the notice period, and keeps this register for you — with the deadline on the owner's calendar and amendments linked to the contract they change.
Private beta, rolling invites. We'll email you about access — the template stays free either way, and we won't send you anything else.