Contract renewal tracking
Activated Cloud✓ Officialactivated/contract-renewal-tracking
Free · MIT
About
Builds and keeps a register of every supplier contract and subscription with end dates, auto-renewal terms, notice deadlines, value and price-increase terms, finds untracked subscriptions in bank and card statements, sets reminders against the notice deadline rather than the end date, and prepares a renew, renegotiate, replace or cancel brief for each renewal. Use when the owner wants control of contracts, a renewal or price rise lands, or spend needs cutting. Not for choosing a new supplier: use vendor-selection.
Documentation
Contract renewal tracking
You make sure the business never renews a contract by accident, never misses a cancellation window, and never pays for something nobody uses. The register is complete (including the subscriptions nobody remembers signing up to), every date is calculated from the contract's own wording, reminders fire early enough to act, and each renewal gets a short brief with a recommendation. The owner decides and sends any notice; you never cancel, renew or accept terms yourself.
When to use
- "What contracts do we have and when do they renew?"
- "Did we miss the cancellation date for the cleaners?"
- "Our CRM is putting the price up 7%, what should we do?"
- "Find all our subscriptions, I think we're paying for stuff we don't use."
- Monthly: run the register check with
cronjoband report what is coming up.
What you need
- The contracts themselves (PDFs, signed order forms, online terms accepted at sign-up): from the shared drive or email if connected on the Connections page (Google Drive, Gmail, Outlook, Dropbox), your own browser signed in by the owner, or files the owner gives you.
- Bank and card statements for the last 12 months, to find recurring charges (accounting software as a connected app, the bank's website in your own browser with read-only use, or exports).
- For each contract, the business owner (who uses it) and usage data where the service has it (seats used, volumes).
- If none of these is available, ask with
clarifyfor the specific documents.
Method
- Find everything. Start from the contract files, then sweep 12 months of bank and card payments for recurring charges (same payee, similar amount, at least 3 times, or annual charges) that are not in the register. Each one is either a contract to add or a subscription to question. Code in
references/register-and-alerts.md. - Extract terms from the document, with clause references: parties, service, start date, initial term, renewal mechanism (automatic or not, renewal length), notice period and how notice must be given (in writing, by email to a named address, through a portal, received by a date), price and increase terms (fixed, capped, index-linked), minimum commitments, termination rights and fees, data return on exit. Quote the clause number for each. If wording is ambiguous ("90 days before the renewal date": calendar or business days, sent or received?), mark it for the owner or a solicitor rather than picking an interpretation.
- Calculate the dates with
execute_code: current term end (rolling forward through automatic renewals), notice deadline = term end minus the notice period, and days remaining. Where notice must be received, allow for delivery time. Use the strictest reasonable reading and say so. - Set alerts on the notice deadline, not the end date: 90, 60 and 30 days before it, using
cronjob, plus a final alert 7 days before. Record each in the register. - For each contract approaching its 90-day alert, prepare a renewal brief (template in the reference):
- Usage versus what is paid for (seats used, volume vs commitment). Unused seats are the quickest saving.
- Cost now and after the proposed or contractual increase; total over the next term.
- Performance: service levels met, incidents, complaints, from the users.
- Market check: two or three alternatives with indicative prices from
web_search, and switching cost. - Options: renew as is, renegotiate (fewer seats, longer term for a lower price, cap the increase, better terms), replace (start vendor-selection now if the notice window allows), or cancel.
- Recommendation and the deadline for the decision.
- Draft the notice or negotiation email when the owner decides, using the method the contract requires. The owner sends it (or approves you sending it from their mailbox, which you do only with their explicit go-ahead), and keeps proof of sending and receipt.
- Update the register after every decision: new term, new price, new dates, alerts reset. Archive old contracts with their dates.
- Report monthly: contracts with notice deadlines in the next 90 days, total annual contract value, savings achieved, subscriptions found and their status.
Worked example: dates from the clause
Hosting contract: start 1 Nov 2024, 12-month initial term, automatic 12-month renewals, "either party may terminate by giving not less than 90 days' written notice to notices@
- Term end: 31 Oct 2025, rolled forward through one automatic renewal to 31 Oct 2026.
- Notice deadline: 31 Oct 2026 minus 90 days = 2 Aug 2026. "Not less than 90 days" makes 2 Aug the last safe day; aim earlier and keep the vendor's confirmation of receipt.
- Alerts set for 4 May, 3 Jun, 3 Jul and 26 Jul; the renewal brief is due with the first.
- Flagged, not resolved: the clause does not say whether the days are calendar or business days, so the strictest reading (calendar) is used and the owner is told. The date code is in
references/register-and-alerts.md.
Renewal brief in practice
- Usage: 25 seats paid for, 17 active in the last 60 days.
- Cost: 3,600 a year now; the increase per clause 5.3 would be 5.2% (RPI 3.2% plus 2%), so 3,787 next term.
- Performance: two outages in the year, both inside the service-credit terms; users rate it fine.
- Market: two alternatives at 2,900 and 3,300 a year for the same tier (sources listed); switching would cost about 1,500 in staff time plus a week of parallel running. Options:
- Renew as is: 3,787.
- Renegotiate to 18 seats on a 2-year term with the increase capped at 3%: about 2,750, saving about 1,000 a year.
- Replace: saves 500 to 900 a year after the switching cost, breaking even in year 2.
- Cancel: not viable, the service is in daily use. Recommendation: renegotiate. The vendor has room, and switching cost eats most of the saving from replacing. Decision needed by 26 Jul, a week before the deadline.
Negotiation levers (for the owner to use)
- Fewer seats or a lower tier, matched to measured usage.
- A longer term in exchange for a lower price or a capped increase.
- Removing auto-renewal, or shortening the notice period.
- Service credits that bite, with a clear measure.
- A price match against a written alternative quote.
- Moving the renewal date to the business's quiet season. Ask for the vendor's offer in writing before the notice deadline, and never let the deadline pass while talks continue: the owner can send protective notice and withdraw it if a deal is reached.
Output
contract-register.xlsx: Register (vendor, service, business owner, start, term, auto-renew, renewal term, notice period and method, current end, notice deadline, days left, alert status, annual value, currency, price terms, clause references, file link, decision, decision date), Untracked charges, Renewal briefs index, Change log.- One renewal brief per contract in its window.
- A
show_card: notice deadlines in the next 90 days, with value and recommendation.
Checks before you finish
- Every recurring charge in the bank sweep is either in the register or on the untracked list with a question.
- Every date is calculated from the contract's clause, with the clause number recorded.
- Ambiguous notice wording is flagged, not resolved by assumption.
- Alerts exist for 90, 60, 30 and 7 days before each notice deadline.
- Annual values in the register agree to what the bank statements show being paid.
- No notice, cancellation or acceptance has been sent without the owner's go-ahead.
Pitfalls
- Tracking end dates instead of notice deadlines. By the end date it is usually too late.
- Assuming notice by email is valid. Many contracts require a specific method or address.
- Missing online terms accepted with a click: they are contracts too, usually auto-renewing.
- Interpreting legal wording yourself. Summarise, cite the clause, and flag for review.
- Renewing for the same seat count by default. Check usage every time.
- Cancelling something still in use. Confirm with the business owner of the service first, and check data export before the service ends.
See also
- vendor-selection, purchase-requests, supplier-payment-run (finance).
Versions
Listed from the source repository.
Reviews
No reviews yet. Be the first.
