Quick overview
This workflow runs every morning to track sent quotes in Google Sheets, checks Gmail for customer replies, and uses OpenRouter to draft follow-ups or summarize replies with suggested responses, while updating quote status and follow-up counts in the sheet.
How it works
- Runs daily at 9:00 and loads follow-up settings like timing thresholds, tone, and owner email.
- Pulls quote rows from a Google Sheets “Quotes” tab and keeps only records with a Status of “sent” or “followed up”.
- For each open quote, searches Gmail for the most recent message from the customer since the quote’s Sent Date.
- Decides whether to wait, send a follow-up, mark the quote as gone cold, or treat it as replied based on days since sent and follow-up count.
- If the customer replied, fetches the reply from Gmail, uses OpenRouter to classify intent and draft a suggested response, emails the summary to the owner, and updates the Google Sheet status and last-contact date.
- If a follow-up is due, uses OpenRouter to generate a short follow-up email, sends it via Gmail to the customer, and updates the follow-up count, status, and last-contact date in Google Sheets.
- If the quote is overdue with no response after the defined window, updates the Google Sheet status to “gone cold”.
Setup
- Create a Google Sheet with a “Quotes” tab and columns for Quote ID, Customer, Email, Job, Amount, Sent Date (YYYY-MM-DD), Status, Follow-ups, and Last Contact.
- Add Google Sheets OAuth2 credentials and set the spreadsheet document ID in the quote read and update steps.
- Add Gmail OAuth2 credentials for the Gmail API search/read and for sending emails.
- Add an OpenRouter API key as HTTP Header Auth (Authorization: Bearer YOUR_KEY) and confirm the model and prompts meet your requirements.
- Fill in Follow-up Settings values (business name, tone, owner email, timezone, and day thresholds) and activate the workflow.
Requirements
- n8n (self-hosted or Cloud)
- Gmail and Google Sheets (OAuth2)
- OpenRouter API key (the default free model costs $0)
Customization
- Change the follow-up and gone-cold day counts in Follow-up Settings
- Edit the reply categories (accepted, question, price pushback, declined) in Understand Reply
- Change the run time in Daily Check or swap the model in either AI node
Additional info
Tested live with real replies: "Yes, let's go ahead" was classified accepted (row marked won), "the price is more than I expected" as price pushback (needs reply), and "we've gone with someone else" as declined (lost); the owner summary email arrived each time. Customers who reply are never emailed again. AI calls retry 3 times because free models occasionally return a 502.