n8n Email Automation: Build an AI-Powered Email Workflow in Under an Hour
n8n lets you connect Gmail to AI models and build email automation that actually understands context — not just keyword filters. Here is a complete setup guide.

Rule-based email filters were a good idea in 2005. They break constantly, require manual updates every time a sender changes their format, and have no concept of context or intent.
n8n with an AI step is a different category. Instead of matching keywords, it reads emails the way a human would — and routes, replies, or archives based on what the email actually means.
Here's how to build it.

What You'll Build
A workflow that:
- Runs every morning at 7am
- Fetches all unread emails from the past 24 hours
- Classifies each email using an AI model
- Takes action: archive newsletters, label leads, draft replies for important emails, flag urgent ones
Total setup time: under an hour. Monthly cost: $0 for n8n self-hosted, ~$2-5 in AI API costs for typical email volume.
Prerequisites
- n8n installed (self-hosted free, or n8n Cloud from $20/month)
- Gmail account connected via OAuth
- Anthropic API key (or OpenAI if you prefer)
The Workflow
Node 1: Schedule Trigger
Set to run daily at 7:00 AM.
{
"rule": "0 7 * * *"
}
Node 2: Gmail — Fetch Unread Emails
Connect your Gmail account. Set:
- Operation: Get Many
- Filters:
is:unread newer_than:1d - Max results: 50 (adjust to your volume)
Node 3: Loop Over Items
Wrap the next nodes in a loop to process each email individually.
Node 4: AI Classification
HTTP Request node to the Claude API (or use n8n's built-in AI nodes):
{
"model": "claude-haiku-4-5-20251001",
"messages": [{
"role": "user",
"content": "Classify this email. Reply with ONLY one word: newsletter, promotional, lead, support, urgent, or personal.\n\nFrom: {{$json.from}}\nSubject: {{$json.subject}}\nBody: {{$json.snippet}}"
}]
}
Using Haiku here keeps cost to $0.001 per email while being accurate enough for classification.
Node 5: Switch — Route by Classification
Branch the workflow based on the AI's response:
| Classification | Action |
|---|---|
newsletter | Archive, apply label "Newsletter" |
promotional | Archive, apply label "Promo" |
lead | Apply label "Lead", add to CRM via webhook |
support | Apply label "Support", notify Slack |
urgent | Star, mark important, send Slack DM |
personal | Leave in inbox, apply label "Personal" |
Node 6: Gmail — Apply Actions
For each branch, use the Gmail node to apply labels, archive, or star:
{
"operation": "addLabels",
"messageId": "{{$json.id}}",
"labelIds": ["Label_newsletter"]
}
The AI vs Rules Comparison

A traditional Gmail filter for newsletters needs to match sender addresses one by one. Miss one, and it sits in your inbox. The AI approach reads the email content and intent — a newsletter from a sender you've never seen before still gets classified correctly.
Where AI classification wins:
- New senders you haven't filtered yet
- Emails that mix categories (a promotional email from a real client)
- Context-dependent emails ("following up" could be a sales email or a real follow-up)
Where rules still make sense:
- High-confidence, high-volume senders (specific newsletter domains)
- Compliance-critical routing (always send invoices to accounting@)
The best setup combines both: rules for known high-confidence cases, AI for everything else.
Adding a Draft Reply Step
For emails classified as "lead" or "support," you can add an automatic draft:
{
"model": "claude-sonnet-4-6",
"messages": [{
"role": "user",
"content": "Write a professional reply to this email. Keep it under 100 words. Don't make up specific facts.\n\nFrom: {{$json.from}}\nSubject: {{$json.subject}}\nBody: {{$json.body}}"
}]
}
Then use the Gmail "Create Draft" operation. The draft sits in your Drafts folder — you review, edit if needed, and send. You're not auto-sending, but 70% of the draft is already written.
Making It Production-Ready
A few additions before relying on this daily:
- Error handling: Add a catch node that logs failed classifications to a Google Sheet
- Confidence threshold: If the AI is unsure (you can ask it to return a confidence score), route to inbox rather than auto-archiving
- Weekly review: Check the "Newsletter" and "Promo" labels once a week for misclassified emails; use those to refine the prompt
Want us to build this workflow for your team? Book a free AI audit → or read our email automation case study →.
