How to Get Contract Renewal & Expiration Alerts from Google Sheets (2026)
Auto-renewing contracts usually hide the date that matters: the notice deadline, often 30 to 90 days before the renewal date. Here is how to track it in Google Sheets and get emailed in time.
Step 1: columns that capture the notice window
| Column | Example | Formula |
|---|---|---|
| A Contract | CRM subscription | |
| B Owner email | ops@example.com | |
| C Renewal date | 2027-03-01 | |
| D Notice days | 60 | |
| H Notice deadline | 2026-12-31 | =C2-D2 |
| I Days left | 56 | =H2-TODAY() |
| J Status | Act now | =IFS(I2<0,"Notice missed",I2<=30,"Act now",I2<=60,"Review",TRUE,"OK") |
For a renewal a year after a start date, use =EDATE(StartDate, 12). For terms that renew every year, the next renewal from a start date in B2 is =EDATE(B2, 12*(DATEDIF(B2, TODAY(), "Y")+1)).
Step 2: highlight what's coming up
Select the data, open Format › Conditional formatting, choose Custom formula, and add =$I2<=30 in red and =$I2<=60 in amber. Sort or filter by Days left for a weekly review.
Step 3: email alerts at 60, 30 and 7 days
Name the tab Contracts, leave columns E–G empty as "Sent" markers, paste this into Extensions › Apps Script, and add a daily time-driven trigger:
/**
* Multi-step renewal alerts (e.g. 60, 30 and 7 days before).
* Columns: A Contract | B Owner email | C Renewal date | D Notice days | E Sent 60 | F Sent 30 | G Sent 7
*/
const STEPS = [60, 30, 7];
function renewalAlerts() {
const sh = SpreadsheetApp.getActive().getSheetByName('Contracts');
const rows = sh.getDataRange().getValues();
const today = new Date(); today.setHours(0, 0, 0, 0);
const tz = Session.getScriptTimeZone();
rows.slice(1).forEach((row, i) => {
const [name, email, renewal, notice] = row;
if (!email || !(renewal instanceof Date)) return;
const deadline = new Date(renewal); deadline.setHours(0, 0, 0, 0);
deadline.setDate(deadline.getDate() - (Number(notice) || 0)); // last day to give notice
const daysLeft = Math.round((deadline - today) / 86400000);
STEPS.forEach((step, s) => {
const col = 5 + s; // E, F, G
if (daysLeft <= step && daysLeft >= 0 && !row[col - 1]) {
MailApp.sendEmail(email, `${name}: notice deadline in ${daysLeft} days`,
`${name} renews on ${Utilities.formatDate(renewal, tz, 'MMM d, yyyy')}. ` +
`To cancel or renegotiate, give notice by ${Utilities.formatDate(deadline, tz, 'MMM d, yyyy')}.`);
sh.getRange(i + 2, col).setValue(new Date());
}
});
});
}
Each step is stamped with the date it was sent, so no alert repeats. When a contract renews, update the renewal date and clear E–G.
Caveats
- Emails come from the account that owns the trigger and count against its daily Gmail quota (see Google's quotas page).
- If a step is missed (the trigger was off), the script catches up only while days left is still at or below that step and not negative.
- A spreadsheet is not a contract management system: no clause tracking, approvals or audit trail. For a small team's subscriptions and vendor contracts, it's often enough.
Simpler one-date reminders: email reminders from a date column.
See SheetReminders
Short on time? Watch the 50-second version
Related Google Sheets guides
- How to generate a PDF or Google Doc for each row in Google Sheets
- Best Autocrat alternatives for mail merge to PDF and Docs
- Make invoices or certificates from Google Sheets rows
- Create sales quotes or estimates from Google Sheets
- Generate receipts from Google Sheets rows
- Create purchase orders from Google Sheets
- Make packing slips from Google Sheets orders
- Generate a PDF certificate from a Google Form response
- Issue numbered training completion certificates with expiry dates
- Make a PDF progress report for each student
- Generate offer letters from a Google Sheets hiring tracker
- Email each row’s PDF as an attachment
- Automatic email reminders from a date column
- Contract renewal and expiration alerts from Google Sheets
- Track certificate of insurance (COI) expirations in Google Sheets
- Track employee license and certification expirations
- Track equipment and vehicle maintenance with reminders
- Track warranty expiration dates with reminders
- Birthday and work anniversary reminders from Google Sheets
- Rent due and lease renewal reminders from Google Sheets
- Send invoice payment reminders from Google Sheets
- Highlight overdue tasks and send email reminders
- Follow-up reminders for leads, clients and candidates
- Membership renewal reminders for clubs and associations
- SheetWeave vs Autocrat
- SheetWeave vs Document Studio
- SheetWeave vs RowDocs
Third-party details come from each vendor's own site and Google Workspace Marketplace listing, checked November 5, 2026. Not affiliated with Google, New Visions, Digital Inspiration, Tofu Labs or any other vendor named here. Google Sheets, Google Docs and Google Drive are trademarks of Google LLC. Features and prices change, so verify before you buy. Questions or corrections: hello@loomwise.app.