← Back to Blog

    n8n Email Automation: Build an AI-Powered Email Workflow in Under an Hour

    ·Shubham Rasal

    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.

    n8n Email Automation: Build an AI-Powered Email Workflow in Under an Hour

    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.

    n8n email automation workflow — schedule trigger to Gmail to AI classify to action


    What You'll Build

    A workflow that:

    1. Runs every morning at 7am
    2. Fetches all unread emails from the past 24 hours
    3. Classifies each email using an AI model
    4. 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:

    ClassificationAction
    newsletterArchive, apply label "Newsletter"
    promotionalArchive, apply label "Promo"
    leadApply label "Lead", add to CRM via webhook
    supportApply label "Support", notify Slack
    urgentStar, mark important, send Slack DM
    personalLeave 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

    n8n AI automation vs traditional rules-based email filtering

    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 →.

    Keep exploring