Send Personalized Emails to Leads
Automatically research prospects and send personalized cold emails at scale. AI researches each lead online and generates human-like emails based on their profile, role, and interests.
Last updated
November 1, 2025
Connectors used
Tags
Video Tutorial
Key Takeaways
- AI-researched cold emails - Each prospect is individually researched online before an email is written, so every message references real details about the person.
- Google Sheets as your CRM - The workflow pulls lead data (name, email, role, company size, tools, source, signup date) directly from a spreadsheet.
- Parallel web research - The AI research step runs in item mode, processing all prospects in parallel rather than one at a time.
- Hands-off sending - Once the email is generated, it gets sent via Gmail automatically with a custom subject line.
What This Workflow Does
This workflow reads prospect data from a Google Sheet, uses an AI agent to research each person on the web, generates a personalized email based on what it finds, and sends it through Gmail. The goal is to turn a generic lead list into individually tailored outreach without writing each email by hand.
Use cases:
- Sales teams sending personalized outbound to new signups or inbound leads
- Founders reaching out to early users with a personal touch
- Growth teams running cold email campaigns that need to feel human-written
How It Works
| Step | What Happens |
|---|---|
| 1. Manual Trigger | You start the workflow manually when ready to send a batch |
| 2. Google Sheets Get Values | Pulls all rows from your prospect spreadsheet |
| 3. Code (Parse Rows) | Transforms raw spreadsheet data into structured objects with named fields |
| 4. AI Research Agent | Searches the web for each prospect's background using GPT-4.1 and the search_web tool |
| 5. Merge | Combines the original prospect data with the research results |
| 6. AI Email Writer | GPT-5.2 generates a personalized email under 100 words using the prospect's name, role, tools, source, and signup date |
| 7. Merge | Combines the generated email with the rest of the data |
| 8. Gmail Send Email | Sends the personalized email to the prospect |
Workflow Nodes
| Node | Role |
|---|---|
| Manual Trigger | Starts the workflow on demand |
| Google Sheets Get Values in Range | Fetches all prospect rows from the spreadsheet |
| Code | Parses the spreadsheet header and rows into structured JSON objects |
| AI Agent (Research) | Researches each prospect online using web search, outputs user_websearch_result |
| Merge | Combines prospect data with research output |
| AI Agent (Email Writer) | Generates a personalized email body (email_text) based on all available prospect info |
| Merge | Combines the generated email with prior context |
| Gmail Send Email | Sends the email to the prospect's address |
Setup Instructions
- Add the workflow template to Needle
- Connect your Google Sheets account and point the Get Values node to your prospect spreadsheet
- Connect your Gmail account in the Send Email node
- Update the email subject line in the Gmail node to match your campaign
- Make sure your spreadsheet has columns: user_name, user_email, role, company_size, tools, source, created_at
Customization
| What You Can Change | How |
|---|---|
| Prospect data source | Update the Google Sheets URL in the Get Values node |
| Research depth | Increase maxSteps on the AI Research node (currently 5) for deeper web searches |
| Email tone and content | Edit the system prompt in the Email Writer node to change length, offer details, or CTA |
| Email subject line | Change the subject field in the Gmail Send Email node |
| Target model for email generation | Swap the model in the Email Writer node |
FAQ
Q: Does this send emails immediately? A: Yes. Once the workflow runs, emails are sent automatically via Gmail. Review your spreadsheet before triggering.
Q: Can I filter which leads get emailed? A: You can modify the Code node to filter rows before processing, for example skipping leads that were already contacted.
Q: What if my spreadsheet has different columns? A: Update the Code node to map your column names, and adjust the AI prompts to reference your field names instead.
Want to showcase your own workflows?
Become a Needle workflow partner and turn your expertise into recurring revenue.