This workflow corresponds to n8n.io template #6599 — we link there as the canonical source.
This workflow follows the Google Sheets → HTTP Request recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"meta": {
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "49891093-0149-475d-ad6a-b80832087c47",
"name": "When clicking \u2018Execute workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-48,
80
],
"parameters": {},
"typeVersion": 1
},
{
"id": "947b70ae-4cab-4c36-b4f4-27d36d78915e",
"name": "Loop Over Items",
"type": "n8n-nodes-base.splitInBatches",
"position": [
864,
80
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "5f132e78-5a48-45b2-a777-87983fb5a647",
"name": "Call Apify LinkedIn API",
"type": "n8n-nodes-base.httpRequest",
"position": [
1408,
96
],
"parameters": {
"url": "=https://api.apify.com/v2/acts/{{ $json.apifyActorID }}/run-sync-get-dataset-items",
"method": "POST",
"options": {
"redirect": {
"redirect": {}
}
},
"jsonBody": "={\n \"profileUrls\": [\n \"{{ $('Loop Over Items').item.json.linkedin_url }}\"\n ]\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/json"
},
{
"name": "Authorization",
"value": "=Bearer {{ $json.apifyAPIKey }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "b411411c-96b9-48b8-8d4d-b4884912336c",
"name": "Aggregate",
"type": "n8n-nodes-base.aggregate",
"position": [
1632,
96
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData"
},
"typeVersion": 1
},
{
"id": "e8a9b61d-4cf8-4b0e-a10d-ba83d212ae07",
"name": "Generate Personalized Icebreaker",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
2192,
96
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini",
"cachedResultName": "GPT-4.1-MINI"
},
"options": {},
"messages": {
"values": [
{
"role": "system",
"content": "=You are a useful intelligent sales assistant.\n\nYou are given a set of information about a lead (LinkedIn profile data, headline, company SEO, etc). These are all people in the dental industry in the US. We are offering them custom AI voice receptionist that answers calls 24/7 and works into their CRM. \n\nYour task is to to take all these info and turn them into catchy, personalized openers/icebreakers for our cold email campaign. Keep the icebreakers short and 3-4 sentences max.\n\nYou'll return your icebreakers in the following JSON format:\n\n{\"icebreaker\":\"Hey {first_name},\\n\\nI spent some time studying {theirCompanyName} and was genuinely impressed by {thing}. I have a business proposal which might help you so thought I'd reach out.\"} \n\n\nRules:\n- Write in a spartan/laconic tone of voice.\n- Always mention their first Name and their shortened company name in the copy\n- Make sure to use the above format when constructing your icebreakers. We wrote it this way on purpose.\n- Shorten the company name wherever possible (say, \"XYZ\" instead of \"XYZ Dental\"). More examples: \"Love AMS\" instead of \"Love AMS Dental Group\", \"Love Tooth Tales\" instead of \"Love Tooth Tales Pediatric Dentistry & Orthodontics\", \"Love Dental Solutions\" instead of \"Love Dental Solutions, LLC\", \"Love Bernstein\" instead of \"Love Bernstein Orthodontics\", \"Love Pinnacle\" instead of \"Love Pinnacle Dental Group\", etc.\n- Do the same with locations. \"San Fran\" instead of \"San Fransisco\", \"LA\" instead of \"Los Angeles\", \"NJ\" instead of \"New Jersey\", etc.\n- 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/Linkedin profile, so don't use something obvious. Do not say cookie-cutter stuff like \"Love your website!\" or \"Love your years of experience!\".\n\n\n\n"
},
{
"content": "=firstName: {{ $json.firstName }}\n\nlastName: {{ $json.lastName }}\n\ncompanyName: {{ $json.companyName }}\n\nheadline: {{ $json.headline }}\n\ncurrentJobDurationInYrs: {{ $json.currentJobDurationInYrs }}\n\nemail: {{ $json.email }}\n\norganizationShortDescription: {{ $json.organizationShortDescription }}\n\norganizationCity: {{ $json.organizationCity }}\n\norganizationState: {{ $json.organizationState }}\n\nData found from their LinkedIn:\n{{ Object.entries($('Aggregate').item.json.data[0]).map(([key, value]) => {\n if (typeof value === 'object' && value !== null) {\n return `${key}:\\n${JSON.stringify(value, null, 2)}`;\n }\n return `${key}: ${value}`;\n}).join('\\n\\n') }}"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "50ae1e60-f2cb-491e-8d02-20d8c31e91e6",
"name": "Append Enriched Icebreaker",
"type": "n8n-nodes-base.googleSheets",
"position": [
1888,
656
],
"parameters": {
"columns": {
"value": {
"id": "={{ $('Loop Over Items').item.json.id }}",
"name": "={{ $('Loop Over Items').item.json.name }}",
"email": "={{ $('Loop Over Items').item.json.email }}",
"company": "={{ $('Loop Over Items').item.json.organization_name }}",
"headline": "={{ $('Simplify Fields for AI Agent').item.json.headline }}",
"linkedIn": "={{ $('Loop Over Items').item.json.linkedin_url }}",
"icebreaker": "={{ $json.message.content.icebreaker }}"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "id",
"defaultMatch": true,
"canBeUsedToMatch": true
},
{
"id": "name",
"type": "string",
"display": true,
"required": false,
"displayName": "name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "company",
"type": "string",
"display": true,
"required": false,
"displayName": "company",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "email",
"type": "string",
"display": true,
"required": false,
"displayName": "email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "headline",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "headline",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "icebreaker",
"type": "string",
"display": true,
"required": false,
"displayName": "icebreaker",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "linkedIn",
"type": "string",
"display": true,
"required": false,
"displayName": "linkedIn",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1772101798,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1kJq_R41U_PkQlIhi7D1LTAhWP-RO0hSRjUNf9C4AHUw/edit#gid=1772101798",
"cachedResultName": "Enriched"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1kJq_R41U_PkQlIhi7D1LTAhWP-RO0hSRjUNf9C4AHUw",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1kJq_R41U_PkQlIhi7D1LTAhWP-RO0hSRjUNf9C4AHUw/edit?usp=drivesdk",
"cachedResultName": "USA_Dental"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "7263e986-8992-4f26-9df1-4c00a1a0d73a",
"name": "Update Un-enriched List",
"type": "n8n-nodes-base.googleSheets",
"position": [
2320,
656
],
"parameters": {
"columns": {
"value": {
"id": "={{ $('hasEmail?').item.json.id }}",
"status": "enriched"
},
"schema": [
{
"id": "first_name",
"type": "string",
"display": true,
"required": false,
"displayName": "first_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "last_name",
"type": "string",
"display": true,
"required": false,
"displayName": "last_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "email",
"type": "string",
"display": true,
"required": false,
"displayName": "email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "personal_email",
"type": "string",
"display": true,
"required": false,
"displayName": "personal_email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "organization_name",
"type": "string",
"display": true,
"required": false,
"displayName": "organization_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "organization_website_url",
"type": "string",
"display": true,
"required": false,
"displayName": "organization_website_url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "linkedin_url",
"type": "string",
"display": true,
"required": false,
"displayName": "linkedin_url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "name",
"type": "string",
"display": true,
"required": false,
"displayName": "name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "title",
"type": "string",
"display": true,
"required": false,
"displayName": "title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "industry",
"type": "string",
"display": true,
"required": false,
"displayName": "industry",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "headline",
"type": "string",
"display": true,
"required": false,
"displayName": "headline",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "seniority",
"type": "string",
"display": true,
"required": false,
"displayName": "seniority",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "estimated_num_employees",
"type": "string",
"display": true,
"required": false,
"displayName": "estimated_num_employees",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "city",
"type": "string",
"display": true,
"required": false,
"displayName": "city",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "state",
"type": "string",
"display": true,
"required": false,
"displayName": "state",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "country",
"type": "string",
"display": true,
"required": false,
"displayName": "country",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "organization_annual_revenue_printed",
"type": "string",
"display": true,
"required": false,
"displayName": "organization_annual_revenue_printed",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "organization_seo_description",
"type": "string",
"display": true,
"required": false,
"displayName": "organization_seo_description",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "organization_short_description",
"type": "string",
"display": true,
"required": false,
"displayName": "organization_short_description",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "keywords",
"type": "string",
"display": true,
"required": false,
"displayName": "keywords",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "organization_technologies",
"type": "string",
"display": true,
"required": false,
"displayName": "organization_technologies",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "email_domain_catchall",
"type": "string",
"display": true,
"required": false,
"displayName": "email_domain_catchall",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "id",
"defaultMatch": true,
"canBeUsedToMatch": true
},
{
"id": "organization_id",
"type": "string",
"display": true,
"required": false,
"displayName": "organization_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "twitter_url",
"type": "string",
"display": true,
"required": false,
"displayName": "twitter_url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "facebook_url",
"type": "string",
"display": true,
"required": false,
"displayName": "facebook_url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "organization_linkedin_url",
"type": "string",
"display": true,
"required": false,
"displayName": "organization_linkedin_url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "organization_linkedin_uid",
"type": "string",
"display": true,
"required": false,
"displayName": "organization_linkedin_uid",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "organization_twitter_url",
"type": "string",
"display": true,
"required": false,
"displayName": "organization_twitter_url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "organization_facebook_url",
"type": "string",
"display": true,
"required": false,
"displayName": "organization_facebook_url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "organization_founded_year",
"type": "string",
"display": true,
"required": false,
"displayName": "organization_founded_year",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "organization_primary_domain",
"type": "string",
"display": true,
"required": false,
"displayName": "organization_primary_domain",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "organization_phone",
"type": "string",
"display": true,
"required": false,
"displayName": "organization_phone",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "organization_street_address",
"type": "string",
"display": true,
"required": false,
"displayName": "organization_street_address",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "organization_raw_address",
"type": "string",
"display": true,
"required": false,
"displayName": "organization_raw_address",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "organization_state",
"type": "string",
"display": true,
"required": false,
"displayName": "organization_state",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "organization_city",
"type": "string",
"display": true,
"required": false,
"displayName": "organization_city",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "organization_country",
"type": "string",
"display": true,
"required": false,
"displayName": "organization_country",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "organization_postal_code",
"type": "string",
"display": true,
"required": false,
"displayName": "organization_postal_code",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "status",
"type": "string",
"display": true,
"required": false,
"displayName": "status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 206882063,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1kJq_R41U_PkQlIhi7D1LTAhWP-RO0hSRjUNf9C4AHUw/edit#gid=206882063",
"cachedResultName": "100 Leads"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1kJq_R41U_PkQlIhi7D1LTAhWP-RO0hSRjUNf9C4AHUw",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1kJq_R41U_PkQlIhi7D1LTAhWP-RO0hSRjUNf9C4AHUw/edit?usp=drivesdk",
"cachedResultName": "USA_Dental"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "1bc1dfa6-e4b3-45d4-b30c-9b953c21a0b5",
"name": "hasEmail?",
"type": "n8n-nodes-base.filter",
"position": [
480,
80
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "c6b56607-6929-42cd-8c72-d7cff6c80066",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.email }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "1abc54ec-ae6b-460c-b560-d5e2bef27458",
"name": "Simplify Fields for AI Agent",
"type": "n8n-nodes-base.set",
"position": [
1952,
96
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "c2c46a40-fb08-41f1-a692-422f525813e9",
"name": "firstName",
"type": "string",
"value": "={{ $json.data[0].firstName }}"
},
{
"id": "09bb5d67-8b12-47e5-b0e0-e4bd1bad4f9a",
"name": "lastName",
"type": "string",
"value": "={{ $json.data[0].lastName }}"
},
{
"id": "1055fac7-ec58-4b52-941d-1d15de09d419",
"name": "companyName",
"type": "string",
"value": "={{ $('Loop Over Items').item.json.organization_name }}"
},
{
"id": "1714c8ee-f694-484b-b0d8-aade982c6a51",
"name": "headline",
"type": "string",
"value": "={{ $json.data[0].headline }}"
},
{
"id": "2e1b64a2-b7d3-4524-8b5b-38a8b728dca7",
"name": "currentJobDurationInYrs",
"type": "number",
"value": "={{ $json.data[0].currentJobDurationInYrs }}"
},
{
"id": "04409de1-1672-4b1f-a1db-7ac098789eba",
"name": "email",
"type": "string",
"value": "={{ $('Loop Over Items').item.json.email }}"
},
{
"id": "4da75ea0-5f95-4083-9e20-ef9a0ec7898a",
"name": "organizationShortDescription",
"type": "string",
"value": "={{ $('Loop Over Items').item.json.organization_short_description }}"
},
{
"id": "185993ef-25a8-483b-a748-4c6515a3f0f6",
"name": "organizationCity",
"type": "string",
"value": "={{ $('Loop Over Items').item.json.organization_city }}"
},
{
"id": "f0d764c6-6eb0-4743-b476-49486e259945",
"name": "organizationState",
"type": "string",
"value": "={{ $('Loop Over Items').item.json.organization_state }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "330e4c8f-376d-4738-87ee-50877f64f162",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-864,
-304
],
"parameters": {
"width": 672,
"height": 720,
"content": "\n## Cold Email Icebreaker for Personalization\n\nThis workflow does the following tasks:\n\n1. Takes in your raw leads - You might get these leads from anywhere. For best case, get your leads from Apollo but scrape it using Apify Apollo scraper https://apify.com/microworlds/apollo-scraper\nDownload the CSV file from Apify Web UI, import it into a Google Sheet (connected to your n8n account). The \"Get Raw Un-enriched Leads\" node takes in these downloaded leads as input\n \n2. \"hasEmail?\" checks if the leads have emails and returns those leads \u2014 you will only send cold emails to leads with email account\n\n3. For each lead, runs a loop and Calls Apify LinkedIn scraper - This returns valuable information about the lead\n\n4. Feed all the info to the OpenAI Agent to \"Generate Personalized Icebreaker\" for each lead. You will need to change the System prompt in this AI agent for your use case (i.e. your niche, your offer, and your niche's pain points).\n\n5. All the icebreakers and the subsequent related data are stored into a Google Sheet - You will use this Google Sheet to send cold email campaigns either manually or through whatever automated software you want to use.\n\n6. Update the original list, so that each time the workflow runs, only those leads that have not yet been enriched will be used to generate icebreaker and enrich them - This ensures you don't enrich the same lead over and over again, and that the workflow only generates personalized icebreakers of leads which haven't been touched yet.\n\nN.B. - You can see a working demo of this workflow in [this YouTube Link ](https://www.youtube.com/watch?v=Ah4Ynj-56sM)"
},
"typeVersion": 1
},
{
"id": "3c4c4919-81c6-4ad5-a7dd-594271fd59c1",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
160,
-96
],
"parameters": {
"color": 3,
"width": 560,
"height": 400,
"content": "## Pre-process raw leads\n- Connect your Google Sheet account with n8n.\n- Choose the file that contains your downloaded CSV raw lead.\n- Discard leads that do not have work email"
},
"typeVersion": 1
},
{
"id": "7b97c7f6-4d1e-4cd3-a73e-3f9894e340d7",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1120,
-96
],
"parameters": {
"color": 2,
"width": 672,
"height": 400,
"content": "## Get data from LinkedIn, and clean it.\nIn the \"Set Apify Tokens\" Node do the following: \n1. set the apifyAPIKey with your own Apify API key [(get it from here)](https://console.apify.com/settings/integrations),\n2. set the apifyActorID with the Apify Scraper ID of your choice. [This](https://console.apify.com/actors/2SyF0bVxmgGr8IVCZ) actor works best for scraping LinkedIn profile\n\n"
},
"typeVersion": 1
},
{
"id": "2651f7b6-fd1f-41cd-bb78-68046d3a8bab",
"name": "Get Raw Un-enriched Leads",
"type": "n8n-nodes-base.googleSheets",
"position": [
256,
80
],
"parameters": {
"options": {},
"filtersUI": {
"values": [
{
"lookupValue": "un-enriched",
"lookupColumn": "status"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 206882063,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1kJq_R41U_PkQlIhi7D1LTAhWP-RO0hSRjUNf9C4AHUw/edit#gid=206882063",
"cachedResultName": "100 Leads"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1kJq_R41U_PkQlIhi7D1LTAhWP-RO0hSRjUNf9C4AHUw",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1kJq_R41U_PkQlIhi7D1LTAhWP-RO0hSRjUNf9C4AHUw/edit?usp=drivesdk",
"cachedResultName": "USA_Dental"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "1754f0ae-6be9-4a8a-9087-fa41824fd999",
"name": "Set Apify Tokens",
"type": "n8n-nodes-base.set",
"position": [
1200,
96
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "69e8dbff-d9f3-446a-9dbd-2d4f2829cf1e",
"name": "apifyAPIKey",
"type": "string",
"value": ""
},
{
"id": "ab06d038-d0f2-43c0-b17e-c38c80817aae",
"name": "apifyActorID",
"type": "string",
"value": ""
}
]
}
},
"typeVersion": 3.4
},
{
"id": "93c3718a-df70-4dc2-ad86-5db621f0984c",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1840,
-96
],
"parameters": {
"color": 2,
"width": 672,
"height": 400,
"content": "## Generate personalized icebreaker\n- Cleans content to feed into AI agent\n- The AI agent goes through the scraped data and writes hyper-personalized icebreaker for cold email\n- Change the system prompt in the AI agent node to fit your use case.\n- OpenAI GPT 4.1 mini works best without breaking your bank.\n\n"
},
"typeVersion": 1
},
{
"id": "713a09f1-b3a2-42fa-9bfd-8dd11ca4a01b",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1840,
448
],
"parameters": {
"color": 2,
"width": 672,
"height": 400,
"content": "## Append & Update Google Sheet\n- The \"Append Enriched Icebreaker\" node appends the icebreaker along with the respective lead info into a new Google Sheet.\n- The \"Update Un-enriched List\" node updates the original Google Sheet to mark the processed lead as \"enriched\" from \"un-enriched\""
},
"typeVersion": 1
}
],
"connections": {
"Aggregate": {
"main": [
[
{
"node": "Simplify Fields for AI Agent",
"type": "main",
"index": 0
}
]
]
},
"hasEmail?": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items": {
"main": [
[],
[
{
"node": "Set Apify Tokens",
"type": "main",
"index": 0
}
]
]
},
"Set Apify Tokens": {
"main": [
[
{
"node": "Call Apify LinkedIn API",
"type": "main",
"index": 0
}
]
]
},
"Call Apify LinkedIn API": {
"main": [
[
{
"node": "Aggregate",
"type": "main",
"index": 0
}
]
]
},
"Update Un-enriched List": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Get Raw Un-enriched Leads": {
"main": [
[
{
"node": "hasEmail?",
"type": "main",
"index": 0
}
]
]
},
"Append Enriched Icebreaker": {
"main": [
[
{
"node": "Update Un-enriched List",
"type": "main",
"index": 0
}
]
]
},
"Simplify Fields for AI Agent": {
"main": [
[
{
"node": "Generate Personalized Icebreaker",
"type": "main",
"index": 0
}
]
]
},
"Generate Personalized Icebreaker": {
"main": [
[
{
"node": "Append Enriched Icebreaker",
"type": "main",
"index": 0
}
]
]
},
"When clicking \u2018Execute workflow\u2019": {
"main": [
[
{
"node": "Get Raw Un-enriched Leads",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googleSheetsOAuth2ApiopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
It automates the personalization process at scale — saving you hours of research while sounding human and thoughtful. Get your lead list based on your industry and niche from Apollo (free) Copy the entire link Go to Apify and use this Apollo Scraper to scrape the leads. Download…
Source: https://n8n.io/workflows/6599/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Ask questions like “How much did I spend on food last month?” and get instant answers from your financial data — directly in Telegram.
The Problem That it Solves
This intelligent email automation workflow helps you maximize engagement through domain-based outreach. It utilizes AI-powered personalization and strategic follow-ups to increase response rates. The
Note: Now includes an Apify alternative for Rapid API (Some users can't create new accounts on Rapid API, so I have added an alternative for you. But immediately you are able to get access to Rapid AP
Scrape ads – Pulls Facebook Ad Library data for "ai automation" keywords using Apify Filter & sort – Filters ads by page likes (>1,000) and separates into videos, images, and text ads Analyze creat