Email to Notion: Auto-Create Tasks From Your Inbox (n8n Workflow)
By Automate Basics
Loading guide…
By Automate Basics
Label or forward an email, and an n8n workflow reads it, uses Claude to pull out the actual task and any due date, and creates a task in your Notion database. The thing you needed to do stops living in your inbox and lands in your task system automatically — so nothing buried in email gets forgotten.
Your inbox is where tasks go to hide. Something important arrives, you think "I'll deal with that later," and it scrolls into oblivion. This workflow rescues those action items: flag an email, and the task lands in Notion with a due date, ready to work.
Email was built to receive messages, not to track what you owe people. So action items rot there, half-remembered and unsorted. The fix is a one-way valve: you flag an email, and an automation lifts the real task out of it and drops it into your task list. n8n watches for the flag, Claude reads the message, Notion holds the result.
Three nodes, one clean chain. The Gmail trigger is the doorbell: it fires only when you label an email. Claude is the reader that pulls the real task and any deadline out of messy human wording. Notion is the filing cabinet — it stores a tidy, dated task. You build them left to right, testing as you go, so each piece is proven before you add the next.
Everything here is mainstream and no-code-friendly. Gather these before you start:
Add a Gmail Trigger and filter it to a single label: todo. This is the most important design choice in the whole build — it means you decide what becomes a task. Tag an email "todo" and the workflow fires; ignore an email and nothing happens. Your inbox stays an inbox, and your task list stays intentional instead of flooded.
Add the Claude node and ask for structured JSON, so Notion can drop each field into the right column without guesswork:
From this email, extract the action I need to take. Return JSON only:
{ "task": a short imperative task title,
"due": an ISO date (YYYY-MM-DD) if one is implied, else null,
"notes": one line of useful context }
Email:
Subject: {{ $json.subject }}
Body: {{ $json.text }}
Claude turns "Can you send the revised deck before Thursday?" into a clean task with a real date — and leaves due empty when there is no deadline rather than inventing one.
Add a Notion node set to Create Database Page, then wire Claude's output to your columns: map task to the page title, due to the date property, and notes plus the email link into the page body. Run the workflow once by hand and watch a tidy, dated task appear in Notion. Seeing that first real task land is the moment it clicks — then flip the workflow to Active and it runs forever in the background.
Once the basic chain works, ask Claude to do more in the same step. Have it tag priority (high, medium, low) from the email's urgency. Ask it to pick which project the task belongs to and route it there. Or add a separate morning workflow that reads back today's due tasks so nothing sneaks up on you. Small additions, outsized calm.
Before any automation, create the Notion database with Name, Due, and Status properties and add one task by hand. Knowing exactly what a finished task looks like makes the later field-mapping step obvious — you are just filling a shape you already designed.
Create the Notion database first with just three properties — task, source, due — and forward one email through the workflow. When one email becomes one task correctly, scale it; a fancy schema before that is procrastination.
That’s the whole lesson. Try it on a real task while it is fresh, then come back for the next one.
Use n8n + Claude if you want AI to extract the task and due date from a flagged email automatically and file it in Notion.
The same corner of the library, one job further on.