If you track deadlines in a Google Sheet (invoices, contract renewals, assignments, license expiries, task due dates), Google Sheets can email the right person before each one is due. You need one short Apps Script file and a Gmail draft. No add-on, no Zapier, no subscription.
This guide uses Sheets Deadline Reminders, a free, MIT-licensed script. Setup takes about 5 minutes.
Put headers in row 1. Two columns must be named exactly Email and Due Date. Format the Due Date column as dates (Format → Number → Date). Add any other columns you want to mention in the email:
| Name | Task | Due Date | |
|---|---|---|---|
| Ana | ana@example.com | Q3 invoice | 10/24/2026 |
| Ben | ben@example.com | License renewal | 11/02/2026 |
The script adds a Reminder Status column the first time it runs.
Code.gs and click Save.Compose a new message in Gmail and leave it in Drafts. Use {{Column Name}} for anything from the sheet:
Subject:
Reminder: {{Task}} is due {{Due Date}}Hi {{Name}},
Just a heads-up that {{Task}} is due on {{Due Date}}.
Formatting, links and attachments carry over.
Choose 📅 Reminders → Turn On Daily Reminders and type the draft’s subject line. Google asks for permission the first time. Because it’s your own unpublished script, it shows “Google hasn’t verified this app”: click Advanced → Go to (your project name) → Allow.
The script sends any reminders that are already due, then runs on its own every morning around 8:00.
Reminded <date> for <due date>, so the same deadline is never reminded twice.ERROR: ... and retried the next day.Tracking things that expire (certifications, contracts, licenses)? See expiration date reminders for a 30-day setup.
To change the 3-day window or the 8:00 run time, edit DAYS_BEFORE and RUN_HOUR at the top of the script.
Is it really free? Yes. It’s MIT licensed and runs on your own Google account. The only limit is Gmail’s daily quota: about 100 recipients a day on a personal account and 1,500 on Google Workspace (Google’s quotas).
Does my computer need to be on? No. The daily run happens on Google’s servers.
Can I send a reminder on the due date only? Set DAYS_BEFORE to 0.
Can I remind someone again for the same date? Clear their Reminder Status cell and choose Send Due Reminders Now.
How do I stop it? 📅 Reminders → Turn Off.
Get the script on GitHub · Also free: Mail Merge for Google Sheets