Contract Tracker
App-neutral contract register for ownership, status, file pointers, dates, and operational notice windows. Not legal advice and not a CLM.
— Craig Major
What a contract tracker is
A contract tracker is an operational register. Each row names an owner, a closed status, the authoritative file and version, and the effective, expiry, renewal, and notice dates. Formulas can compute a notice window as a planning aid. They do not interpret a clause, prove legal notice, or renew the contract. A person still records renew, amend, or terminate.
If you still need a named approver and a version-locked decision before anything happens downstream, start with the document approval workflow. If you still need to decide what to automate first, start with document processing automation.
Who this is for
Use this when signed files already live in a shared drive, renewal dates sit in calendars or nowhere, and the team cannot point to one owner, one status, and one file version.
Prerequisites:
- One contract family for the first build, such as vendor MSAs
- A durable file pointer plus a native id or version key when the storage system provides one
- A named owner, not a shared inbox
- A written rule for what happens when a reminder gets no reply
- Fictional or approved samples before any live write
Leave these out of the first register: legal advice, clause extraction, an enforceability conclusion, automatic renewal or termination, a CLM replacement claim, e-sign send, a full approval matrix, invoice amounts, tax, PO, or payment fields, and any claim that a retention label certifies compliance.
If the job is invoice amounts, tax, PO, and payment status, use the invoice tracker. That register uses a different schema. Do not copy its money fields into this one.
If the pain is still "we cannot read the PDF," start with intelligent document processing. Extraction confidence can send a file to review. It cannot decide renewal.
How this differs from nearby jobs
| Job | What it owns | What this register does not do |
|---|---|---|
| Contract tracker | Owner, status, dates, notice window, file pointer, reminder, explicit renewal decision | Give legal advice or replace a CLM |
| Document approval | Named authority, version-locked approve / reject / request-changes, one downstream write | Live inside this spreadsheet as a full matrix |
| Invoice tracker | Amounts, tax, PO, payment readiness | Share a money schema with contracts |
| CLM software | Repository, generation, redlines, obligation analytics, vendor renewal products | Get replaced by a spreadsheet |
| E-sign | Send, sign, track, store a signed package | Treat signature-complete as a renewal decision |
DocuSign CLM, Ironclad, and PandaDoc CLM are adjacent products. Adobe Acrobat Sign is an e-sign product. This page does not rank them. Use the published implementation guide that matches your workspace: Google Sheets, SharePoint / Microsoft Lists, monday.com, Notion, Airtable, Obsidian, ClickUp, or Smartsheet. Each uses the same contract-register fields and keeps renewal decisions with a person.
Worked example
Cedar & Quay Fabrication Ltd is a fictional Toronto fabricator. Operations owns vendor MSA CTR-CQ-MSA-2024-017 with Northshore Logistics. Register row REG-CQ-2026-0914 holds the file pointer, version key, owner Avery, status active, effective 2024-10-01, expiry 2027-09-30, and a 60-day operational notice window. The obligations summary notes a quarterly business review and an insurance certificate on file. Approval status is a pointer, not the approval system.
That clean path is case 1 in the Contract Register and Renewal Template. The other six cases reuse the same contract family. They do not extract clauses or advise on auto-renewal legality.
Invoice-specific status still sits on the invoice tracker. Approval-specific authority still sits on the document approval workflow and the document approval status and role matrix.
The register workflow
- Intake. Create a row with
contract_id, counterparty, owner, and a pointer to the authoritative file. Do not treat intake as a renewal decision. - Identity. Store
file_pointer_url,file_storage_system,file_native_id, andfile_version_keywhen available. Refuseactiveif the pointer policy is unmet. - Dates. Enter effective, expiry, renewal, and
notice_window_daysfrom operations input. The sheet may computenotice_date,days_to_notice, anddays_to_expiryagainst an as-of date. - Status. Use the closed list: draft, active, pending review, notice window open, renewal decision needed, renewed, amended, expired, terminated, cancelled, duplicate, superseded, exception hold.
- Obligations summary. Write short operational notes. This is not clause extraction and not an enforceability opinion.
- Approval pointer. Record
approval_statusand an optionalapproval_request_ref. For the control system itself, stay on the document approval workflow. - Remind and escalate. Schedule a reminder to the owner. If there is no ack, notify the escalation target. Timeout holds or escalates. It does not renew or terminate.
- Stop duplicates. A second row with the same counterparty and
contract_idisduplicate. Link the canonicalregister_id. - Version the file. A material file replace needs a superseding row or an exception for a missing or stale pointer.
- Decide. A named owner records renew, amend, or terminate in
decision_note. Keep evidence of the reminder and the decision. Reminder delivery is not proof of valid contractual notice.
Notice window formulas
These formulas are planning aids. They are not legal notice, statutory interpretation, or an auto-renewal rule.
| Field | Operational formula | What a person still does |
|---|---|---|
notice_date |
expiry_date minus notice_window_days when both exist |
Confirm the window days came from operations input, not from the sheet inventing a clause |
days_to_notice |
notice_date minus the as-of date |
Decide whether to open notice_window_open |
days_to_expiry |
expiry_date minus the as-of date |
Decide whether the row is expired |
auto_renew_flag_operational |
yes / no / unknown | Treat unknown as a question for counsel out of band. The flag has no legal meaning |
On the as-of date 8 September 2026, the clean Cedar & Quay MSA uses expiry 30 September 2027 and a 60-day window. That produces notice date 1 August 2027, 327 days to notice, and 387 days to expiry. Case 2 uses a nearer expiry so the same family can show a window that is already open. Those numbers are fixture math, not a customer result.
What can run automatically, and what cannot
| Situation | Automatic action | Person required |
|---|---|---|
| Complete row with file pointer and owner | Status may stay active; day counts may update |
Owner assignment |
As-of date crosses notice_date |
Flag notice_window_open; schedule a reminder |
Owner reviews the file |
| Notice passed with no decision | Flag renewal_decision_needed |
Explicit renew, amend, or terminate |
| File pointer or version key blank on an active or decision row | Exception missing_or_stale_file_pointer |
Restore the pointer before any renewal close |
| Second row, same counterparty and contract id | Status duplicate |
Admin links the canonical row |
Actor not on the matrix sets renewed |
Exception unauthorized_status_change; revert or hold |
Register admin reviews |
| Past expiry with no decision | Status expired plus expired_without_renewal_decision |
Escalation owner |
| Reminder sent, no ack, escalation unreachable | Exception reminder_escalation_failed |
Repair the path. Do not auto-renew |
| Payment, bank-detail change, or final accounting post | Never | Entirely outside |
| Counsel opinion on auto-renewal | Never in the sheet | Out of band |
Human gates
A person keeps these decisions:
- Named owner before a row goes active
- Explicit renew, amend, or terminate
- Counsel review when the client's policy requires it
- Duplicate versus canonical row
- Missing or stale file pointer
- Unauthorized status change
- Failed reminder or escalation
- Payment release and any supplier bank-detail change
A reminder can nudge. It cannot renew. It cannot terminate. It cannot prove that contractual notice was validly delivered.
Failure paths
| Failure | Expected status | Renewal decision | Payment |
|---|---|---|---|
| Missing or stale file pointer | exception_hold + missing_or_stale_file_pointer |
Blocked | Blocked |
| Duplicate counterparty and contract id | duplicate |
No second track | Blocked |
Unauthorized status change to renewed |
exception_hold + unauthorized_status_change |
Revert or hold | Blocked |
| Expired without a decision | expired + expired_without_renewal_decision |
Escalation required | Blocked |
| Reminder or escalation failed | renewal_decision_needed + reminder_escalation_failed |
Still required; no auto-renew | Blocked |
| Notice window open, owner blank | Exception notice_window_open_no_owner |
Blocked until an owner is named | Blocked |
| Access test fail on the file pointer | Exception access_test_failed |
Blocked until access is restored | Blocked |
| Any payment or bank-detail change | Forbidden | Forbidden | Forbidden |
Test cases
The seven Cedar & Quay cases are operational fixtures. They are not customer stories and they do not measure accuracy.
| Case | Input | Without the control | After the control |
|---|---|---|---|
| Clean active | CTR-CQ-MSA-2024-017, pointer present |
Dates in a calendar only | active, no exception |
| Approaching notice | Same family, nearer expiry | Silence treated as renewal | notice_window_open, reminder to Avery, escalate to Riley |
| Missing pointer | Active row, blank file or version | Renewal closed on a missing file | missing_or_stale_file_pointer; decision blocked |
| Duplicate | Second Northshore + same contract id | Two renewal tracks | duplicate; canonical REG-CQ-2026-0914 continues |
| Unauthorized change | Teammate marks renewed |
Silent success | Exception, revert or hold |
| Expired, no decision | Expiry 15 August 2026 | Row forgotten | expired plus escalation |
| Failed handoff | Reminder sent, Riley unreachable | Timeout treated as renew | reminder_escalation_failed; decision still open |
The Contract Register and Renewal Template walks each case on its own sheet.
What to measure
Record rows with a file pointer and version key, active rows with an owner, notice-window rows with a scheduled reminder, blocked unauthorized status changes, suppressed duplicates, expired rows with an explicit renewal decision, and hours from reminder to ack. Put your numbers in the workbook. Keep them as operational counts, not as a savings, accuracy, or ranking result.
There is no live production contract-tracker metric here, and no Flowgrammer customer case.
How to use the register template
The paired asset is an editable workbook, not a marketplace template, not a CLM, and not legal advice.
- Open Instructions and read the legal-boundary disclaimer.
- Confirm the shared field list and the closed status model.
- Fill RolesAuthority. External counterparties cannot flip terminal decisions.
- Walk Case01 through Case07. Confirm case 3 blocks renewal and case 7 does not auto-renew.
- Answer the access, security, and retention questions. Questions are not certification.
- Choose the implementation that matches your workspace: Google Sheets, SharePoint / Microsoft Lists, monday.com, Notion, Airtable, Obsidian, ClickUp, or Smartsheet. Each reuses this field dictionary.
SharePoint library work stays on SharePoint document processing when the file lives there. Do not replace this register with a SharePoint-only approval workbook.
Realistic limitations
- A reminder email is not proof that contractual notice was validly delivered.
auto_renew_flag_operationalis an operations flag. It does not mean the clause is enforceable.- Google sheet or range protection is not a security measure. People can still copy, print, or export a copy.
- Airtable attachment download URLs expire. Do not treat an attachment CDN link as the sole durable contract file pointer.
- Notion Date reminders exist. Recurring reminders are not currently available in Notion Help, and version-history depth is plan-dependent.
- Power Automate can set a personal reminder on a SharePoint or Lists DateTime column. That flow is not available in GCC or sovereign clouds, and it is not legal notice.
- This guide does not rank CLM or e-sign vendors, and it is not a Google, Microsoft, Notion, or Airtable product walkthrough.
Next step
Download the Contract Register and Renewal Template and fill the owner, dates, file pointer, and seven cases.
If owners, notice windows, or the destination register are still unclear, start with an AI Success Audit. If one contract family, named owners, and one register destination are already defined, book a fit call to scope an AI Automation Systems build.
Sources
- Flowgrammer, "Document Processing Automation: What to Automate First", Flowgrammer, accessed 2026-09-08, /insights/document-processing-automation
- Flowgrammer, "Document Approval Workflow", Flowgrammer, accessed 2026-09-08, /insights/document-approval-workflow
- Flowgrammer, "Invoice Tracker: Fields, Status & Approval", Flowgrammer, accessed 2026-09-08, /insights/invoice-tracker
- Flowgrammer, "Invoice Processing Automation: Workflow & Test Pack", Flowgrammer, accessed 2026-09-08, /insights/invoice-processing-automation
- Flowgrammer, "Intelligent Document Processing (IDP): How It Works", Flowgrammer, accessed 2026-09-08, /insights/intelligent-document-processing
- Flowgrammer, "SharePoint Document Processing Automation", Flowgrammer, accessed 2026-09-08, /insights/sharepoint-document-processing-automation
- Google, "Protect, hide & edit sheets", Google Docs Editors Help, accessed 2026-09-08, https://support.google.com/docs/answer/1218656
- Google, "Collaborate in Google Sheets", Google Docs Editors Help, accessed 2026-09-08, https://support.google.com/docs/answer/9331169
- Notion, "Set reminders in Notion", Notion Help, accessed 2026-09-08, https://www.notion.com/help/reminders
- Notion, "Delete & restore content in Notion", Notion Help, accessed 2026-09-08, https://www.notion.com/help/duplicate-delete-and-restore-content
- Airtable, "Airtable attachment URL behavior", Airtable Help, accessed 2026-09-08, https://support.airtable.com/docs/en/airtable-attachment-url-behavior
- Microsoft, "Enable and configure versioning for a list or library", Microsoft Support, accessed 2026-09-08, https://support.microsoft.com/en-us/office/enable-and-configure-versioning-for-a-list-or-library-1555d642-23ee-446a-990a-bcab618c7a37
- Microsoft, "Create a reminder flow in Power Automate for SharePoint items", Microsoft Learn, accessed 2026-09-08, https://learn.microsoft.com/en-us/power-automate/create-sharepoint-reminder-flows
- Docusign, "Contract Lifecycle Management Software | Docusign CLM", Docusign, accessed 2026-09-08, https://www.docusign.com/products/clm
- Ironclad, "Ironclad CLM Platform", Ironclad, accessed 2026-09-08, https://ironcladapp.com/product/
- PandaDoc, "Contract Lifecycle Management (CLM) overview", PandaDoc Help, accessed 2026-09-08, https://support.pandadoc.com/en/articles/15419844-contract-lifecycle-management-clm-overview
- Adobe, "Acrobat Sign", Adobe, accessed 2026-09-08, https://www.adobe.com/acrobat/business/sign.html
Frequently asked questions
What is a contract tracker?
It is an operational register for ownership, status, file pointers, dates, and notice windows so a person can record an explicit renew, amend, or terminate decision.
Is a contract tracker legal advice?
No. The register does not interpret clauses, decide enforceability, or replace qualified counsel.
Do notice-window formulas prove legal notice?
No. They are planning aids. Reminder delivery is not proof of valid contractual notice.
Does this replace a CLM or e-sign product?
No. A spreadsheet or workspace register tracks the row. CLM and e-sign products do different jobs. Signature-complete is not a renewal decision.
Is this the same as document approval?
No. Approval status is a pointer. Named authority, version-locked decisions, and one downstream write stay on the document approval workflow.
Can I reuse an invoice tracker for contracts?
No. Invoice registers own amounts, tax, PO, and payment status. Mixing those fields hides the contract job.
What happens if a reminder gets no reply?
Escalate or hold. Do not auto-renew or auto-terminate from silence.