Send scheduled quote follow-up emails with Gmail and Google Sheets

Go to Workflow
229 views
Built by 43 Sunsets 43 Sunsets
Created on July 28, 2026

Description

Quick overview
This workflow runs daily to read open quotes from Google Sheets, calculates how many days have passed since each quote was sent, and sends the appropriate 3-, 7-, or 14-day follow-up email via Gmail, then writes a sent date back to the sheet to prevent duplicates.

How it works
Runs every day at 9am on a schedule trigger.
Loads your business details, follow-up day offsets, and email subject/body templates from a preset configuration.
Reads all quote rows from a Google Sheets spreadsheet.
Keeps only quotes with status set to open, calculates days since sent_date, and selects the next due follow-up (day 3, 7, or 14) that has not been sent yet.
Sends a plain-text follow-up email through Gmail to each due quote’s customer using the filled template.
Updates the matching Google Sheets row (by quote_id) to stamp the corresponding followup_1, followup_2, or followup_3 column with today’s date.

Setup
Add Google Sheets credentials, select the target spreadsheet and sheet in both Google Sheets steps (read and update).
Add Gmail credentials for the mailbox you want to send follow-ups from.
Create a quotes sheet with headers quote_id, customer_name, customer_email, quote_amount, sent_date, status, followup_1, followup_2, followup_3, using sent_date in YYYY-MM-DD format and status set to open/won/lost.
Update the business details, day offsets (3/7/14), and email templates in the settings step to match your process and wording.

Additional info
Need the full quote-to-cash machine? The paid pack "Quote-to-Cash Follow-up Pro" ($19) adds what this free template deliberately leaves out: reply detection that stops the chase the moment a customer answers your latest follow-up, automatic invoice rows when you mark a quote won, and polite dunning counted from the due date - until the money lands. https://43sunsets.gumroad.com/l/quote-to-cash-followup-pro

⚠️ Known issues in this version (honest notes — fix prepared)

The "sent" stamp may not be written back to your sheet. n8n silently ignores the dynamic column key used in the "Stamp the sheet (sent)" node, so a quote that was already followed up can be picked again the next day — meaning the same follow-up can be re-sent to the same customer daily while the schedule is active. Temporary workaround: after each run, check that the follow-up column for that quote received today's date; if it's empty, fill it in manually — or disable the daily schedule and run manually until you've confirmed stamps are written.

If your n8n instance runs in a timezone west of UTC (the Americas), each follow-up can fire one day earlier than the configured offsets.

A corrected version (v1.1) — dedicated stamp-builder node and timezone-safe dates, both verified by live tests — is prepared and will be published as a template update. Updates go through re-review, so this page may be briefly unavailable when that happens.

Nodes Used (3)

Code
n8n-nodes-base.code
Gmail
n8n-nodes-base.gmail
Google Sheets
n8n-nodes-base.googleSheets