Due date reminders for Google Sheets™

Duly emails a reminder before the dates in your spreadsheet arrive, stops when you mark the row done, and keeps a log of every message it sent so you can prove it ran.

An editor add-on for Google Sheets. Free tier with no account and no card. Pro is $39 a year.


Not published yet

Duly is finished and being prepared for the Google Workspace Marketplace. This site exists now because a Marketplace listing and a Google permission screen both have to point at a working privacy policy and a support address before they can be reviewed. When the listing is live, the install link will be here.

In the meantime, everything on this site describes software that exists and has been tested — not a plan. If you want to be told when it is published, email hello@kehrandco.com.


It proves it ran

Every add-on in this category can send an email. The complaints in their reviews are never about that. They are about silence: it stopped and nobody said, I turned it off and it kept going, I asked for help and nobody answered. Duly is built around those three complaints.

A run log you can read

A plain sheet called Duly log in your own spreadsheet, newest first. One row per hourly check: when it ran, which rule, one outcome word, and how many rows were scanned, sent, skipped and failed — with the reason for each. A second sheet keeps the per-row detail for 90 days, so you can prove one particular message went out.

It is a sheet, not a dashboard: sortable, filterable, exportable, and readable by somebody who has never opened the add-on. It is there on the free tier too.

A watchdog that tells you when it stopped

Google stops a spreadsheet’s scheduled trigger without warning when an account quota is exceeded or the add-on is turned off for that document. That is the failure that turns a reminder tool into a liability.

When more than 26 hours have gone by without a check, the next run that does happen emails the spreadsheet’s owner: how long the gap was, which dates were not checked, and the most likely cause. It is written to the log too. It is not a paid feature.

Nothing sends until you have seen it

No rule can be turned on without going through Preview: the actual rendered email for the next row that would send, a table of every date, row, recipient and offset for the next seven days, and counts of everything that will not send, with the reason — unparseable dates, missing addresses, rows already past their mark, rows matching your stop condition.

Turning a rule on never back-fills. Nobody gets a hundred emails on install.

An off switch that reports back

Pause is one click from the rules list, it takes effect on the next check, and the pause is written into the log with a time. “Pause everything” is in the Extensions menu. Deleting the last rule removes the trigger.


How it works

  1. Pick the tab and the column that holds the dates.
  2. Pick who to tell: fixed addresses you type, an address column in the sheet, or both.
  3. Pick when: any of 30, 7 and 1 days before, and on the day — up to four offsets, and one send hour in your own time zone.
  4. Optionally, pick the stop condition: skip the row when a status column says “Renewed”, “Paid”, “Done”, or whatever your sheet says.
  5. Look at the preview. Then turn it on.

Two starter templates — Renewals and expiry dates and Invoices due — guess the date column, the address column and the wording from the sheet you already have, so the first rule takes about a minute.


The limits, said plainly

These come from Google Apps Script, which is what a Sheets add-on runs on. They are not negotiable and Duly does not pretend otherwise.

  • Dates are checked hourly. A time-driven trigger in an add-on fires at most once an hour, so a reminder goes out in the hour you chose. Nothing here is real time.
  • Your Google account caps the sending, not Duly. Apps Script allows about 100 email recipients a day on a consumer Gmail account and about 1,500 a day on a Google Workspace account. Duly reads the remaining quota before a run, sends the most urgent rows first, and logs the rest as deferred with the reason. It never silently sends part of a batch.
  • Mail comes from your own address. That means no domain to set up, no sender verification, and replies land with you — and it also means delivery is between your Google account and the recipient’s mail provider.
  • The watchdog reports gaps after they end. It cannot report a gap that is still open, because it needs a run to happen to notice. Duly is a reminder, not the only control on a deadline that would be seriously costly to miss.

What it does not do

Deliberately, and permanently: no workflow builder, no CRM, no project tracker, no document storage, no AI anything. No attachments, no SMS, no Slack, no recurring dates, no conditional logic beyond the single stop condition. Rules are not shared between people, on any plan.

Duly reads the columns your rule names in the one spreadsheet it is open in, and nothing else — no Drive access, no Gmail access, no Calendar access. The privacy policy lists the five permissions one at a time and what each is for.


Price

Free forever for one rule and 100 rows a check, with the run log and the watchdog included — the free tier is not a trial and does not expire. Pro is $39 a year, Team is $119 a year for up to 10 Google accounts. See what is in each plan.

Support is answered within two business days, at hello@kehrandco.com. That is a promise on the listing, so if it ever becomes impossible the listing changes before the promise breaks.