How to Send Automatic Email Reminders from a Date Column in Google Sheets (2026)
A column of due dates, renewal dates or follow-ups is easy to keep in Google Sheets. Getting an email a week before each one is not built in. Here is what native features can do, then a free script that does it properly.
What Google Sheets can do natively
- Conditional formatting (Format › Conditional formatting › Custom formula) can highlight upcoming dates, for example
=AND($C2>=TODAY(), $C2-TODAY()<=7). It only helps when someone opens the sheet. - Notification settings (Tools › Notification settings) email you when the sheet is edited or a form is submitted. They don't fire because a date in a cell arrived.
- Google Calendar handles reminders well, but you'd have to copy every date across by hand or by script.
The free fix: a daily Apps Script
- Name a tab Reminders with columns: Task, Email, Due date (formatted as a date), Days before, Sent.
- Open Extensions › Apps Script, paste this, and save:
/**
* Daily email reminders from a date column.
* Columns: A Task | B Email | C Due date | D Days before (e.g. 7) | E Sent
* Set a time-driven trigger: Triggers > Add trigger > sendReminders > Time-driven > Day timer.
*/
function sendReminders() {
const sh = SpreadsheetApp.getActive().getSheetByName('Reminders');
const rows = sh.getDataRange().getValues();
const today = new Date(); today.setHours(0, 0, 0, 0);
const tz = Session.getScriptTimeZone();
for (let r = 1; r < rows.length; r++) {
const [task, email, due, daysBefore, sent] = rows[r];
if (!email || !(due instanceof Date) || sent) continue; // skip blanks and already-sent rows
const remindOn = new Date(due); remindOn.setHours(0, 0, 0, 0);
remindOn.setDate(remindOn.getDate() - (Number(daysBefore) || 0));
if (today < remindOn) continue;
if (MailApp.getRemainingDailyQuota() < 1) break; // stop before hitting the Gmail quota
MailApp.sendEmail(email,
'Reminder: ' + task + ' due ' + Utilities.formatDate(due, tz, 'MMM d, yyyy'),
task + ' is due on ' + Utilities.formatDate(due, tz, 'EEEE, MMM d, yyyy') + '.');
sh.getRange(r + 1, 5).setValue('Sent ' + Utilities.formatDate(new Date(), tz, 'yyyy-MM-dd'));
}
}
- Run
sendRemindersonce by hand to approve permissions. - In Triggers (clock icon), add a time-driven Day timer trigger, for example 7–8 am.
The Sent column is what prevents duplicate emails: once a row is sent, it is skipped. Clear the cell to send again, or use a separate column per reminder step if you want 30, 14 and 7 days (see our renewal alerts guide).
Quotas and caveats
- Daily email limit.
MailAppsends from your account and counts against a daily recipient quota, which is much lower for free Gmail accounts than for Google Workspace accounts. Google lists the current numbers on its Apps Script quotas page; the script checksgetRemainingDailyQuota()before each send. - Trigger timing. A day timer runs at some point within the hour you pick, not at an exact minute.
- Real dates only. Dates stored as text are skipped; use Format › Number › Date.
- Ownership. The trigger runs as whoever created it. If that person leaves the organisation, reminders stop.
- Permissions. The script asks to send email as you and to access your spreadsheets.
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.