How I Automate Personalized Cold Email Icebreakers (Using and n8n). Which Increased My Reply Rate To 10%

Cold outreach is broken. Here’s how to use AI to scrape insights, personalize icebreakers, and skyrocket your reply rates to 5–10%

Ever stared at a blank email draft, wondering how to start a cold outreach that doesn’t sound like every other generic “I hope this email finds you well” message flooding your prospect’s inbox?

You’re not alone.

Last month, I watched a friend send 1,000 cold emails using a basic template. His reply rate? A devastating 0.3%. That’s 3 people out of 1,000 who even bothered to respond. Meanwhile, I’m consistently hitting 5-10% reply rates with cold emails that make prospects think I’ve spent hours researching their business personally.

The difference? While everyone else is playing the numbers game, I built a system that creates deeply personalized, multi-line icebreakers that feel like they’re written by someone who actually cares about their business.

Today, I’m going to show you exactly how to build this system from scratch. Fair warning: this isn’t your typical “send 10,000 generic emails and pray” approach. We’re going deep – scraping websites, extracting meaningful insights, and using AI to craft icebreakers so personalized your prospects will assume you’ve done hours of research.

 Cold Email Icebreakers

Get N8n Access For Free for 14 Days – ” N8n Free

Why Most Personalized Cold Email Icebreakers Falls Flat ?

Here’s the brutal truth: most people think personalization means throwing in a company name or mentioning they saw someone on LinkedIn. That’s not personalization – that’s mail merge with extra steps.

Real personalization means understanding what makes a business tick, what challenges they face, and what they’re proud of. It means crafting an opening that makes the recipient think, “Wow, this person actually gets what we’re doing here.”

The system I’m about to show you does exactly that. It scrapes entire websites, analyzes multiple pages, and creates icebreakers that reference specific, non-obvious details about their business. The kind of details that only come from actually diving deep into what they do.

What We’re Building: The Complete System Overview

Before we dive into the technical build, let me show you exactly what this system accomplishes:

Input : Leads scraped from Apollo.io and stored in a Google Sheet

Output: Personalized multi-line icebreakers like this:

         “Hey Katie, love how KTL Graphics makes it easy to filter by acreage –          

        also a fan of your property update email option. Wanted to run 

        something by you…”

Notice how specific that is? The system found details about acreage filtering and email updates – things a human would only notice after carefully exploring the website.

Here’s how the magic happens:

  1. Lead Extraction: I’ve already scraped my personalized leads using Apify and Apollo
  1. Website Discovery: Extract and clean website URLs from the lead data
  2. Deep Website Scraping: Crawl multiple pages on each prospect’s website
  3. Content Analysis: Use AI to summarize each page into meaningful insights
  4. Icebreaker Generation: Combine all insights into personalized opening lines
  5. Data Organization: Automatically populate a Google Sheet ready for your email campaigns

Step 1: Filtering for Quality Leads

  • Manual Trigger – “When clicking ‘Test workflow’
  • Google Sheet – Operation “Get Row(s)”

Add a Filter node to clean up your data. We only want leads that have:

  • A valid email address (obviously)
  • A company website URL (essential for personalization)

Set up two conditions:

  1. Website URL field exists and is not null
  2. Email field exists and is not null

Step 2 : The Deep Website Scraping Process

Now for the secret sauce. Instead of just visiting the homepage like most people do, we’re going to scrape the entire website structure.

  1. Add an HTTP Request node configured with:
  • Error handling: Continue on error (some websites will block scraping)
  • URL: The website URL from each lead
  • Redirects: Follow redirects with max 21 redirects

This gives us the raw HTML of each homepage. But we’re not stopping there.

  1. Add edit field 
  •  Fields to set 

Field – html > string > {{ $json.data }}

  1. Add Loop over item 

Batch Size – 1

This ensures that only one record is processed at a time.

     5. Add code node 

          Code :

return [{

  json: {

    html: $json.html.toString()

  }

}];

  1. Add an HTML Extractor node to pull out every link on the page:
  • CSS Selector: a
  • Attribute: href
  • Return: Array
  • Options: Trim values and clean text

Why extract all the links?

 Because a homepage only tells part of the story. The About page, Services page, Blog posts – these contain the golden details that make for compelling personalization.

Step 3 : Processing and Filtering Website Links

  1.  Add another Edit Field Node

  Drag and drop first_name , last_name , email , website_url , links 

  from the input

  1. Add Split Out Node
  •  Fields To Split Out – links
  • Include – No other Fields 
  1. Add Filter Node
  • {{ $json.links }} > starts with > /
  1. Add another Code node 

 Code : 

const items = $input.all();

const updatedItems = items.map((item) => {

  const link = item?.json?.links;

  if (typeof link === “string”) {

    // Case: starts with “/” → already relative

    if (link.startsWith(“/”)) {

      item.json.links = link;

    } 

    // Case: absolute URL (http or https)

    else if (link.startsWith(“http://”) || link.startsWith(“https://”)) {

      try {

        const url = new URL(link);

        let path = url.pathname;

        // Strip trailing slash unless root “/”

        if (path !== “/” && path.endsWith(“/”)) {

          path = path.slice(0, -1);

        }

        item.json.links = path || “/”;

      } catch (e) {

        // On parse error, keep original

        item.json.links = link;

      }

    }

    // Fallback: not relative or absolute, leave as-is

    else {

      item.json.links = link;

    }

  }

  return item;

});

return updatedItems;

Step 4 : The Content Extraction Loop

Here’s where n8n’s power really shines. We need to visit each filtered URL and extract its content

  1. Add Remove Duplicate URLs node
  2. Add Limit node 
  • Max items – 3
  • Keep – First Items
  1. For each link, add another HTTP Request node that:
  • Concatenates the base website URL with the relative link
  • Fetches the full page content
  • Handles errors gracefully (some pages will fail)
  1. Follow this with an HTML to Markdown conversion node

Markdown is much more efficient for AI processing – it strips out all the formatting overhead while preserving the actual content.

  •  Mode – HTML to Markdown
  • HTML –  {{ $json.data ? $json.data : “<div>empty</div>” }}
  • Destination Key – Data
Step 5 : AI-Powered Content Analysis

Now we have raw website content, but it needs to be analyzed and summarized.

  •  Add an AI Agent  node with this system prompt:

You’re a helpful, intelligent website scraping assistant.

You’re provided a Markdown scrape of a website page. Your task is to provide a two-paragraph abstract of what this page is about.

Return in this JSON format:

{“abstract”:”your abstract goes here”}

Rules:

– Your extract should be comprehensive—similar level of detail as an abstract to a published paper.

– Use a straightforward, spartan tone of voice.

– If it’s empty, just say “no content”.

This step transforms raw HTML into meaningful business intelligence about each website page.

Step 6 : Aggregating Insights for Personalization

After analyzing individual pages, we need to combine all insights about each prospect into a single, comprehensive view.

  • Add an Aggregate node that collects all the page abstracts for each lead. 

This gives you a complete picture of what each business does, what they’re proud of, and what makes them unique.

Step 7 : The Icebreaker Generation Magic

This is where everything comes together.

  •  Add a final AI Agent node with a sophisticated prompt that turns website insights into compelling icebreakers.

Here’s the framework I use:

We just scraped a series of web pages for a business called . Your task is to take their summaries and turn them into catchy, personalized openers for a cold email campaign to imply that the rest of the campaign is personalized.

You’ll return your icebreakers in the following JSON format:

{“icebreaker”:”Hey {name}. Love {thing}—also doing/like/a fan of {otherThing}. Wanted to run something by you.\n\nI hope you’ll forgive me, but I creeped you/your site quite a bit, and know that {anotherThing} is important to you guys (or at least I’m assuming this given the focus on {fourthThing}). I put something together a few months ago that I think could help. To make a long story short, it’s an outreach system that uses AI to find people hiring website devs. Then pitches them with templates (actually makes them a demo website). Costs just a few cents to run, very high converting, and I think it’s in line with {someImpliedBeliefTheyHave}”}

Rules:

– Write in a spartan/laconic tone of voice.

– Make sure to use the above format when constructing your icebreakers. We wrote it this way on purpose.

– Shorten the company name wherever possible (say, “XYZ” instead of “XYZ Agency”). More examples: “Love AMS” instead of “Love AMS Professional Services”, “Love Mayo” instead of “Love Mayo Inc.”, etc.

– Do the same with locations. “San Fran” instead of “San Francisco”, “BC” instead of “British Columbia”, etc.

– For your variables, focus on small, non-obvious things to paraphrase. The idea is to make people think we *really* dove deep into their website, so don’t use something obvious. Do not say cookie-cutter stuff like “Love your website!” or “Love your take on marketing!”.

Step 8 : Automated Data Export

Finally, add a Google Sheets – Append Row node that automatically populates your “Leads” tab with:

  • First name, last name, email
  • Company website and headline
  • Location and phone (if available)
  • The personalized multi-line icebreaker (our golden output)

Connect the loop back to itself so the system processes every lead automatically.

Scaling Your Cold Email Success

Once your icebreakers are generated, the real work begins. Here’s how I use this system:

Email Platform: Import directly into tools like Instantly.ai or Lemlist Campaign Structure: Use the icebreaker as your opening, then transition to your value proposition
Follow-up Sequences: Reference the same research in follow-up emails for consistency A/B Testing: Try different icebreaker styles to optimize performance

Final Thoughts: Your Cold Email Revolution Starts Now

While your competitors are still sending “Hope this email finds you well” messages to unimpressed inboxes, you’ll be delivering research-driven icebreakers that make prospects think you’ve personally studied their business for hours.

In today’s oversaturated email landscape, generic outreach isn’t just ineffective—it’s business suicide. The companies winning new clients are those that demonstrate genuine understanding from the very first line.

The system is built, the tools are accessible, and the automation runs while you sleep. What took manual researchers hours per prospect now happens in minutes, at scale, with deeper insights than most humans would even catch.

Ready to transform your cold outreach

Fire up n8n, grab your Apify account, and start building. Your prospects are tired of being treated like database entries—show them you see their business for what it really is.

The only question left: What will you do when your reply rates jump from 1% to 10%?

One comment

Leave a Reply

Your email address will not be published. Required fields are marked *