Skip to main content

What you’ll build

A workflow that fetches contacts, generates personalized email content with AI, and sends targeted emails automatically. Time to build: 15 minutes Nodes used: Google Sheets, Loop, LLM, Email Sender

The problem

Sending personalized emails manually is time-consuming:
  • Writing individual emails takes hours
  • Personalization is often superficial
  • Hard to scale beyond a few dozen contacts
  • Difficult to maintain consistency
This workflow automates personalized outreach while maintaining quality.

Workflow overview

Step-by-step guide

Step 1: Prepare your contact list

Create a Google Sheet with your contacts:
NameEmailCompanyRoleContext
John[email protected]Acme IncCMOMet at conference
Sarah[email protected]Beta CorpHead of GrowthDownloaded whitepaper
The Context column helps the AI personalize effectively.

Step 2: Create the workflow

  1. Click New Workflow
  2. Name it “Email Outreach”

Step 3: Fetch contacts

1

Add Google Sheets Reader

Configure:
  • Spreadsheet ID: Your contacts sheet
  • Range: Contacts!A:E
  • Include Headers: Yes

Step 4: Loop through contacts

1

Add Loop node

Configure:
  • Items: {{data}}
  • Max Iterations: 50 (start small)

Step 5: Generate personalized email

1

Add LLM node

Configure:
  • Model: GPT or Claude
  • Temperature: 0.7 (for creative variation)
  • Instructions:
Write a personalized outreach email for this contact.

Contact Information:
- Name: {{name}}
- Company: {{company}}
- Role: {{role}}
- Context: {{context}}

Email Guidelines:
- Subject line: Catchy, personalized, under 50 characters
- Opening: Reference the context/how we connected
- Body: Explain our value proposition briefly
- CTA: Clear, specific ask
- Tone: Professional but friendly
- Length: Under 150 words

Our Value Proposition:
[Your product/service description here]

Output format:
{
  "subject": "...",
  "body": "..."
}

Step 6: Send the email

1

Add Email Sender node

Configure:
  • To: {{email}}
  • Subject: {{subject}}
  • Body: {{body}}
  • From: Your email address

Step 7: Log results

1

Add Google Sheets Writer

Configure:
  • Spreadsheet ID: Your tracking sheet
  • Operation: Append
  • Values:
[[
  "{{email}}",
  "{{subject}}",
  "{{timestamp}}",
  "sent"
]]

Sample output

Subject: Quick question about Acme’s growth strategy, John Body:
Hi John,

Great connecting at the SaaS conference last week! Your talk on 
scaling marketing teams really resonated with our approach.

I noticed Acme is expanding rapidly - we've helped similar 
companies automate their content workflows, saving 15+ hours 
per week.

Would you have 15 minutes this week to explore if this could 
help your team?

Best,
[Your name]

Advanced options

Add research enrichment

Scrape the contact’s company before writing: Update your prompt:
Company Website Content: {{WebScraper_0.content}}

Use this information to reference specific things about 
their company, recent news, or products.

A/B test subject lines

Generate multiple versions and track performance:
Output format:
{
  "subject_a": "...",
  "subject_b": "...",
  "body": "..."
}
Then use a Conditional node to alternate between versions.

Schedule sends

Spread emails over time to avoid spam filters:
  1. Add a delay between emails
  2. Set max emails per hour (20-30)
  3. Schedule workflow to run at optimal times

Best practices

Warm up your sending

Start with small batches:
WeekEmails/day
110
225
350
4+100+

Personalization quality

More context = better personalization:
Context LevelExample
Low”Company employee”
Medium”CMO at growing SaaS”
High”CMO at Acme, met at conference, interested in automation”

Monitor deliverability

Track key metrics:
  • Open rate (target: 40%+)
  • Reply rate (target: 5%+)
  • Bounce rate (keep under 2%)
  • Spam complaints (keep under 0.1%)

Respect opt-outs

Add logic to check unsubscribe list:
Conditional: 
  If email NOT in unsubscribe_list
    → Send email
  Else
    → Skip and log

Results you can expect

MetricManualWith Draft & Goal
Emails/hour10-15100+
Personalization depthLowHigh
Reply rate2-3%8-12%
Time investedHoursMinutes

Next steps