Send personalized B2B cold outreach emails with Google Gemini and Gmail
Ready for 3.0Ready for 3.0. This template uses no nodes that n8n 3.0 removes. No removed nodes, versions or helpers found. Static check, last run 2026-10-19.
What this workflow does
This AI workflow has 13 nodes and runs on a schedule (every minute). Along the way it connects Google Gemini Chat Model and Gmail.
How it runs
Trigger: On a schedule (every minute).
- Set Context (Edit Fields (Set)): sets 7 fields: sender_company_name, sender_company_solution, sender_name…
- Get Pending Leads (Data table): get many
- Validate Email Format (If): checks a condition and branches into true / false
- Fetch Lead Website (HTTP Request): calls an HTTP API
- Mark as INVALID_EMAIL (Data table): create or update
- Strip HTML Tags (Code): runs custom JavaScript code
- AI Outreach Writer (AI Agent): runs an AI agent, with model: Google Gemini Flash; output parser: Parse Email JSON
- Send Outreach Email (Gmail): uses Gmail
- Mark as SENT (Data table): create or update
- Rate Limit Wait (Wait): pauses before continuing
Services it uses
Before you upgrade to n8n 3.0
Nothing in this workflow is removed in n8n 3.0, so it should import and run after the upgrade.
Nodes used (11)
- Schedule Trigger
n8n-nodes-base.scheduleTrigger - Edit Fields (Set)
n8n-nodes-base.set - Data table
n8n-nodes-base.dataTable - If
n8n-nodes-base.if - HTTP Request
n8n-nodes-base.httpRequest - Code
n8n-nodes-base.code - AI Agent
@n8n/n8n-nodes-langchain.agent - Google Gemini Chat Model
@n8n/n8n-nodes-langchain.lmChatGoogleGemini - Structured Output Parser
@n8n/n8n-nodes-langchain.outputParserStructured - Gmail
n8n-nodes-base.gmail - Wait
n8n-nodes-base.wait
From the author
Quick overview This workflow runs on a schedule to pull leads from an n8n Data Table, fetches and cleans each lead’s website content, uses Google Gemini to draft a personalized cold outreach email in structured JSON, sends it via Gmail, and updates the lead…