Build an n8n Gmail Auto-Reply Workflow That Also Chases
Build an n8n Gmail auto-reply workflow that classifies inbound mail, drafts a reply, and schedules timed follow-ups when no one responds. Step-by-step guide.
Most email automation tutorials stop at the reply. Inbound message arrives, AI drafts a response, done. That covers maybe half the actual job. The other half is the follow-up: the lead who got your reply and went quiet, the inquiry that needs a second nudge three days later, the thread that should close itself after two unanswered chases.
An n8n Gmail auto-reply workflow that only replies leaves the chasing to a human who'll forget. This guide builds the full loop: classify the inbound, reply or draft, then track the thread and follow up on a schedule when no one answers. The reply is the start, not the finish.
What a complete email workflow automates
A reply-only workflow is half a tool. The version that moves the needle covers the whole conversation lifecycle:
- Triggering on inbound mail filtered by a Gmail label or search
- Classifying intent (sales inquiry, support, spam, internal) with AI
- Drafting or sending a tailored reply based on that intent
- Recording thread state so the workflow knows what's outstanding
- Sending timed follow-ups when a thread goes quiet past a cutoff
- Stopping the chase after two or three nudges instead of forever
The first three are common. The last three turn an auto-responder into a system that actually closes loops.
Reply-and-forget is the wrong default
Here's the stance. An auto-reply that doesn't track follow-ups is worse than no automation, because it creates the illusion that the inbox is handled. The team sees the reply went out and mentally files the thread as done. But the reply was the easy part. The conversion, or the resolution, usually depends on the second or third touch, and that's exactly what a reply-only workflow drops on the floor.
Email follow-up is where deals and support tickets actually move. Build the state tracking from day one, even if the reply logic is dead simple. A workflow that sends a plain "thanks, we'll get back to you" but reliably chases after 48 hours beats a beautifully AI-written reply that's never followed up.
The auto-reply pipeline
Gmail Trigger (label: "auto" or filter match)
│
▼
Classify intent (OpenAI) → sales / support / spam / internal
│
▼
Route (Switch): draft vs send, by intent + confidence
│
▼
Gmail: reply or create draft
│
▼
Record thread state (Google Sheets / Airtable)
│
┌────┴────┐ (separate Schedule-triggered workflow)
▼
Daily: find threads awaiting response → send follow-up
Two workflows, not one. The reply path is event-driven off the Gmail Trigger. The follow-up path is a daily Schedule Trigger reading the thread-state store. Keep them separate so a stuck follow-up never blocks an incoming reply.
1. Trigger on the right mail
Use the Gmail Trigger node watching a specific label or a search filter, not the whole inbox. Set up a Gmail filter that labels qualifying mail "auto" on arrival, and trigger on that label. This keeps the workflow off your personal threads and gives you a clean kill switch: remove the label rule and the automation stops touching new mail.
The Gmail Trigger polls; it isn't a true push webhook. Default polling is fine for most volumes, but for high-traffic inboxes, know that there's a delay between arrival and trigger. Plan replies that don't promise instant response.
2. Classify intent
Feed the message subject and body to an OpenAI node and ask it to return a single intent label plus a confidence score, as JSON. Sales inquiry, support request, spam, internal, or unknown. The classification drives everything downstream: which reply template, whether to auto-send or draft, and whether to even bother following up.
Add a Code node to parse the model's JSON before the Switch node reads it. The OpenAI node returns text; the Switch expects a clean field. Skipping this parse is the single most common reason these workflows misroute, because the Switch silently fails to match the raw model output.
3. Route: draft or send
A Switch node branches on intent and confidence. High-confidence FAQ-style intents (a known support question) can auto-send. Anything ambiguous, high-value, or low-confidence creates a Gmail draft for a human to approve. This confidence-gated routing is the safety valve that lets you automate volume without auto-sending something embarrassing to an important lead.
Don't auto-send everything. Route by the classifier's confidence: a high-confidence support FAQ can send itself, while a low-confidence or sales-intent message becomes a Gmail draft awaiting a human. This one branch is the difference between an automation you trust on a live inbox and one you're afraid to turn on. Start draft-only, watch the classifications for a week, then promote the intents you trust to auto-send.
4. Record thread state
Write the thread to a Google Sheet or Airtable: message ID, sender, intent, action taken (replied/drafted), timestamp, and a status of "awaiting response." This store is what makes follow-ups possible. Without it, the workflow has no memory of which threads are open.
5. Follow up on a schedule
A separate daily Schedule Trigger queries the store for threads still "awaiting response" past your cutoff (say, 48 hours) where the follow-up count is under your max. For each, it sends a nudge via Gmail and increments the count. After two or three follow-ups with no reply, flip the status to "closed" and stop. Chasing forever annoys people and burns sender reputation.
Implementation patterns
Pattern 1 — Confidence-gated send. The classifier returns intent and confidence; the Switch routes high-confidence known intents to auto-send and everything else to draft.
OpenAI (classify → { intent, confidence })
→ Code (parse JSON)
→ Switch:
intent=support AND confidence>0.8 → Gmail send
else → Gmail create draft
Pattern 2 — Capped follow-up cadence. The daily workflow chases, but counts.
Schedule Trigger (daily 10:00)
→ Sheets: status="awaiting" AND lastTouch < now−48h AND followups < 3
→ Gmail: send follow-up
→ Update row: followups += 1, lastTouch = now
→ If followups === 3 → status = "closed"
That cap matters. A follow-up workflow without a ceiling is a spam machine that doesn't know when to quit.
n8n nodes you'll use most
| Node | Purpose |
|---|---|
| Gmail Trigger | Fires on labeled inbound mail |
| OpenAI | Classifies intent; drafts reply copy |
| Code | Parses model JSON; builds state rows |
| Switch | Routes draft vs send by intent and confidence |
| Gmail | Sends replies, creates drafts, sends follow-ups |
| Google Sheets / Airtable | Stores thread state for follow-up tracking |
| Schedule Trigger | Drives the daily follow-up chase |
Getting started
- Create a Gmail filter that labels qualifying inbound mail "auto" and connect the Gmail Trigger to that label.
- Add the OpenAI classifier returning intent and confidence as JSON, followed by a
Codeparse node. - Build a Switch that auto-sends high-confidence known intents and drafts everything else.
- Write each handled thread to a Google Sheet with status "awaiting response."
- Build a second workflow on a daily Schedule Trigger to chase threads past the 48-hour cutoff.
- Cap follow-ups at two or three, then flip the thread to "closed."
- Run draft-only for a week, review the classifications, then promote trusted intents to auto-send.
The Email Follow-Up Automator ships this loop: it polls a CRM table on a schedule, generates the reply body with OpenAI, sends through Gmail, and marks the contact so the chase stops at the right point. It's part of The Complete n8n Templates Bundle, a one-time lifetime license to the whole catalog (plus every template added later) if you run more than one of these automations.
The reply-and-chase pattern overlaps heavily with broader inbox work, so the n8n email inbox automation guide is worth reading for triage and labeling techniques you can bolt onto this workflow. If you're running OpenAI inside the classifier, the n8n OpenAI workflows guide covers the parse-step discipline that keeps the routing reliable. You can also browse the catalog for related email and CRM templates.
A Gmail auto-reply that closes its own loops is a small workflow with an outsized payoff. Reply fast, track the thread, chase on a cadence, and stop when it's polite to. The inbox stops being a pile of half-finished conversations.
Browse the n8n template catalog →Common questions
How does an n8n Gmail auto-reply workflow work?
Should the workflow send replies or just draft them?
How do you add follow-ups to an email auto-reply?
Get the workflow templates this guide is built on
Import-ready n8n JSON, step-by-step setup, and tested end-to-end. One-time payment, own it forever.
Get 3 tested n8n templates, free
The full customer package for three real catalog templates — workflow JSON, step-by-step setup guide, credential checklist. Built through the same live-instance release process as everything we sell. Plus new templates and automation guides in your inbox. No spam, unsubscribe anytime.
- 01Smart To-Do List ManagerPre-built n8n workflow template that automates productivity with OpenAI. Live in about 10 minutes.$14
- 02Email Follow-Up AutomatorPre-built n8n workflow template that automates crm with OpenAI. Live in about 15 minutes.$12
- 03Market Trend AnalyzerPre-built n8n workflow template that automates data processing with OpenAI. Live in about 10 minutes.$14
More automation guides

Automate SEO Internal Linking Across Your Site with n8n
Internal linking is one of the highest-ROI on-page SEO levers, and it's the one that rots fastest. Every new post should link to relevant older ones and earn links back, but nobody remembers the forty…

Build a Self-Filling Content Calendar with n8n
Most content calendars die the same way: the planning sheet looks great in January, then a busy week leaves three empty slots, then a busier week leaves ten, and by March nobody trusts it. The fix isn…

Automate Content Translation and Localization with n8n
A blog that ranks in English is leaving traffic on the table in five other markets. The fix sounds simple, translate the posts, and the popular n8n template does exactly the naive version: title in, b…