// 30-min buildsby JoshMay 12, 20265 min read

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.

Wire Your Inbox to Notion in 30 Minutes (n8n)

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.

n8nnotionemailautomationtutorial30 min build
// go deeper

Want the full guide? Check out our deep-dive page for more context, FAQs, and resources.

read the full guide
// keep reading

Related posts

// ready to ship?

Let's build yours.

Reading is the easy part. We do the work. Tell us what's broken and we'll tell you straight up whether we can help.