See llms.txt for all machine-readable content.

Back to Templates

Recover and triage repair quote emails with Gmail, OpenAI, and Google Sheets

A shop inbox fills up with quote requests and half of them are missing the one detail you need to price the job. This workflow watches that inbox, sorts real repair and estimate requests from the noise with GPT-6.1-sol, logs every request to Google Sheets, replies on its own for whatever is missing, and emails the owner each morning with what is still waiting.

Last updated: October 2026.

Quick Overview

This workflow triggers on unread Gmail messages that match the quote, estimate, repair or service subject query, marks them read in Mark Email Read and flattens the sender, subject and body in Normalize Email. The Classify Quote Request agent runs on the Shop Model chat model, decides whether the email is a real repair or quote request and extracts the year, make and model, the customer concern and whether there is enough detail to price. Route Quote Request sorts the outcomes: Skip Non Request drops messages that are not requests, requests without enough detail go to the reply lane, and detailed requests go to the logging lane. Log Awaiting Info appends the thin request to the "Quotes" tab and Send Missing Info Reply emails the customer a short ask for only the missing fields, while Log Ready Quote appends fully detailed requests as ready and Notify Shop Owner emails the owner a summary. A morning lane reads the "Quotes" log, keeps the requests that have been open for about a day in Find Open Requests, and Email Open Quotes Summary emails the owner what is still waiting.

How it works

  1. When Quote Email Arrives triggers every minute on unread Gmail messages matching the subject query for quote, estimate, repair or service.
  2. Mark Email Read marks the message read, and Normalize Email flattens sender, subject and body text into one consistent record.
  3. Classify Quote Request runs on the Shop Model chat model, decides whether the message is a real repair or quote request and extracts year, make and model, the customer concern, and whether the request carries enough detail to price.
  4. Route Quote Request sends non-requests to Skip Non Request, requests missing detail to the reply lane, and fully detailed requests to the logging lane.
  5. For a request that is missing details, Draft Missing Info Reply writes a short reply asking only for the missing fields, Parse Reply Draft and Reattach Reply put that draft back on the request, Log Awaiting Info appends it to the "Quotes" tab as awaiting info, and Send Missing Info Reply emails it to the customer through Gmail.
  6. For a fully detailed request, Log Ready Quote appends it to the "Quotes" tab as ready and Notify Shop Owner emails the owner a summary so the quote can go out.
  7. Daily Open Quote Sweep runs at 08:00, Read Quote Log reads the "Quotes" tab, Find Open Requests keeps the requests that have been open for about a day, and Email Open Quotes Summary emails the owner what is still waiting.

Setup

  1. Connect a Gmail OAuth2 account for the monitored inbox (reading, marking read, and sending replies and notifications) and adjust the Gmail trigger search query if needed.
  2. Add an OpenAI API credential for the chat model used by Classify Quote Request and Draft Missing Info Reply, and select your preferred model if you do not want the default.
  3. Connect a Google Sheets OAuth2 account and set the spreadsheet id and the "Quotes" tab used for logging.
  4. Replace REPLACE_WITH_SHOP_EMAIL with the owner email address in both the owner notification and the daily sweep email steps.
  5. Make sure the "Quotes" tab has columns that match the logged fields, for example quote_id, received_at, customer_name, customer_email, subject, vehicle, concern, status, summary and logged_at.

Quick Answers

Does it reply to people who are not asking for a quote?
No. Classify Quote Request marks them as non-requests, Route Quote Request sends them to Skip Non Request, and nothing is logged or sent.

What does the customer get when details are missing?
A short Gmail reply from Draft Missing Info Reply that asks only for the missing fields, and the request is logged in the "Quotes" tab as awaiting info.

Where do I see what is still open?
Daily Open Quote Sweep reads the "Quotes" tab at 08:00, Find Open Requests lists the requests open for about a day, and Email Open Quotes Summary emails the owner the summary.

Which messages does the trigger pick up?
Unread messages in the connected Gmail account that match the quote, estimate, repair or service subject query, and you can widen or narrow that query in the trigger node.

Additional info

Built with n8n. Need an assessment on your business? Feel free to reach out at https://khmuhtadin.com/consultation/