Flow OS 2026-03 Featured

Notion → n8n → Gmail: Automated Lead Outreach for a Fractional CMO

Cristina — Marketing Consultant, Crete

Turned a burned-out, fully manual cold outreach process into a branching AI pipeline — personalised Gmail drafts, human in the loop, zero extra effort per lead.

Stack

n8nNotionClaude (Sonnet)GmailAnthropic API

Tags

n8nnotionclaudegmailautomationlead-genanthropic-apiautomate-to-elevate

Notion → n8n → Gmail: Automated Lead Outreach for a Fractional CMO

The Problem

Cristina is a Fractional CMO building brands for tourism, adventure, and wellness businesses in Crete. She’s exceptional at brand relationships and closing — but getting leads in the door was costing her 5+ hours a week of pure manual grind: find the company, find the email, find the Instagram, make notes in Notion, draft a template, personalise it, send it. One lead at a time. She knew it was a numbers game and she couldn’t play it fast enough. She’d already burned herself out trying.

What We Built

A single n8n workflow that polls her Notion CRM every 15 minutes, picks up any unprocessed leads, scrapes their website and Instagram for context, and routes each lead through one of four Claude-powered paths — cold outreach, follow-up, re-engagement, or proposal. Each path generates a fully personalised draft in Gmail. Nothing sends automatically. Cristina reviews, approves, hits send. Notion gets updated with a draft status so nothing falls through the cracks.

The whole thing runs on its own. She adds a lead to Notion, assigns an email type, and the draft is waiting in Gmail within 15 minutes.

What it actually does:

  • Fetches unprocessed leads from Notion (only those without a draft status — no duplicates)
  • Checks for valid email address before processing
  • Scrapes lead website for business context
  • Routes by email type: Cold Outreach / Follow-Up / Re-Engagement / Proposal
  • Claude generates a personalised email for each path using scraped data + brand voice
  • Gmail draft created, nothing sent
  • Notion record updated to Draft Created

Tech Stack

  • n8n (cloud) — workflow orchestration, polling trigger, routing logic, loop handling
  • Notion — lead CRM and source of truth; email type field drives the routing
  • Claude Sonnet via Anthropic API — email generation across all four outreach paths
  • Gmail — draft destination; human reviews and sends manually
  • Website scraper node — enriches lead data before passing to Claude

Key Decisions

One workflow, four branches — not four separate workflows

The initial instinct might be to build separate automations for cold, follow-up, re-engagement, and proposal. Instead, a single router node reads the Email Type field in Notion and branches accordingly. Cleaner to maintain, easier to debug, and Cristina only needs to change one field in Notion to change what kind of email gets generated.

Human-in-the-loop by design, not as a fallback

Auto-sending was on the table. We ruled it out deliberately. Cristina’s clients are high-touch — tourism brands, wellness businesses, people who know people. A bad automated send does more damage than no send. The draft model means Claude does the research and writing heavy-lifting, Cristina does the relationship judgement call. That division of labour is the point.

Batch processing with unprocessed-lead detection

Early in testing the workflow only picked up the single most recently modified Notion record. We rebuilt the trigger logic to use a Get Many node filtered by empty draft status, so it processes every new lead added since the last run — not just the latest one. This was the difference between a toy and an actual system.

Expression-based field mapping after Notion property mismatches

Notion’s internal property names don’t always match what you see in the UI. Several nodes were mapping to incorrect field names, causing silent failures mid-workflow. Fixed by switching from fixed values to expressions and mapping directly from the JSON data panel — making every field reference explicit and traceable.

Outcomes

  • 5+ hours per week returned from manual outreach grunt work
  • Four personalised Gmail drafts generated and ready to send within one live session — including a subject line and body written to a real business pulled from Cristina’s existing lead list
  • Notion CRM now doubles as a lightweight outreach controller — change the email type, the workflow handles the rest
  • MCP access enabled so Claude can audit the workflow health directly going forward

What I’d Do Differently

Start with field mapping hygiene. We hit Notion property name mismatches mid-session that cost time to debug. In future builds, I’d screenshot and confirm every database field name before generating the JSON — saves a debugging loop that’s easy to avoid.

Document the Notion integration quirks upfront. Getting the internal integration secret, granting page-level access, and connecting to the specific database are three separate steps that aren’t obvious. That friction is now in a skill file so the next build skips it entirely.

Assets

  • Workflow overview — Notion → n8n → Gmail with four-branch routing
  • Claude-generated Gmail draft — yacht charter cold outreach

Built by Tyson Venables — Flow OS | Flowstates Collective