Reminders for Google Sheets that fire from your own workbook

Gsheet CRM adds date reminders to Google Sheets through an Apps Script that lives inside your own workbook: it checks your dated columns every hour from your own Google account and emails, calendars or webhooks the right person, so a renewal is chased even when nobody has the app open.

The dates that matter are cells, not tasks

The dates a business actually loses money on are rarely follow-ups somebody remembered to set. They are columns: a contract’s Valid until, a delivery’s Promised for, a patient’s Next visit, an invoice’s Due on, a quote’s valid-until. They sit in the spreadsheet being true and being ignored, because a spreadsheet does not tell anyone anything.

A date rule fixes that. You pick a table — your leads, or any linked table — and one of its date columns, say how many days ahead to act (from the day itself up to ninety days before), which hour on your workspace’s clock, and what to do. Three actions are offered, and they are the three that work with nobody watching:

  • Email — sent from your Google account, to the row’s owner if the Staff tab has their email, otherwise to the sheet’s owner. The subject names the row and the table; the body links back to the sheet.
  • Calendar — an all-day event on the sheet owner’s Google Calendar, on the real due date, with a popup set for the lead time and the assignee added as a guest, so the alert reaches their phone natively.
  • Webhook — a row.due event to the endpoints you registered, for wiring the reminder into your own systems.

Up to twenty rules per workspace, one per date column. A rule can be switched off and kept, which is what people want when a season ends, instead of deleting and retyping it.

Why it runs inside your sheet

The reminders are not run by our servers. They are run by a small Apps Script pasted into your own workbook, on an hourly trigger that Google fires whether or not any browser tab is open. The script reads its rules from a hidden _Config tab the app writes, scans each watched column, decides what is due, acts, and records what it has already said in a hidden _CRM_State tab of the same spreadsheet.

That design is a deliberate consequence of the data boundary. Our database never learns which of your rows is due — copying every dated cell on the platform would be a second copy of everyone’s pipeline, growing forever, which is precisely what the data policy exists to prevent. It also means the mail comes from your address, with your deliverability and your Google account’s own daily sending limit, rather than from a shared sender. What the script reports back to the app is about itself, not your data: its version, how many rules it found, and whether the hourly trigger exists, so the settings screen can say “connected, last checked twelve minutes ago” instead of hoping.

Two safeguards are worth knowing. Moving a date re-arms the reminder — the state key includes the due date, so no cancellation logic is needed. And a two-day grace window means the first run after you switch this on does not email the whole team about every contract that expired in the last three years; history stays history.

The one-time setup, honestly

Because the script runs on your Google account, you install it once, by hand. The steps the app walks you through are:

  1. In the app, open Configure → Automations → Date reminders and press Copy the script. This also writes the hidden _Config tab into your sheet, so the script has its settings waiting.
  2. In your spreadsheet open Extensions → Apps Script, paste over anything there, and save.
  3. Reload the sheet. A CRM menu appears; choose Turn on date reminders and allow the permissions Google asks for.

From then on, rules you add or change in the app reach the sheet within the hour, and the same menu offers Run date reminders now for somebody who has just set a rule and wants to see it work rather than wait. If the app ships a newer script, the settings screen tells you to paste again; your rules and settings are not affected. The three ways this goes wrong — pasting into a copy of the sheet, not reloading so the menu never appears, and pressing the menu before the config tab exists — are each named on the settings card before they happen.

What it does not do

It works in days and hours, not minutes. Apps Script time triggers drift by minutes, so “three days before, at nine” is a promise the rail can keep and “ninety seconds before” is not — it is not offered. It watches date and date-time columns only; a rule on a text column would compare words to a clock and never fire. A date typed as text is accepted when it is unambiguous (2026-09-01) and skipped when it is not (01/09/2026 could mean January or September, and guessing sends a reminder eight months late). Each hourly pass acts on at most fifty items, so a misconfigured rule cannot flood a team in one go.

These are different from follow-ups, which are set on a lead from the app and delivered by our server during working hours in your timezone — the two rails are described side by side on the CRM for Google Sheets page. And for teams on Libromi Team Inbox, chat-side actions such as tagging a conversation are not available to a date rule, because a reminder firing at nine on a Tuesday has no conversation open; see the WhatsApp page for what runs beside a chat.

Questions about reminders in Google Sheets

Does the app need to be open for a reminder to fire?

No. The hourly trigger is Google’s, attached to your spreadsheet, and it runs on Google’s servers under your account. The app can be closed, and even disconnected — the script keeps working from the rules already in the sheet.

Who receives the email?

The person named in the row’s owner column, if the sheet’s Staff tab has an Email column with their address; otherwise the sheet’s owner. Mail is sent through Google from your own account, never through ours, so it arrives from an address your customers and colleagues already know.

Can I put a reminder on a quote’s valid-until date or a linked table?

Yes. Any date column on your leads table or on a linked table is a legal target — including the Valid until column that generated quotes record, so “tell me three days before a quote lapses” is one rule.

What does the app store about my reminders?

The rules — which column, how far ahead, at what hour, which actions. Never which row is due; that lives in the hidden state tab of your own workbook. When a webhook fires, the app forwards the event and records only a count.

Let the sheet do the chasing

Start a free trial, connect your sheet, add one date rule and paste the script — the renewal you would have missed gets an email from you, on time.

Start your free trial