Blog · · 4 min read

Automatic quote follow-ups with n8n and Google Sheets (stop losing customers)

How to build an n8n workflow that reminds customers about quotes they haven't answered, after 3 and 7 days, using a Google Sheets list. Step by step, with email templates.

You send a quote, the customer says "I'll look at it and get back to you", and you never hear from them again. Often it isn't a "no": they simply forgot, or put it off. A friendly reminder at the right moment is usually enough to reopen the conversation, but doing it by hand for every quote is exactly the kind of task that never gets done.

In this guide we build an n8n workflow that handles that follow-up for you, using a Google Sheets spreadsheet as your list of quotes.

How it works, in one sentence

Every morning, n8n checks your quotes sheet, finds the ones still open after 3 or 7 days and sends each customer a short email asking whether they have any questions.

When the customer accepts or declines, you change the status in the sheet and the workflow stops writing to them.

What you need

  • A running n8n (if you don't have one yet, see how to install n8n for free with Docker).
  • A Google Sheets spreadsheet to log your quotes.
  • A Gmail account (or any SMTP server) to send the reminders.

Step 1: set up the quotes sheet

Create a sheet with these columns, one row per quote:

id | customer | email | item | amount | sent_date | status | reminders
  • sent_date: the day you sent the quote, in YYYY-MM-DD format.
  • status: open, accepted or declined.
  • reminders: how many reminders have been sent so far (starts at 0).

If quote requests come in through your website, you can have them logged automatically with the lead qualification workflow with n8n and AI.

Step 2: the trigger, once a day

Add a Schedule Trigger node that runs Monday to Friday at 9:00. A reminder that lands first thing on a working day is far more likely to be read than one sent late on a Sunday.

Step 3: read the open quotes

Add a Google Sheets node that reads rows and filters on status = open. That way the workflow never writes to someone who has already answered.

Step 4: decide who gets a reminder

A Code node works out how many days have passed since the quote went out and whether it's time for the first or second reminder:

const today = DateTime.now().setZone('America/New_York').startOf('day');
return $input.all().flatMap(item => {
  const q = item.json;
  const days = Math.floor(today.diff(DateTime.fromISO(q.sent_date), 'days').days);
  const reminders = Number(q.reminders || 0);
  let step = null;
  if (days >= 3 && reminders === 0) step = 1;
  else if (days >= 7 && reminders === 1) step = 2;
  return step ? [{ json: { ...q, days, step } }] : [];
});

Change the time zone to your own. With two reminders at most, the follow-up stays helpful without becoming pushy.

Step 5: the reminder email

With a Gmail (or Send Email) node, send a different message depending on the step. Two examples:

First reminder (day 3) Subject: Any questions about the {{item}} quote?

Hi {{customer}}, I'm following up on the quote I sent on {{sent_date}}. If you have any questions or want to adjust anything, just reply to this email and we'll sort it out.

Second reminder (day 7) Subject: Last reminder: your {{item}} quote

Hi {{customer}}, I don't want to keep chasing you. If now isn't a good time, no problem; if you're still interested, reply and we can get it wrapped up this week.

Write them in your usual voice: the customer should feel a person is writing, not a system.

Step 6: log the reminder in the sheet

Add another Google Sheets node that updates the row, matching on id, and adds one to the reminders column. This step is what stops the same reminder going out twice.

Common mistakes

  • Chasing someone who already said yes. It happens when the status isn't updated. Change it as soon as the customer replies, or automate it with the ideas below.
  • Inconsistent dates. If you sometimes type 10/17 and sometimes 2026-10-17, the day count breaks. Always use the same format, or a column with date validation.
  • Too many reminders. More than two usually annoys more than it helps. If there's no answer by day seven, a phone call works better.
  • Permission to email. Only write to customers who asked you for a quote, through the channel they used to ask.

Ideas to take it further

Shortcut: agents that are already built

Follow-ups work best when contacts come in organised from the start. The lead qualification agent in the AgentKiosk pack captures every request from your website or inbox, scores it with AI and logs it in Google Sheets, ready to connect to this workflow, all as an n8n template you can import.

If you'd like to start with something free, download the WhatsApp agent and take a look at 7 AI automations for small businesses.