ChatGPTSalesOutreachAI score · PendingAI-assisted edit · no obvious prompt-injection riskn8n.io

n8n Auto-Generate Research-Backed Cold Email Icebreakers

Input: product brief + target role/location → scrape lead websites → GPT summarize → generate personalized multi-line icebreaker → Output: Google Sheets rows

Some experienceStepsWorkflowPromptTip
Who
SDRs, growth operators, and agencies who need high-reply-rate cold outreach at scale
You get
Automatically scrape prospect websites, generate multi-line personalized icebreakers referencing site details, and append results to Google Sheets for review or outbound sequencing
You need
n8n · google-sheets

Constraints

Prerequisites: n8n instance; OpenAI API key; Google Sheets OAuth write access; Apify API token (or replace with your own lead source). Default batch size is 3 leads (Limit1); ramp up slowly. Prompts and Google Sheets column mapping are editable inside n8n.

What they did

Template author pratyush published a 23-node automation workflow on n8n. Users submit product description, target designation, and location via a built-in form; the workflow calls an Apify act to fetch potential contacts, filters to keep only leads with both website and email, scrapes each company's homepage and extracts internal links, converts pages to Markdown, uses GPT-4.1 to generate two-paragraph page abstracts, aggregates the abstracts, then uses GPT-4.1 again to generate JSON-formatted complete cold emails (subject + body), and finally appends results to Google Sheets.

How it went

The template description claims this process replaces generic blasts with highly specific icebreakers referencing subtle site signals, dramatically improving reply rates (author_report). Default Limit1 is set to 3 to control cost and rate limits. A Google Sheets template link, demo video, and troubleshooting tips are provided.

Worth knowing

1. Not tested by this site (reproduction=not_tested); actual reply rates are unverified. 2. Default batch size is 3 leads; increase gradually based on budget and rate limits. 3. Apify act behavior and stability depend on an external service; can be replaced with CSV/CRM/Airtable. 4. Scraping target websites may be blocked by anti-bot measures; check network access and user-agent settings. 5. Generated emails require human review before sending to avoid compliance risks. 6. Expressions like {{ $('Details').item.json['Product URL'] }} and {{ $('Details').item.json['Your Name'] }} are n8n expressions automatically replaced with form inputs at runtime.

n8n workflow template

Structure checked · Not run-tested

Use “Import from File” in n8n, or copy the JSON and paste it into the editor. Connect your own accounts, then try test data. The template is inactive by default.

Setup and test checklist

Credentials to connect

  • Summarize Website Page1 node: connect OpenAI API credentials.
  • Generate Multiline Icebreaker1 node: connect OpenAI API credentials.
  • Add Row1 node: connect Google Sheets OAuth2 credentials.
  • Replace __UKH_BEARER_17__ with your real secret/token (path /nodes/17/parameters/headerParameters/parameters/0/value; literal auth header).

Configuration to replace

  • Source template is n8n public workflow #13282 (~23 nodes). Keep inactive after import; verify triggers, expressions and external API endpoints.
  • Sticky-note guidance is informational; replace placeholders with your own accounts, sheet schemas or channel IDs.

Test input and expected output

  • Manually run the main path once in a test workspace and confirm credentialed nodes authenticate without errors.
  • Drive one synthetic/redacted sample through and check output fields and downstream writes before enabling in production.

Template changes

  • Author credential bindings, webhookId and execution data are removed; the workflow is inactive. Nodes, connections and original prompts are preserved. Not run-tested in n8n.
  • No business-logic edits; verify keys, quotas and privacy compliance before use. 1 literal secret value(s) replaced with __UKH_…__ placeholders.

Template retrieved: 2026-10-24

Steps

  1. Configure form trigger and credentials

    After importing the template into n8n, set up the Details (form trigger) node: confirm the Outreach form title and 6 fields (About your Product, Designation, Location, Keywords, Your Name, Product URL) with their required status. Then configure Credentials for OpenAI API key, Google Sheets OAuth2, and Apify API token (or your alternative lead source).

  2. Submit form and fetch leads

    Submit your product description, target designation, location, etc. via the form. The workflow automatically calls Leads Scraper1 (HTTP Request node, default Apify act) to retrieve a list of potential contacts. Only Websites & Emails1 (Filter node) drops rows missing website or email, letting only valid leads proceed.

  3. Scrape websites and extract pages

    Scrape Home1 fetches each lead's company homepage; HTML1 extracts all <a> links from the page. Edit Fields1 (Set node) normalizes fields including company_website, email, first_name, last_name, headline, location, and phone_number. Loop Over Items1 processes leads in batches.

  4. Filter links, deduplicate, and convert to Markdown

    Split Out1 flattens the links array into individual items; Filter1 keeps only relative paths starting with /. Code1 runs JavaScript to normalize links (handle relative paths, convert absolute URLs to pathname, strip trailing slashes). Remove Duplicate URLs1 deduplicates, then Limit1 caps at 3 links by default. Request web page for URL1 fetches each link, and Markdown1 converts HTML to Markdown for GPT processing.

    Execution prompt · Source text。Code1 node JS Code field for link normalization

    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;
  5. GPT summarize each page

    Summarize Website Page1 (OpenAI node, model gpt-4.1) receives Markdown page content and outputs a two-paragraph abstract. The system role is set as a website scraping assistant; the user prompt requests JSON output {"abstract":"..."} with a straightforward, spartan tone.

    Execution prompt · Source text。Summarize Website Page1 node system message

    You're a helpful, intelligent website scraping assistant.

    Execution prompt · Source text。Summarize Website Page1 node user message (summarization instruction)

    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".

    Execution prompt · Source text。Summarize Website Page1 node user message (dynamic input variable)

    ={{ $json.data }}
  6. Aggregate summaries and generate icebreaker

    Aggregate1 aggregates all page abstracts into an array. Generate Multiline Icebreaker1 (OpenAI node, model gpt-4.1, temperature=0.5) reads aggregated summaries, lead profile, and product description to generate a JSON-formatted complete cold email (subject + body). The system role is a sales assistant; the user prompt includes the email template structure, tone rules, and a full few-shot example (Maki Agency case).

    Execution prompt · Source text。Generate Multiline Icebreaker1 node system message

    You're a helpful, intelligent sales assistant.

    Execution prompt · Source text。Generate Multiline Icebreaker1 node user message (email generation instruction with template and rules)

    =We just scraped a series of web pages for a business called {companyName}. Your task is to take their summaries and turn them into personalized full cold email bodies that feel researched and tailored.
    
    You’ll return each email in the following format:
    
    {
      "email": "Subject: A quick idea for {companyShort}\n\nHi {name},\n\nI spent some time on {companyShort}’s site and noticed {specificThing}. It’s a small detail, but it shows how much you care about {valueTheyCareAbout}, which not everyone in {industry/space} prioritizes. I also saw the focus on {secondThing}, which signals a bigger strategy around {insight}.\n\nThe reason I’m reaching out: we built {productDescription}, a lightweight but powerful tool that costs just a few cents per run, scales easily, and consistently drives high conversion rates. A few things that set it apart:\n- {featureOne}\n- {featureTwo}\n- {featureThree}\n\nIf you’d like a closer look, I’ve shared a link here: {{ $('Details').item.json['Product URL'] }}. My sense is that {companyShort} values {someImpliedBeliefTheyHave}, and this tool aligns directly with that. Would you be open to a short conversation to see if it could fit into what you’re already running?\n\nBest regards,\n{{ $('Details').item.json['Your Name'] }}"
    }
    
    
    
    Rules:
    
    Keep the tone professional, concise, and credible—avoid fluff.
    
    Expand on the product by mentioning cost efficiency, conversion performance, ease of use, and flexibility.
    
    Shorten long company names and locations (e.g., “Love AMS” instead of “AMS Professional Services,” “San Fran” instead of “San Francisco”).
    
    Focus on non-obvious details from the company summaries—small but meaningful things that imply real research.
    
    Avoid generic praise like “Great website” or “Love your marketing.”
    
    The output should always follow the JSON format provided.

    Execution prompt · Source text。Generate Multiline Icebreaker1 node user message (few-shot example input: Maki Agency summaries)

    =Profile: Aina Rakotoarinaly, CEO founder - Maki Agency / Ti'bouffe, Maki agency, outsourcing/offshoring, Antananarivo, Madagascar
    
    Website: 
    
    This webpage presents Maki Agency, a professional digital outsourcing company based in Madagascar that specializes in tailored web development, integration, design, SEO, content creation, community management, and more. The agency offers a range of white-label and dedicated resource solutions, targeting businesses that wish to outsource various digital projects. Maki Agency emphasizes its team's versatile technical expertise across major web technologies, including CSS, HTML, JQuery, WordPress, PHP, WooCommerce, Laravel, and Odoo. The company positions itself as an ideal partner for comprehensive digital support, ensuring that client's digital and branding needs are met through experienced personnel and rigorous project management.\n\nThe website details the specific services provided, such as graphic and web design (logos, banners, retouching), web integration (landing pages, newsletters, site layouts), development (showcase sites, e-commerce, intranets, bespoke applications, maintenance), content writing (SEO-optimized texts, articles, product sheets, social media posts), search engine optimization (audits, optimizations, submissions), and social media management. The agency highlights its strengths in quality of work, experience, and discretion, especially in white-label arrangements. Visitors are encouraged to contact Maki Agency for new or existing projects, and convenient contact options (phone, QR codes, social media, chat) are provided for initiating discussions.
    
    This page presents Maki Agency, a Madagascar-based digital agency specializing in web outsourcing and subcontracting services. The agency emphasizes its experience and dedicated team capable of handling diverse digital tasks such as web development, design, SEO, content writing, integration, community management, and maintenance. Maki Agency offers both white-label and dedicated resource solutions for clients seeking to externalize parts of their workflow to a specialized offshore partner. The descriptions highlight the agency's proficiency in popular web technologies, frameworks, and CMS platforms (such as HTML, CSS, PHP, WordPress, Laravel, WooCommerce, and Odoo), as well as its ability to execute projects ranging from landing pages, e-commerce platforms, and intranets to detailed graphic design and content creation.\n\nThe site underscores Maki Agency's core values and competitive advantages, such as meticulous attention to detail, experienced professionals, creativity, discretion, and a client-focused approach. It provides detailed breakdowns of service offerings, ranging from graphic materials (logos, flyers, banners), technical integration, app and website development, staff outsourcing (developers, designers, writers), SEO strategies, community management, and digital content production. Contact details and multiple avenues for communication (phone, WhatsApp, Skype, QR codes) are prominently featured, along with encouragements for clients to reach out for consultations or ongoing projects requiring outsourcing. The agency also highlights its longevity and adaptability in the digital sector, supporting clients across various industries and digital competencies

    Execution prompt · Source text。Generate Multiline Icebreaker1 node assistant message (few-shot example output)

    {"icebreaker":"Hey Aina,\n\nLove what you're doing at Maki. Also doing some outsourcing right now, wanted to run something by you.\n\nSo I hope you'll forgive me, but I creeped you/Maki quite a bit. I know that discretion is important to you guys (or at least I'm assuming this given the part on your website about white-labelling your services) and 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 white-labelled demo website). Costs just a few cents to run, very high converting, and I think it's in line with Maki's emphasis on scalability."}

    Execution prompt · Source text。Generate Multiline Icebreaker1 node user message (runtime dynamic variable)

    =Profile: {{ $('Loop Over Items1').item.json.first_name }} {{ $('Loop Over Items1').item.json.last_name }} {{ $('Loop Over Items1').item.json.headline }}
    
    Website: {{ $json.abstract.join("/n") }}
    
    Product Description: {{ $('Details').item.json["About your Product"] }}
  7. Append to Google Sheets

    Add Row1 (Google Sheets node, operation=append) appends the final outreach content and lead metadata to the specified spreadsheet. It maps 8 columns: first_name, last_name, designation, email, website_url, location, phone_number, Outreach Content. Create the sheet and authorize credentials beforehand.

Prompt you can copy

Setup guidance · Editorial suggestion。Hand to setup assistant to confirm prerequisites and guide template import and testing

This block is the prompt. Ads are never placed here.

You are an n8n workflow setup assistant. The user wants to replicate the "Deep Multiline Icebreaker" template: submit product info via form, automatically scrape prospect websites, use GPT-4.1 to generate personalized cold-email icebreakers, and write results to Google Sheets. First confirm the user has: 1) an n8n instance; 2) OpenAI API key; 3) Google Sheets OAuth write access; 4) Apify API token or an alternative lead source. Then guide them to import workflow ID 13282 from the n8n template library, configure credentials, form fields, Google Sheets document ID and sheet name, and suggest testing with Limit1=1 before scaling.

Paste into an n8n workflow assistant or AI setup chat to kick off replication. Actual node execution prompts are provided in the steps.

Source

Generate research-backed cold email icebreakers with web scraping, OpenAI and Google Sheets · pratyush · n8n.io · 2026-02-10

Comments & feedback

Tried this method? Share results, problems or improvements. Comments appear after moderation. Please avoid sensitive information.

Loading…

    Related