{"workflow":{"id":13007,"name":"Scrape LinkedIn B2B leads with Apify and GPT-4 and approve emails in Sheets","views":220,"recentViews":1,"totalViews":220,"createdAt":"2026-01-26T09:38:53.379Z","description":"## What this workflow does\n\nFully production-ready B2B lead outreach pipeline that:\n\n1. Takes industry keywords from a form trigger (or you can manually add rows to Google Sheets)\n2. Scrapes targeted LinkedIn leads using Apify (peakydev~leads-scraper-ppe actor)\n3. Filters for valid emails\n4. Automatically creates company + contact records in **HubSpot CRM**\n5. Generates highly personalized, non-salesy cold emails using GPT (tailored to the company’s industry)\n6. Logs every lead to Google Sheets with \"Pending\" status\n7. Waits for **human approval or rejection** — triggered **directly from Google Sheets** via two webhooks:\n   - **Approve** (via button/script in sheet) → sends the email via Gmail\n   - **Reject** (via button/script in sheet) → automatically rewrites a softer, more value-focused version with a different angle → updates the same row in the sheet\n\n## Why this is useful\n\nMost outreach automations send emails blindly.  \nThis one gives you **full control with a human-in-the-loop layer inside Google Sheets** + **automatic intelligent rewrite on rejection** — which greatly improves reply rates, reduces spam complaints, and protects your sender reputation.\n\nIdeal if you:\n- Run outbound campaigns at reasonable scale\n- Already live in Google Sheets for lead review\n- Want clean HubSpot CRM records before sending anything\n- Need traceable approval (who approved what, when)\n- Often hear “too salesy” and want the AI to adapt automatically\n\n## How to use\n\n1. Import the workflow into n8n\n2. Connect the required credentials:\n   - Apify API token\n   - HubSpot App Token (Private App)\n   - Gmail OAuth2\n   - Google Sheets OAuth2\n   - OpenAI API key\n3. Replace placeholders:\n   - Your Google Sheet ID in the “Leads Log” node\n   - Your name & signature in the AI prompts\n   - Any test email addresses if needed\n4. Activate the main **Form Trigger** (`Lead Campaign Setup`) to start campaigns\n5. **Review & act from Google Sheets**:\n   - Leads appear in your sheet with \"Pending\" status\n   - Use simple buttons or a dropdown + Apps Script (code examples provided in workflow sticky notes) to trigger:\n     - Approve → POST to `/webhook/approved`\n     - Reject → POST to `/webhook/rejected`\n## Required credentials\n\n- Apify\n- HubSpot (App Token)\n- Gmail OAuth2\n- Google Sheets OAuth2\n- OpenAI\n\nOnce set up, you get a beautiful hybrid system: generate leads automatically → review & decide in familiar Google Sheets → one-click action → n8n handles sending or smart rewriting.\n\nEnjoy — and feel free to share your reply rates or any tweaks you make after running a few campaigns! 🪄","workflow":{"meta":{"instanceId":"5f3c5e6f777b2c7f976eff784f15d2e2501680193b55be3d2ceef10db21e51fb","templateCredsSetupCompleted":true},"nodes":[{"id":"a686b9b4-09c6-4f5e-9917-6d590648e4f9","name":"post Apify data scrap","type":"n8n-nodes-base.httpRequest","position":[304,0],"parameters":{"url":"https://api.apify.com/v2/acts/peakydev~leads-scraper-ppe/runs?token=YOUR_TOKEN_HERE","method":"POST","options":{"redirect":{"redirect":{"maxRedirects":5}}},"jsonBody":"{\n    \"includeEmails\": true,\n    \"industry\": [\n        \"Primary and Secondary Education\"\n    ],\n    \"totalResults\": 10000\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth","headerParameters":{"parameters":[{"name":"Accept","value":"Application/json"}]}},"credentials":{"httpHeaderAuth":{"id":"credential-id","name":"Aliapify"}},"typeVersion":4.3},{"id":"0f495a64-b00e-46cf-b3f9-69beb2a32dbf","name":"Get Apify recent run data","type":"n8n-nodes-base.httpRequest","position":[592,0],"parameters":{"url":"https://api.apify.com/v2/acts/peakydev~leads-scraper-ppe/runs/last/dataset/items?token=YOUR_TOKEN_HERE","options":{"redirect":{"redirect":{"maxRedirects":5}}},"sendHeaders":true,"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth","headerParameters":{"parameters":[{"name":"Accept","value":"Application/json"}]}},"credentials":{"httpHeaderAuth":{"id":"credential-id","name":"Aliapify"}},"typeVersion":4.3},{"id":"bde68ef5-7b9f-48c8-b3e3-5215c50290ba","name":"generate Ai email","type":"@n8n/n8n-nodes-langchain.agent","position":[2224,0],"parameters":{"text":"=User Input:  {{ $item(\"0\").$node[\"JSON Stringifier\"].json[\"userInput\"] }}","options":{"systemMessage":"=You are an expert Automation Engineer & B2B Outreach Specialist.\n\nYou will receive USER INPUT as a JSON array of lead objects.\nEach object represents one lead with personal and company details.\n\nYour task:\n- Read the USER INPUT carefully\n- Generate ONE personalized, professional cold email per lead\n- Use the lead’s:\n  - fullName\n  - position\n  - organizationName\n  - organizationIndustry\n  - organizationDescription\n  - organizationWebsite (if helpful)\n- The email must feel human, relevant, and non-salesy\n- Focus on how automation can save time, reduce manual work, and improve efficiency\n- Tailor the value proposition based on the company’s industry (e.g. Travel, SaaS, E-commerce, Agency)\n\nEmail requirements:\n- Friendly and professional tone\n- Short, clear paragraphs\n- No hype, no buzzwords\n- One clear CTA (call to action)\n- Do NOT mention scraping, APIs, or data sources\n- Do NOT say “I found you on LinkedIn”\n- Do NOT invent facts beyond the provided data\n\nEmail structure:\n1. Subject line (short & relevant)\n2. Personalized greeting using fullName\n3. One sentence showing you understand their business\n4. How automation can help their specific type of company\n5. What you do as an automation engineer (brief)\n6. Soft CTA (call, reply, or quick chat)\n7. Professional sign-off\n\nOutput format (VERY IMPORTANT):\nReturn ONLY the email content in plain text like this:\n\nSubject: <subject line>\n\nHi <Full Name>,\n\n<email body>\n\nBest regards,  \n<Your Name>  \nAutomation Engineer\n\nIf multiple users are provided, generate a separate email for EACH user.\n"},"promptType":"define"},"typeVersion":3},{"id":"0b0623d0-f30e-48db-ab9f-29d1ac069b69","name":"make separate json of each keyword","type":"n8n-nodes-base.code","position":[-304,-16],"parameters":{"jsCode":"// Input from previous node\nconst input = $input.item.json;\n\n// Step 1: Get the keyword string\nconst keywordString = input.Keyword || \"\";\n\n// Step 2: Split string into individual keywords\nconst keywordsArray = keywordString\n  .split(/\\s{2,}/)       // split by 2 or more spaces\n  .map(k => k.trim())    // remove extra spaces\n  .filter(k => k !== ''); // remove empty strings\n\n// Step 3: Convert into n8n items format\nreturn keywordsArray.map(k => ({\n  json: { keyword: k }\n}));\n"},"typeVersion":2},{"id":"45214227-bb86-476d-9cfc-bcc68c5e426f","name":"If email exist","type":"n8n-nodes-base.if","position":[1168,16],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"8060c190-0a72-4c9b-a5c7-451ec8fe6a9c","operator":{"type":"string","operation":"exists","singleValue":true},"leftValue":"={{ $json.email }}","rightValue":""}]}},"typeVersion":2.2},{"id":"f02a9fd2-897d-4c60-a34a-9582a47b4556","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-608,448],"parameters":{"color":4,"width":1184,"height":384,"content":"# Approved Leads Email Workflow"},"typeVersion":1},{"id":"9de6efad-ecb0-4c4f-a29c-40b0eba54055","name":"📥 Approved Leads Webhook","type":"n8n-nodes-base.webhook","position":[-464,576],"webhookId":"576e74b7-01f4-42ef-b6e7-27d4baa775d8","parameters":{"path":"webhook/approved","options":{},"httpMethod":"POST","responseMode":"lastNode"},"typeVersion":2.1},{"id":"70ae0f09-b164-44fa-8ae1-c4f7c518a767","name":"🔧 Normalize Lead Data","type":"n8n-nodes-base.code","position":[-176,576],"parameters":{"jsCode":"const webhookData = $input.item.json;\n\n// Extract body data\nconst data = webhookData.body;\n\n// Normalize data according to your sheet columns\nconst normalizedData = {\n  // Your sheet columns in exact order:\n  \n  // 1. organizationIndustry\n  organizationIndustry: data.organizationIndustry || \"\",\n  \n  // 2. email\n  email: data.email || \"\",\n  \n  // 3. city\n  city: data.city || \"\",\n  \n  // 4. state\n  state: data.state || \"\",\n  \n  // 5. country\n  country: data.country || \"\",\n  \n  // 6. organizationSize\n  organizationSize: data.organizationSize || \"\",\n  \n  // 7. organizationLinkedinUrl\n  organizationLinkedinUrl: data.organizationLinkedinUrl || \"\",\n  \n  // 8. organizationWebsiteUrl\n  organizationWebsiteUrl: data.organizationWebsiteUrl || \"\",\n  \n  // 9. organizationFoundedYear\n  organizationFoundedYear: data.organizationFoundedYear || \"\",\n  \n  // 10. organizationDescription\n  organizationDescription: data.organizationDescription || \"\",\n  \n  // 11. emailContent\n  emailContent: data.emailContent || \"\",\n  \n  // 12. Status (from webhook)\n  Status: data.status || \"\",\n  \n  // Additional useful data for email sending:\n  fullName: data.fullName || \"\",\n  position: data.position || \"\",\n  organizationName: data.organizationName || \"\",\n  \n  // Tracking\n  sheetRow: data.sheetRow,\n  eventId: data.eventId,\n  timestamp: data.timestamp\n};\n\n// Log for debugging\nconsole.log(\"Normalized Data:\", JSON.stringify(normalizedData, null, 2));\n\nreturn [{ json: normalizedData }];"},"typeVersion":2},{"id":"b1dbaf04-48d2-437e-9966-ef4d6b08b8d7","name":"✂️ Split Email Content","type":"n8n-nodes-base.code","position":[64,576],"parameters":{"jsCode":"// Get the input data safely\nlet emailContent = \"\";\n\ntry {\n  // Method 1: Try to get data from common structures\n  const inputData = $input.item.json;\n  \n  if (inputData.body && inputData.body.emailContent) {\n    emailContent = inputData.body.emailContent;\n  } else if (inputData.emailContent) {\n    emailContent = inputData.emailContent;\n  } else if (inputData[0] && inputData[0].json && inputData[0].json.body && inputData[0].json.body.emailContent) {\n    emailContent = inputData[0].json.body.emailContent;\n  } else {\n    // Try to find email content in any format\n    const jsonStr = JSON.stringify(inputData);\n    const match = jsonStr.match(/\"emailContent\":\"([^\"]+)\"/);\n    if (match) {\n      emailContent = match[1].replace(/\\\\n/g, '\\n');\n    }\n  }\n} catch (error) {\n  console.log(\"Error getting data:\", error);\n  emailContent = \"\";\n}\n\nconsole.log(\"Email content length:\", emailContent.length);\n\n// Extract subject and body\nlet subject = \"Automation Proposal\";\nlet body = \"\";\n\nif (emailContent && emailContent.trim() !== \"\") {\n  // Find subject\n  const subjectMatch = emailContent.match(/Subject:\\s*(.+?)(?:\\n\\n|\\r\\n\\r\\n|$)/im);\n  if (subjectMatch) {\n    subject = subjectMatch[1].trim();\n    // Remove subject line\n    body = emailContent.replace(/Subject:\\s*.+?(\\n\\n|\\r\\n\\r\\n|$)/im, '').trim();\n  } else {\n    body = emailContent.trim();\n  }\n}\n\nconsole.log(\"Subject:\", subject);\nconsole.log(\"Body length:\", body.length);\n\n// Return the result\nreturn [{\n  json: {\n    subject: subject,\n    body: body\n  }\n}];"},"typeVersion":2},{"id":"98c5b879-f320-4256-a412-36469668e49f","name":"📤 Send Approved Email","type":"n8n-nodes-base.gmail","position":[304,576],"webhookId":"03bd8024-2579-4be1-8a50-5cda03b195a4","parameters":{"sendTo":"=muhammadmoosa.abc1@gmail.com","message":"={{ $json.body }}","options":{},"subject":"={{ $json.subject }}","emailType":"text"},"credentials":{"gmailOAuth2":{"id":"credential-id","name":"Ali hassan Gmail"}},"typeVersion":2.2},{"id":"6b865333-8ab3-46fd-a2d5-2f0b92d9ae7e","name":"Data Batcher","type":"n8n-nodes-base.splitInBatches","position":[0,-16],"parameters":{"options":{}},"typeVersion":3},{"id":"0dbaa915-0aeb-4b29-92db-29f3ca5aef4d","name":"Lead Data Batcher","type":"n8n-nodes-base.splitInBatches","position":[880,0],"parameters":{"options":{}},"typeVersion":3},{"id":"17642f70-ca69-49ac-a08d-683b788b2e09","name":"JSON Stringifier","type":"n8n-nodes-base.code","position":[1456,0],"parameters":{"jsCode":"// Get all incoming items (n8n compatible)\nconst items = $input.all();\n\n// Convert incoming JSON to string\nconst userInput = JSON.stringify(\n  items.map(item => item.json)\n);\n\n// Return as output\nreturn [\n  {\n    json: {\n      userInput\n    }\n  }\n];\n"},"typeVersion":2},{"id":"a1677126-07b7-4eed-8ddd-1accef15be52","name":"HubSpot Company Creator","type":"n8n-nodes-base.hubspot","position":[1744,0],"parameters":{"name":"={{ $item(\"0\").$node[\"If email exist\"].json[\"organizationName\"] }}","resource":"company","authentication":"appToken","additionalFields":{"websiteUrl":"={{ $item(\"0\").$node[\"If email exist\"].json[\"organizationWebsite\"] }}","description":"={{ $item(\"0\").$node[\"If email exist\"].json[\"organizationDescription\"] }}","yearFounded":"={{ $item(\"0\").$node[\"If email exist\"].json[\"organizationFoundedYear\"] }}","linkedInCompanyPage":"={{ $item(\"0\").$node[\"If email exist\"].json[\"organizationLinkedinUrl\"] }}"}},"credentials":{"hubspotAppToken":{"id":"credential-id","name":"HubSpot App Token account ali"}},"typeVersion":2.2},{"id":"e83d869f-c9be-41c4-ac56-e4f082afd13c","name":"HubSpot Contact Sync","type":"n8n-nodes-base.hubspot","position":[1968,0],"parameters":{"email":"={{ $item(\"0\").$node[\"If email exist\"].json[\"email\"] }}","options":{},"authentication":"appToken","additionalFields":{"city":"={{ $item(\"0\").$node[\"If email exist\"].json[\"city\"] }}","country":"={{ $item(\"0\").$node[\"If email exist\"].json[\"country\"] }}","jobTitle":"={{ $item(\"0\").$node[\"If email exist\"].json[\"position\"] }}","lastName":"={{ $item(\"0\").$node[\"If email exist\"].json[\"lastName\"] }}","firstName":"={{ $item(\"0\").$node[\"If email exist\"].json[\"firstName\"] }}","companySize":"={{ $item(\"0\").$node[\"If email exist\"].json[\"organizationSize\"] }}","linkedinUrl":"={{ $item(\"0\").$node[\"If email exist\"].json[\"linkedinUrl\"] }}","stateRegion":"={{ $item(\"0\").$node[\"If email exist\"].json[\"state\"] }}","associatedCompanyId":"={{ $json.companyId }}"}},"credentials":{"hubspotAppToken":{"id":"credential-id","name":"HubSpot App Token account ali"}},"typeVersion":2.2},{"id":"5a61af7b-a3ee-464f-a579-7212564b3018","name":"Leads Log","type":"n8n-nodes-base.googleSheets","position":[2608,0],"parameters":{"columns":{"value":{"city":"={{ $item(\"0\").$node[\"If email exist\"].json[\"city\"] }}","email":"={{ $item(\"0\").$node[\"If email exist\"].json[\"email\"] }}","state":"={{ $item(\"0\").$node[\"If email exist\"].json[\"state\"] }}","Status":"Pending","country":"={{ $item(\"0\").$node[\"If email exist\"].json[\"country\"] }}","emailContent":"={{ $json.output }}","organizationSize":"={{ $item(\"0\").$node[\"If email exist\"].json[\"organizationSize\"] }}","organizationIndustry":"={{ $('If email exist').item.json.organizationIndustry }}","organizationWebsiteUrl":"={{ $item(\"0\").$node[\"If email exist\"].json[\"organizationWebsite\"] }}","organizationDescription":"={{ $item(\"0\").$node[\"If email exist\"].json[\"organizationDescription\"] }}","organizationFoundedYear":"={{ $item(\"0\").$node[\"If email exist\"].json[\"organizationFoundedYear\"] }}","organizationLinkedinUrl":"={{ $item(\"0\").$node[\"If email exist\"].json[\"organizationLinkedinUrl\"] }}"},"schema":[{"id":"organizationIndustry","type":"string","display":true,"required":false,"displayName":"organizationIndustry","defaultMatch":false,"canBeUsedToMatch":true},{"id":"email","type":"string","display":true,"removed":false,"required":false,"displayName":"email","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":"organizationSize","type":"string","display":true,"required":false,"displayName":"organizationSize","defaultMatch":false,"canBeUsedToMatch":true},{"id":"organizationLinkedinUrl","type":"string","display":true,"required":false,"displayName":"organizationLinkedinUrl","defaultMatch":false,"canBeUsedToMatch":true},{"id":"organizationWebsiteUrl","type":"string","display":true,"required":false,"displayName":"organizationWebsiteUrl","defaultMatch":false,"canBeUsedToMatch":true},{"id":"organizationFoundedYear","type":"string","display":true,"required":false,"displayName":"organizationFoundedYear","defaultMatch":false,"canBeUsedToMatch":true},{"id":"organizationDescription","type":"string","display":true,"required":false,"displayName":"organizationDescription","defaultMatch":false,"canBeUsedToMatch":true},{"id":"emailContent","type":"string","display":true,"required":false,"displayName":"emailContent","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Status","type":"string","display":true,"removed":false,"required":false,"displayName":"Status","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["email"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"appendOrUpdate","sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1B5gPF93zBySVC9h2JzbCZXbVZvf5tEcLaoc6Xuyt3aQ/edit#gid=0","cachedResultName":"Leads"},"documentId":{"__rl":true,"mode":"list","value":"1B5gPF93zBySVC9h2JzbCZXbVZvf5tEcLaoc6Xuyt3aQ","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1B5gPF93zBySVC9h2JzbCZXbVZvf5tEcLaoc6Xuyt3aQ/edit?usp=drivesdk","cachedResultName":"Linkdin Leads Scrapping"}},"credentials":{"googleSheetsOAuth2Api":{"id":"credential-id","name":"Ali hassan Gsheet"}},"typeVersion":4.7},{"id":"93a3faf9-d003-441b-901d-1bc3d8f1011b","name":"Lead Campaign Setup","type":"n8n-nodes-base.formTrigger","position":[-544,-16],"webhookId":"d1ae2f2e-eb01-4c97-a21e-0b71424594f2","parameters":{"options":{},"formTitle":"LinkedIn Leads Scraping Setup","formFields":{"values":[{"fieldLabel":"Keyword","placeholder":"Keyword","requiredField":true}]},"formDescription":"This form configures automated LinkedIn lead extraction for targeted B2B marketing campaigns. By providing specific criteria below, our system will scrape high-quality leads from LinkedIn based on your business needs."},"typeVersion":2.3},{"id":"1ca64694-06c4-471b-aadb-0ed0bdb20be7","name":"Rejection Webhook","type":"n8n-nodes-base.webhook","position":[-560,1088],"webhookId":"e3cbd47e-d182-4c5d-9164-a29c2c893c6a","parameters":{"path":"webhook/rejected","options":{},"httpMethod":"POST","responseMode":"lastNode"},"typeVersion":2.1},{"id":"a1e44d3a-983d-4f24-9cb4-be151ded07d3","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-624,944],"parameters":{"color":2,"width":1280,"height":464,"content":"# Rejection Follow-up Workflow\n"},"typeVersion":1},{"id":"800b3f0f-1531-417d-b9ad-9a6ff4f3b7a5","name":"Webhook Data Normalizer","type":"n8n-nodes-base.code","position":[-320,1088],"parameters":{"jsCode":"const webhookData = $input.item.json;\n\n// Extract body data\nconst data = webhookData.body;\n\n// Normalize data according to your sheet columns\nconst normalizedData = {\n  // Your sheet columns in exact order:\n  \n  // 1. organizationIndustry\n  organizationIndustry: data.organizationIndustry || \"\",\n  \n  // 2. email\n  email: data.email || \"\",\n  \n  // 3. city\n  city: data.city || \"\",\n  \n  // 4. state\n  state: data.state || \"\",\n  \n  // 5. country\n  country: data.country || \"\",\n  \n  // 6. organizationSize\n  organizationSize: data.organizationSize || \"\",\n  \n  // 7. organizationLinkedinUrl\n  organizationLinkedinUrl: data.organizationLinkedinUrl || \"\",\n  \n  // 8. organizationWebsiteUrl\n  organizationWebsiteUrl: data.organizationWebsiteUrl || \"\",\n  \n  // 9. organizationFoundedYear\n  organizationFoundedYear: data.organizationFoundedYear || \"\",\n  \n  // 10. organizationDescription\n  organizationDescription: data.organizationDescription || \"\",\n  \n  // 11. emailContent\n  emailContent: data.emailContent || \"\",\n  \n  // 12. Status (from webhook)\n  Status: data.status || \"\",\n  \n  // Additional useful data for email sending:\n  fullName: data.fullName || \"\",\n  position: data.position || \"\",\n  organizationName: data.organizationName || \"\",\n  \n  // Tracking\n  sheetRow: data.sheetRow,\n  eventId: data.eventId,\n  timestamp: data.timestamp\n};\n\n// Log for debugging\nconsole.log(\"Normalized Data:\", JSON.stringify(normalizedData, null, 2));\n\nreturn [{ json: normalizedData }];"},"typeVersion":2},{"id":"d19b6e66-09b6-4df1-ae4d-d9909cedcfe0","name":"Rejection Data Stringifier","type":"n8n-nodes-base.code","position":[-80,1088],"parameters":{"jsCode":"// Get all incoming items (n8n compatible)\nconst items = $input.all();\n\n// Convert incoming JSON to string\nconst userInput = JSON.stringify(\n  items.map(item => item.json)\n);\n\n// Return as output\nreturn [\n  {\n    json: {\n      userInput\n    }\n  }\n];\n"},"typeVersion":2},{"id":"d3ba5d1e-d1c7-4291-8c40-1abc4baa299b","name":"Rejection Email Rewriter","type":"@n8n/n8n-nodes-langchain.agent","position":[112,1088],"parameters":{"text":"=User input:  {{ $json.userInput }}","options":{"systemMessage":"You are an expert Automation Engineer and B2B Outreach Copywriter.\n\nYou will receive USER INPUT as a JSON string.\nThe JSON may include:\n- previous lead data\n- current lead data\n- an emailContent field\n- a Status field that can be \"Rejected\"\n\nIMPORTANT CONTEXT:\nThe existing email was REJECTED.\nYour task is to REWRITE and IMPROVE the email with a different angle.\nDo NOT repeat the same phrasing, structure, or opening.\n\nYour goals:\n- Generate a NEW outreach email that feels more:\n  - Helpful\n  - Softer\n  - More value-focused\n  - Less salesy\n- Adapt tone to the lead’s industry (Education, SaaS, Agency, etc.)\n- Emphasize assistance, clarity, and practical benefits\n- Avoid pressure, avoid aggressive CTAs\n\nRules:\n- Use ONLY data present in the USER INPUT\n- Do NOT mention rejection or status\n- Do NOT mention LinkedIn, scraping, or data sources\n- Do NOT invent personal details\n- Keep it short, polite, and respectful\n- One clear but low-friction CTA\n\nPersonalization:\n- If name is available, use it\n- Reference the organization’s industry and context\n- Frame automation as support, not disruption\n\nEmail structure:\n1. New subject line (different from previous)\n2. Polite greeting\n3. Acknowledge their work context subtly\n4. Practical automation examples relevant to their industry\n5. Brief intro of yourself as an automation engineer\n6. Soft CTA (reply, short chat, or simple question)\n7. Professional sign-off\n\nOutput format (STRICT):\nReturn ONLY the updated email in plain text:\n\nSubject: <new subject>\n\nHi <Name>,\n\n<email body>\n\nBest regards,  \n<Your Name>  \nAutomation Engineer\n\nIf multiple users exist in the input, generate ONE updated email PER user.\nDo not include explanations, JSON, or commentary — only the email text.\n"},"promptType":"define"},"typeVersion":3},{"id":"ea6196c1-c0e2-48ac-b8fa-f33458a4e479","name":"Update: Improved Email","type":"n8n-nodes-base.googleSheets","position":[464,1088],"parameters":{"columns":{"value":{"email":"={{ $item(\"0\").$node[\"Webhook Data Normalizer\"].json[\"email\"] }}","emailContent":"={{ $json.output }}"},"schema":[{"id":"organizationIndustry","type":"string","display":true,"removed":true,"required":false,"displayName":"organizationIndustry","defaultMatch":false,"canBeUsedToMatch":true},{"id":"email","type":"string","display":true,"removed":false,"required":false,"displayName":"email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"city","type":"string","display":true,"removed":true,"required":false,"displayName":"city","defaultMatch":false,"canBeUsedToMatch":true},{"id":"state","type":"string","display":true,"removed":true,"required":false,"displayName":"state","defaultMatch":false,"canBeUsedToMatch":true},{"id":"country","type":"string","display":true,"removed":true,"required":false,"displayName":"country","defaultMatch":false,"canBeUsedToMatch":true},{"id":"organizationSize","type":"string","display":true,"removed":true,"required":false,"displayName":"organizationSize","defaultMatch":false,"canBeUsedToMatch":true},{"id":"organizationLinkedinUrl","type":"string","display":true,"removed":true,"required":false,"displayName":"organizationLinkedinUrl","defaultMatch":false,"canBeUsedToMatch":true},{"id":"organizationWebsiteUrl","type":"string","display":true,"removed":true,"required":false,"displayName":"organizationWebsiteUrl","defaultMatch":false,"canBeUsedToMatch":true},{"id":"organizationFoundedYear","type":"string","display":true,"removed":true,"required":false,"displayName":"organizationFoundedYear","defaultMatch":false,"canBeUsedToMatch":true},{"id":"organizationDescription","type":"string","display":true,"removed":true,"required":false,"displayName":"organizationDescription","defaultMatch":false,"canBeUsedToMatch":true},{"id":"emailContent","type":"string","display":true,"removed":false,"required":false,"displayName":"emailContent","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Status","type":"string","display":true,"removed":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":["email"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1B5gPF93zBySVC9h2JzbCZXbVZvf5tEcLaoc6Xuyt3aQ/edit#gid=0","cachedResultName":"Leads"},"documentId":{"__rl":true,"mode":"list","value":"1B5gPF93zBySVC9h2JzbCZXbVZvf5tEcLaoc6Xuyt3aQ","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1B5gPF93zBySVC9h2JzbCZXbVZvf5tEcLaoc6Xuyt3aQ/edit?usp=drivesdk","cachedResultName":"Linkdin Leads Scrapping"}},"credentials":{"googleSheetsOAuth2Api":{"id":"credential-id","name":"Ali hassan Gsheet"}},"typeVersion":4.7},{"id":"f48b7143-491e-43c8-81d6-f9afd69bf6ed","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-624,-144],"parameters":{"width":3520,"height":464,"content":"# LinkedIn Lead Generation Pipeline"},"typeVersion":1},{"id":"fe109bb7-1ff3-4435-95ad-e1a26d5d56a9","name":"LLM","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[2224,192],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-5-mini","cachedResultName":"gpt-5-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"credential-id","name":"Ali Hassan openAI"}},"typeVersion":1.3},{"id":"b54d2535-c0c1-4df1-b784-c670dd2f4b91","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[112,1280],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-5-mini","cachedResultName":"gpt-5-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"credential-id","name":"Ali Hassan openAI"}},"typeVersion":1.3},{"id":"c8f60827-fe7d-426b-b101-00cb5c392fc4","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-1200,80],"parameters":{"width":400,"height":1024,"content":"\n## How it works\n\n1. You submit lead keywords (industry, role, location) using the form trigger or by adding rows in Google Sheets.\n2. The workflow scrapes targeted LinkedIn leads via Apify and processes them in batches.\n3. Leads are filtered to keep only contacts with valid email addresses.\n4. Company and contact records are automatically created in HubSpot CRM.\n5. AI generates a personalized, non-salesy cold email for each lead, tailored to the company’s industry.\n6. All leads and email drafts are logged in Google Sheets with a **Pending** status.\n7. You review leads directly inside Google Sheets:\n\n   * **Approve** → the email is sent automatically via Gmail.\n   * **Reject** → the email is rewritten with a softer, value-focused angle and updated in the same sheet row.\n8. This creates a full human-in-the-loop outreach system with traceable decisions and clean CRM data.\n\n---\n\n## Setup steps\n\n1. Import the workflow into n8n.\n2. Connect required credentials:\n\n   * Apify API token\n   * HubSpot App Token\n   * Google Sheets OAuth2\n   * Gmail OAuth2\n   * OpenAI API key\n3. Update placeholders:\n\n   * Google Sheet ID in the “Leads Log” node\n   * Your name and signature inside the AI prompts\n4. Activate the **Lead Campaign Setup** form trigger to start collecting leads.\n5. Review leads in Google Sheets and use approval or rejection actions to control email sending and rewriting.\n"},"typeVersion":1}],"pinData":{"Lead Campaign Setup":[{"Keyword":"e-commerce businesses usa  coffie-shop london","formMode":"test","submittedAt":"2026-01-15T19:49:20.999+05:00"}]},"connections":{"LLM":{"ai_languageModel":[[{"node":"generate Ai email","type":"ai_languageModel","index":0}]]},"Leads Log":{"main":[[{"node":"Lead Data Batcher","type":"main","index":0}]]},"Data Batcher":{"main":[[],[{"node":"post Apify data scrap","type":"main","index":0}]]},"If email exist":{"main":[[{"node":"JSON Stringifier","type":"main","index":0}],[{"node":"Lead Data Batcher","type":"main","index":0}]]},"JSON Stringifier":{"main":[[{"node":"HubSpot Company Creator","type":"main","index":0}]]},"Lead Data Batcher":{"main":[[{"node":"Data Batcher","type":"main","index":0}],[{"node":"If email exist","type":"main","index":0}]]},"OpenAI Chat Model":{"ai_languageModel":[[{"node":"Rejection Email Rewriter","type":"ai_languageModel","index":0}]]},"Rejection Webhook":{"main":[[{"node":"Webhook Data Normalizer","type":"main","index":0}]]},"generate Ai email":{"main":[[{"node":"Leads Log","type":"main","index":0}]]},"Lead Campaign Setup":{"main":[[{"node":"make separate json of each keyword","type":"main","index":0}]]},"HubSpot Contact Sync":{"main":[[{"node":"generate Ai email","type":"main","index":0}]]},"post Apify data scrap":{"main":[[{"node":"Get Apify recent run data","type":"main","index":0}]]},"HubSpot Company Creator":{"main":[[{"node":"HubSpot Contact Sync","type":"main","index":0}]]},"Webhook Data Normalizer":{"main":[[{"node":"Rejection Data Stringifier","type":"main","index":0}]]},"Rejection Email Rewriter":{"main":[[{"node":"Update: Improved Email","type":"main","index":0}]]},"📤 Send Approved Email":{"main":[[]]},"🔧 Normalize Lead Data":{"main":[[{"node":"✂️ Split Email Content","type":"main","index":0}]]},"Get Apify recent run data":{"main":[[{"node":"Lead Data Batcher","type":"main","index":0}]]},"Rejection Data Stringifier":{"main":[[{"node":"Rejection Email Rewriter","type":"main","index":0}]]},"✂️ Split Email Content":{"main":[[{"node":"📤 Send Approved Email","type":"main","index":0}]]},"📥 Approved Leads Webhook":{"main":[[{"node":"🔧 Normalize Lead Data","type":"main","index":0}]]},"make separate json of each keyword":{"main":[[{"node":"Data Batcher","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":27,"nodeTypes":{"n8n-nodes-base.if":{"count":1},"n8n-nodes-base.code":{"count":6},"n8n-nodes-base.gmail":{"count":1},"n8n-nodes-base.hubspot":{"count":2},"n8n-nodes-base.webhook":{"count":2},"n8n-nodes-base.stickyNote":{"count":4},"n8n-nodes-base.formTrigger":{"count":1},"n8n-nodes-base.httpRequest":{"count":2},"n8n-nodes-base.googleSheets":{"count":2},"n8n-nodes-base.splitInBatches":{"count":2},"@n8n/n8n-nodes-langchain.agent":{"count":2},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":2}}},"status":"published","readyToDemo":null,"user":{"name":"moosa","username":"moosa","bio":"","verified":true,"links":["https://www.linkedin.com/in/muhammad-moosa-k"],"avatar":"https://gravatar.com/avatar/cd351be0624a4684e5e0cd13a6383a4d743fadbb4021ccbdf2d9c31796e25bef?r=pg&d=retro&size=200"},"nodes":[{"id":18,"icon":"file:googleSheets.svg","name":"n8n-nodes-base.googleSheets","codex":{"data":{"alias":["CSV","Sheet","Spreadsheet","GS"],"resources":{"generic":[{"url":"https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/","icon":"❤️","label":"Love at first sight: Ricardo’s n8n journey"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/","icon":"⏲","label":"Creating triggers for n8n workflows using polling"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/","icon":"🍔","label":"How Honest Burgers Use Automation to Save $100k per year"},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Data & Storage","Productivity"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\",\"output\"]","defaults":{"name":"Google Sheets"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="},"displayName":"Google Sheets","typeVersion":5,"nodeCategories":[{"id":3,"name":"Data & Storage"},{"id":4,"name":"Productivity"}]},{"id":19,"icon":"file:httprequest.svg","name":"n8n-nodes-base.httpRequest","codex":{"data":{"alias":["API","Request","URL","Build","cURL"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/","icon":"🎨","label":"Automate Designs with Bannerbear and n8n"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/","icon":"🧰","label":"How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"output\"]","defaults":{"name":"HTTP Request","color":"#0004F5"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="},"displayName":"HTTP Request","typeVersion":4,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":39,"icon":"fa:sync","name":"n8n-nodes-base.splitInBatches","codex":{"data":{"alias":["Loop","Concatenate","Batch","Split","Split In Batches"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Loop Over Items","color":"#007755"},"iconData":{"icon":"sync","type":"icon"},"displayName":"Loop Over Items (Split in Batches)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":47,"icon":"file:webhook.svg","name":"n8n-nodes-base.webhook","codex":{"data":{"alias":["HTTP","API","Build","WH"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/","icon":"👏","label":"How to automatically give kudos to contributors with GitHub, Slack, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/creating-custom-incident-response-workflows-with-n8n/","label":"How to automate every step of an incident response workflow"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"trigger\"]","defaults":{"name":"Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Webhook","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":76,"icon":"file:hubspot.svg","name":"n8n-nodes-base.hubspot","codex":{"data":{"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-sync-data-between-two-systems/","icon":"🏬","label":"How to synchronize data between two systems (one-way vs. two-way sync"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.hubspot/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/hubspot/"}]},"categories":["Sales"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"output\"]","defaults":{"name":"HubSpot"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNjIuODgzIDY5Ljg4MyI+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMi40NDIiIHk9IjIuNDQyIi8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxwYXRoIGZpbGw9IiNmODc2MWYiIGZpbGwtcnVsZT0ibm9uemVybyIgc3Ryb2tlPSJub25lIiBkPSJNNTUuNTA0IDMwLjQwMWExNi4yNiAxNi4yNiAwIDAgMC01LjkwNC01Ljg2NGMtMS44NjUtMS4wODQtMy43OTQtMS43NzMtNS45NzItMi4wN3YtNy43OThhNS43MSA1LjcxIDAgMCAwIDMuNTI1LTUuMzU3IDUuODYgNS44NiAwIDAgMC01Ljg1OS01Ljg4OSA1LjkxIDUuOTEgMCAwIDAtNS45MDggNS44ODljMCAyLjM5MyAxLjI3IDQuNDM0IDMuNDUyIDUuMzU3djcuNzU0YTE3IDE3IDAgMCAwLTUuMTk1IDEuNjMxTDEyLjc2OSA4LjI0N2MuMTQ2LS41NTIuMjczLTEuMTIzLjI3My0xLjcyNEE2LjUyIDYuNTIgMCAwIDAgNi41MTkgMCA2LjUyIDYuNTIgMCAwIDAgMCA2LjUyNGE2LjUyMyA2LjUyMyAwIDAgMCA2LjUyNCA2LjUyNCA2LjQ3IDYuNDcgMCAwIDAgMy4zNS0uOTUybDEuMzY3IDEuMDM1IDE4LjcyNiAxMy41MDFjLS45OTEuOTA4LTEuOTE0IDEuOTQzLTIuNjUxIDMuMTA1LTEuNDk0IDIuMzY4LTIuNDA3IDQuOTcxLTIuNDA3IDcuODEzdi41ODZhMTYuNCAxNi40IDAgMCAwIDEuMDI1IDUuNjQ1QzI2LjUgNDUuMzI0IDI3LjMzIDQ2LjczIDI4LjM2MSA0OGwtNi4yMjEgNi4yMzVhNS4wMSA1LjAxIDAgMCAwLTUuMjk4IDEuMTYyYy0uOTQ3Ljk0Mi0xLjQ4IDIuMjI3LTEuNDc1IDMuNTY1cy41MjcgMi42MTIgMS40NzkgMy41NjQgMi4yMjcgMS40OCAzLjU2NSAxLjQ4YTUgNSAwIDAgMCAzLjU2NS0xLjQ4IDUuMDUgNS4wNSAwIDAgMCAxLjQ3NS0zLjU2NCA1IDUgMCAwIDAtLjIzNC0xLjUxNGw2LjQyNi02LjQyNmExNiAxNiAwIDAgMCAyLjg1NiAxLjU2MyAxNi43IDE2LjcgMCAwIDAgNi42ODUgMS40MDZoLjQzOWExNS43NiAxNS43NiAwIDAgMCA3LjYyNy0xLjkyOSAxNS43NyAxNS43NyAwIDAgMCA1Ljk3Ny01LjYzYzEuNDk5LTIuMzkzIDIuMzE5LTUuMDQ0IDIuMzE5LTcuOTU5di0uMTQ2YzAtMi44NjYtLjY2NC01LjUwOC0yLjA1MS03Ljkzem0tNy44NDcgMTMuNDg3Yy0xLjc0MyAxLjkzOC0zLjc1IDMuMTM1LTYuMDE2IDMuMTM1aC0uNDNjLTEuMjk0IDAtMi41NjQtLjM1Ni0zLjc5OS0xLjAxMWE4LjggOC44IDAgMCAxLTMuMzMtMy4wMzJjLS44OTgtMS4yNy0xLjM4Ny0yLjY1Ni0xLjM4Ny00LjEyNnYtLjQzOWMwLTEuNDQ1LjI3OC0yLjgxNy45NzctNC4xMTEuNzQ3LTEuNDY1IDEuNzU4LTIuNTE1IDMuMTAxLTMuMzg5YTcuNiA3LjYgMCAwIDEgNC4yOTctMS4yOTRoLjE0N2MxLjQxNiAwIDIuNzY5LjI3OCA0LjAzOC45MjhhOC41NiA4LjU2IDAgMCAxIDMuMTc0IDIuODg2IDkuMiA5LjIgMCAwIDEgMS40MjEgNC4wNTNsLjAzNC45MTNjMCAxLjk4Ny0uNzYyIDMuODI4LTIuMjggNS40OTh6Ii8+PC9zeW1ib2w+PC9zdmc+"},"displayName":"HubSpot","typeVersion":2,"nodeCategories":[{"id":2,"name":"Sales"}]},{"id":356,"icon":"file:gmail.svg","name":"n8n-nodes-base.gmail","codex":{"data":{"alias":["email","human","form","wait","hitl","approval"],"resources":{"generic":[{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/using-automation-to-boost-productivity-in-the-workplace/","icon":"💪","label":"Using Automation to Boost Productivity in the Workplace"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gmail/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"transform\"]","defaults":{"name":"Gmail"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMTkzIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZmlsbD0iIzQyODVGNCIgZD0iTTU4LjE4MiAxOTIuMDVWOTMuMTRMMjcuNTA3IDY1LjA3NyAwIDQ5LjUwNHYxMjUuMDkxYzAgOS42NTggNy44MjUgMTcuNDU1IDE3LjQ1NSAxNy40NTV6Ii8+PHBhdGggZmlsbD0iIzM0QTg1MyIgZD0iTTE5Ny44MTggMTkyLjA1aDQwLjcyN2M5LjY1OSAwIDE3LjQ1NS03LjgyNiAxNy40NTUtMTcuNDU1VjQ5LjUwNWwtMzEuMTU2IDE3LjgzNy0yNy4wMjYgMjUuNzk4eiIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im01OC4xODIgOTMuMTQtNC4xNzQtMzguNjQ3IDQuMTc0LTM2Ljk4OUwxMjggNjkuODY4bDY5LjgxOC01Mi4zNjQgNC42NyAzNC45OTItNC42NyA0MC42NDRMMTI4IDE0NS41MDR6Ii8+PHBhdGggZmlsbD0iI0ZCQkMwNCIgZD0iTTE5Ny44MTggMTcuNTA0VjkzLjE0TDI1NiA0OS41MDRWMjYuMjMxYzAtMjEuNTg1LTI0LjY0LTMzLjg5LTQxLjg5LTIwLjk0NXoiLz48cGF0aCBmaWxsPSIjQzUyMjFGIiBkPSJtMCA0OS41MDQgMjYuNzU5IDIwLjA3TDU4LjE4MiA5My4xNFYxNy41MDRMNDEuODkgNS4yODZDMjQuNjEtNy42NiAwIDQuNjQ2IDAgMjYuMjN6Ii8+PC9zdmc+"},"displayName":"Gmail","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1153,"icon":"file:openAiLight.svg","name":"@n8n/n8n-nodes-langchain.lmChatOpenAi","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="},"displayName":"OpenAI Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1225,"icon":"file:form.svg","name":"n8n-nodes-base.formTrigger","codex":{"data":{"alias":["table","submit","post"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.formtrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Other Trigger Nodes"]}}},"group":"[\"trigger\"]","defaults":{"name":"On form submission"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NiIgaGVpZ2h0PSI0MCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwQjdCQyIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzQuOTc4IDM3LjczMmExLjU2IDEuNTYgMCAwIDEtMS41NjIgMS41NjNINi4yNmExLjU2IDEuNTYgMCAwIDEtMS41NjMtMS41NjNWOS42MDdjMC0uNDA1LjE1Ny0uNzk0LjQzOC0xLjA4Nmw2LjMwNC02LjUzMXY1LjM0NEg4LjIxM2ExLjE3MiAxLjE3MiAwIDEgMCAwIDIuMzQzaDQuNDNhMS4xNyAxLjE3IDAgMCAwIDEuMTcxLTEuMTcxVi4yMzJoMTkuNjAyYTEuNTYgMS41NiAwIDAgMSAxLjU2MiAxLjU2M3YxMC4zMjdsLTIuODYgMi44Ni04LjI1MiA4LjI3NmE0MTMuMDA2IDQxMy4wMDYgMCAwIDEtMS42NTQgMS42NjJsLS4zMzcuMzM3YTIgMiAwIDAgMC0uNTU3IDEuMDhMMjAuMyAzMS45MjJjLS4xMDguNjM4LS4yMTUgMS4wNzkuMjExIDEuNDE4LjQwMy4zMi45LjE3NCAxLjU0LjA2Nmw1LjQwOC0uOTI4YTIgMiAwIDAgMCAxLjA4LS41NTZsNi40NC02LjQyOXptLTI0LjAzLTIxLjI2NWExLjE4IDEuMTggMCAwIDAgMS4xNzEgMS4xNzJoMTMuMTYzYTEuMTcyIDEuMTcyIDAgMSAwIDAtMi4zNDRIMTIuMTE5YTEuMTcgMS4xNyAwIDAgMC0xLjE3MiAxLjE3Mm03LjI5NCAxNC43NjZhMS4xNyAxLjE3IDAgMCAwLTEuMTcyLTEuMTcySDEyLjEyYTEuMTcyIDEuMTcyIDAgMSAwIDAgMi4zNDNoNC45NTFhMS4xNyAxLjE3IDAgMCAwIDEuMTcyLTEuMTcybS44Ni03LjM5MWExLjE3IDEuMTcgMCAwIDAtMS4xNzItMS4xNzJoLTUuODExYTEuMTcyIDEuMTcyIDAgMSAwIDAgMi4zNDNoNS44MWExLjE2NCAxLjE2NCAwIDAgMCAxLjE3My0xLjE3MSIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iIzAwQjdCQyIgZD0ibTMzLjUzMiAxNi4zOTcgNC4yODktNC4yODkgMy43NTggMy43MSAxLjYxNy0xLjYxNiAyLjI1OCAyLjI1N2MuMjE4LjIxOC4zNC41MTMuMzQzLjgyLS4wMDIuMzExLS4xMjUuNjA4LS4zNDQuODNsLTYuODA0IDYuNzk2YTEuMTMgMS4xMyAwIDAgMS0uODI4LjM0MyAxLjE1IDEuMTUgMCAwIDEtLjgyOC0uMzQzIDEuMTggMS4xOCAwIDAgMSAwLTEuNjU3bDUuOTc2LTUuOTY4LTEuMzEyLTEuMzEzLTEuMzgzIDEuNDE0LTEzLjE0OSAxMy4xMjUtNC42MTcuNzgyLjc4Mi00LjYxNy4zMzYtLjMzNyAyLjU2MiAyLjU1NWExLjEgMS4xIDAgMCAwIC44MjguMzQ0Yy4zMTIuMDA1LjYxMi0uMTIuODI4LS4zNDRhMS4xOCAxLjE4IDAgMCAwIDAtMS42NTZsLTIuNTYyLTIuNTYyek00NC43MzYgMTIuMjRjMCAuNDE0LS4xNjMuODEtLjQ1NCAxLjEwMmwtLjkyMi45MTQtMy44NTItMy44MjguOTMtLjkzYTEuNTYzIDEuNTYzIDAgMCAxIDIuMjAzIDBsMS42NCAxLjY0MWMuMjkxLjI5My40NTUuNjkuNDU1IDEuMTAyIi8+PC9zdmc+"},"displayName":"n8n Form Trigger","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":37,"name":"Lead Generation"},{"id":51,"name":"Multimodal AI"}],"image":[]}}