This workflow corresponds to n8n.io template #7182 — we link there as the canonical source.
This workflow follows the Form Trigger → Google Sheets 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 →
{
"nodes": [
{
"id": "161feae7-64f3-470a-8747-880024aed008",
"name": "Aggregate",
"type": "n8n-nodes-base.aggregate",
"position": [
1168,
224
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData"
},
"typeVersion": 1
},
{
"id": "f72f38e9-b5b1-4481-8248-f568c8b20123",
"name": "Description of the audience you want to scrap",
"type": "n8n-nodes-base.formTrigger",
"position": [
-288,
224
],
"parameters": {
"options": {},
"formTitle": "Audience ",
"formFields": {
"values": [
{
"fieldLabel": "descritpion of the company ",
"placeholder": "company location,size,industry etc ",
"requiredField": true
}
]
},
"formDescription": "describe your audinece in plain text"
},
"typeVersion": 2.2
},
{
"id": "bddc1d94-d65d-4d8f-811b-81a6c1d5f88f",
"name": "Genrating appolo Url for apify to scrap",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-48,
224
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "chatgpt-4o-latest",
"cachedResultName": "CHATGPT-4O-LATEST"
},
"options": {},
"messages": {
"values": [
{
"content": "you are a helpful intelligent sales assitant "
},
{
"content": "your task is to take as input of a prospect audeince and turn that into a apollo serach URL here is an example of the URL \nhttps://app.apollo.io/#/people?personLocations[]=United%20States&includedOrganizationKeywordFields[]=tags&includedOrganizationKeywordFields[]=name&sortAscending=false&sortByField=recommendations_score&qKeywords=marketing%20agency%20&page=1&personTitles[]=ceo%20and%20founder&personTitles[]=co-founder\nThis url describes a search for peolpe that are \n-located in the united state \n- Holds the titles: CEO,founder,co founder \n- have a keyword assosiated with \"marketing \"agency\"\nyou can only make changes to these fields only \nreturn your response as using this format \n{\"SearchUrl\":\"SearchUrlgoeshere\"}"
},
{
"content": "={{ $json['descritpion of the company '] }}"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "f85a5a7f-97b8-445d-bb39-40671595b72e",
"name": "Run apify actor to scrap the proscpect",
"type": "n8n-nodes-base.httpRequest",
"position": [
352,
224
],
"parameters": {
"url": "https://api.apify.com/v2/acts/jljBwyyQakqrL1wae/run-sync-get-dataset-items",
"method": "POST",
"options": {},
"jsonBody": "={\n \"cleanOutput\": true,\n \"url\": \"{{ $json.message.content.SearchUrl }}\"\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/json"
},
{
"name": "Authorization",
"value": "Bearer YOUR_TOKEN_HERE key"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "6cb4458f-c921-4e9b-ad10-581b47e42c2e",
"name": "Genrate ice breaker by scraping linkedin data",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
560,
224
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "chatgpt-4o-latest",
"cachedResultName": "CHATGPT-4O-LATEST"
},
"options": {},
"messages": {
"values": [
{
"role": "system",
"content": "you are a helpful "
},
{
"content": "your task is to input a bunch of linkedin profile information of a user, and then geenrate a very short,very punchy incebreaker that i can use as a variable in my connection request \nreturn your output in this format \n{\"Icebreaker\":\"Icebreakergoeshere\"}\nin order to ensure icebreakers are punchy and high quality, make them follow this template \nHey {{name}}, loved seeing {{thingaboutThem}}, Im also into {{plausibleTieIN}}, thought Id connect.\nFor {{thingaboutThem}}and {{plausibleTiein}}, never use the exact information provided in a linked in field. instead,always parapharse. this makes it seems human written instead of just an automated message, Also, make it super short. Dont say stuff like \"\"passionate about truning vision into reality \" or anything like that be extremely Laconic and spartan."
},
{
"content": "{\"LinkedInFields\":\"Danielle Morgan, Fort Lauderdale, Founder & CEO at DM Creative Agency, previous experience: Regional Sales Director at Out East Eyewear, Account Director at Radancy\"}\n"
},
{
"content": "map the prospect's LinkedIn or details from the previous node. "
}
]
}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "423b22af-c02f-4abc-a77e-8050dcca9c90",
"name": "Adding ice breaker to google sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
944,
224
],
"parameters": {
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": ""
},
"documentId": {
"__rl": true,
"mode": "list",
"value": ""
}
},
"typeVersion": 4.6
},
{
"id": "642dd7d3-a634-4cb5-b930-1021a594413d",
"name": "trigger phantom buster to send personlized connection request",
"type": "n8n-nodes-base.httpRequest",
"position": [
1392,
224
],
"parameters": {
"url": "https://api.phantombuster.com/api/v2/(your agent id goes here)/launch",
"method": "POST",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "X-Phantombuster-Key",
"value": "api key goes here"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "9f714cd6-82dd-4e85-b076-cf01542d8395",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
880,
80
],
"parameters": {
"height": 336,
"content": "Create a google sheet add relevant colums name,linkedin url,company website,description and oter coloums that are genrated by the apify node and map them accordingly "
},
"typeVersion": 1
},
{
"id": "bbd5ef47-3815-4157-9269-c558e0fe7d26",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1312,
-32
],
"parameters": {
"height": 384,
"content": "Triggers the phantom buster a platform that sends linkedin connection requests. to your leads, you have to go to the api credentials to get the relevant url but i hvae harcoded one for the connection request and add your api key to the header, and the agent ID of the agent you are running will be available in the url of the agent in phantombuster thats it no body is needed."
},
"typeVersion": 1
},
{
"id": "792ddc3b-1c38-4e7b-b84e-36c7009b6689",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
576,
80
],
"parameters": {
"height": 304,
"content": "Hard-coded the prompt for GPT4o to generate the icebreaker; alter the prompt according to your desired need"
},
"typeVersion": 1
},
{
"id": "7b0d00de-8404-4bb5-bd9b-9201bab7ef62",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
288,
128
],
"parameters": {
"height": 224,
"content": "Send a request to run the apify actor that scrapes the leads; everything is configuered add your API key "
},
"typeVersion": 1
},
{
"id": "de1af1ca-e857-4e37-8786-104300f73cad",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-32,
64
],
"parameters": {
"height": 352,
"content": "Generates an Apollo URL,using GPT-4o, which will be scraped by apify actor to get the leads data. the url is generated by the information you input in the form. "
},
"typeVersion": 1
}
],
"connections": {
"Aggregate": {
"main": [
[
{
"node": "trigger phantom buster to send personlized connection request",
"type": "main",
"index": 0
}
]
]
},
"Adding ice breaker to google sheets": {
"main": [
[
{
"node": "Aggregate",
"type": "main",
"index": 0
}
]
]
},
"Run apify actor to scrap the proscpect": {
"main": [
[
{
"node": "Genrate ice breaker by scraping linkedin data",
"type": "main",
"index": 0
}
]
]
},
"Genrating appolo Url for apify to scrap": {
"main": [
[
{
"node": "Run apify actor to scrap the proscpect",
"type": "main",
"index": 0
}
]
]
},
"Description of the audience you want to scrap": {
"main": [
[
{
"node": "Genrating appolo Url for apify to scrap",
"type": "main",
"index": 0
}
]
]
},
"Genrate ice breaker by scraping linkedin data": {
"main": [
[
{
"node": "Adding ice breaker to google sheets",
"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.
openAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Collect audience specs – simple web-form asks for your ideal company profile. Generate a laser-targeted Apollo search URL with GPT-4o (no manual filtering). Scrape the matching leads via an Apify actor (returns clean JSON). Craft hyper-personalized icebreakers for each lead…
Source: https://n8n.io/workflows/7182/ — 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.
Product - SERP Analysis (Serper + Firecrawl). Uses formTrigger, httpRequest, googleSheets, openAi. Event-driven trigger; 40 nodes.
Product - SERP Analysis (Serper & Crawl4AI). Uses formTrigger, httpRequest, googleSheets, openAi. Event-driven trigger; 39 nodes.
Product - SERP Analysis (SerpAPI + Crawl4AI). Uses formTrigger, httpRequest, googleSheets, openAi. Event-driven trigger; 38 nodes.
This n8n template helps recruitment agencies discover active job openings, filter them based on hiring relevance, and qualify them using AI — specifically designed for semi-skilled manpower hiring use
Automates scraping trending videos based on a keyword, filters high-potential ones, analyzes thumbnails and transcripts with AI, generates optimized titles and outlines, and updates a Google Sheet for