Wire Your Inbox to Notion in 30 Minutes (n8n)
A working pipeline that takes new emails, classifies them, and drops the important ones into a Notion database with summaries. End-to-end build in one sitting.
The build: incoming emails get classified (signal vs noise), important ones land in a Notion database with an AI-generated 1-sentence summary, the rest get archived.
Total time: 30 minutes if you've never used n8n before, 12 minutes if you have.
What you'll need
- n8n (free self-hosted or cloud trial)
- Notion account + API key
- Gmail or any IMAP inbox
- An AI API key (Anthropic or OpenAI)
That's it. No coding.
Step 1: Set up the trigger (5 min)
In n8n, create a new workflow. Add a Gmail trigger node. Authenticate. Set it to fire on every new email in the inbox.
You can scope it to a label or a specific folder. For testing, I scope to a "ai-pipeline" label so I can control what comes in.
Step 2: Add the classifier (8 min)
After the trigger, add an AI node (use the Anthropic or OpenAI node).
System prompt:
Classify this email.
Subject: {{ $json.subject }}
From: {{ $json.from }}
Body: {{ $json.snippet }}
Return JSON with:
- category: one of [client, newsletter, sales_outreach, internal, spam, other]
- importance: 1-5
- requires_response: true/false
- one_sentence_summary: max 20 words
Use importance 4-5 only for messages that need attention this week.Parse the response as JSON in an n8n Set node.
Step 3: Branch on importance (3 min)
Add an IF node. Condition: importance >= 4.
True branch → goes to Notion. False branch → goes to a "archive" Gmail action (apply a label, mark as read).
Step 4: Write to Notion (10 min)
In Notion, create a database called "Inbox Triage" with columns:
- Subject (title)
- From (text)
- Category (select)
- Importance (number)
- Summary (text)
- Requires Response (checkbox)
- Email Date (date)
- Gmail Link (URL)
Get the database ID from the URL. Add a Notion node in n8n. Map the fields.
For the Gmail Link, use the format: https://mail.google.com/mail/u/0/#inbox/{{ $json.id }}
Step 5: Test (4 min)
Send yourself a test email. Run the workflow. Verify it lands in Notion with the right metadata.
Send a second test that's clearly low-importance (a newsletter). Verify it gets archived without landing in Notion.
What I do with this
Every morning I open the Notion database, sort by importance descending. I see the 4-5 emails that actually need attention. Everything else has been triaged out of my way.
I respond from Notion (the Gmail Link opens the original). The system isn't replying for me. It's filtering.
Common gotchas
- Free Anthropic/OpenAI tier limits: hit one quickly if you have a high-volume inbox. Set a daily cap in n8n.
- Notion API rate limit: 3 requests/second. Add a Wait node if you process old emails in bulk.
- Gmail label vs folder confusion: use labels, not folders, in n8n's trigger config.
What to add next
Once this works, layer on:
- Auto-draft responses for "requires_response = true"
- Sender-specific routing (clients go to one Notion view, sales outreach to another)
- A daily summary email of what was triaged
But ship the basic version first. The whole point of a 30-minute build is one thing working.
Get the next one.
Field notes from real deployments, written the way this one was. No schedule promised and nothing sold to you. Unsubscribe whenever.