{"workflow":{"id":14448,"name":"Scrape Google Maps businesses with ScraperCity and send Gmail outreach","views":87,"recentViews":9,"totalViews":87,"createdAt":"2026-03-30T06:02:59.890Z","description":"## Who is this for\n\nThis workflow is built for agencies, freelancers, and local service businesses who want to automate prospecting. If you sell services to local businesses -- web design, SEO, bookkeeping, HVAC -- this workflow finds your prospects and reaches out for you.\n\n## How it works\n\n1. A manual trigger kicks off the workflow with your configured search parameters (business type and city).\n2. ScraperCity's Google Maps scraper extracts up to 500 business listings -- names, websites, addresses, and phone numbers.\n3. The workflow polls until the scrape completes, then downloads and parses the results.\n4. For each business with a website, the ScraperCity email finder locates the owner's email address using the business domain.\n5. Once emails are found, Gmail sends a personalized outreach message to each contact using their business name and city.\n\n## How to set up\n\n1. Create a free ScraperCity account at app.scrapercity.com and copy your API key.\n2. In n8n, create an HTTP Header Auth credential named \"ScraperCity API Key\" with the header name `Authorization` and value `Bearer YOUR_KEY`.\n3. Connect your Gmail account via OAuth2 in n8n credentials.\n4. Open the **Configure Search Parameters** node and update the business type, city, and your sender details.\n5. Customize the email subject and body in **Send Outreach Email**.\n\n## Requirements\n\n- ScraperCity account (app.scrapercity.com) -- free tier available\n- Gmail account connected via n8n OAuth2\n- n8n instance (cloud or self-hosted)\n\n## How to customize the workflow\n\n- Change `businessType` and `locationQuery` in **Configure Search Parameters** to target any niche or city.\n- Edit the email body in **Send Outreach Email** to match your offer.\n- Add a Google Sheets node after **Send Outreach Email** to log sent contacts.\n- Increase `maxCrawledPlacesPerSearch` up to 500 for larger campaigns.","workflow":{"meta":{"instanceId":"local-business-email-outreach-template","templateCredsSetupCompleted":false},"name":"Scrape Google Maps businesses and send personalized outreach via Gmail","nodes":[{"id":"ec09f944-511d-4778-b539-38f069cc4c99","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-400,48],"parameters":{"width":480,"height":896,"content":"## Scrape Google Maps businesses and send personalized outreach via Gmail\n\n### How it works\n\n1. The workflow is triggered manually and configured with search parameters (business type, location, max results, sender name).\n2. A Google Maps scrape job is submitted to ScraperCity and polled until complete, with a 60-second retry loop if still in progress.\n3. Results are downloaded, parsed, filtered for businesses with websites, and deduplicated by domain.\n4. Businesses are batched and submitted to ScraperCity's email-finder API, which is polled in a similar retry loop until complete.\n5. Email finder results are downloaded and merged back with the original business records, then filtered for valid emails.\n6. A personalised outreach email is sent via Gmail for each qualifying business, and the batch loop continues until all businesses are processed.\n\n### Setup steps\n\n- [ ] Create a ScraperCity account and obtain your API key at app.scrapercity.com\n- [ ] Add your ScraperCity API key to the HTTP Request nodes (Start Google Maps Scrape, Poll Maps Scrape Status, Download Maps Results, Start Email Finder Scrape, Poll Email Finder Status, Download Email Finder Results)\n- [ ] Connect your Gmail account to n8n via OAuth2 credential for the Send Outreach Email node\n- [ ] Update the Configure Search Parameters node with your desired businessType, locationQuery, maxResults, and senderName values\n- [ ] Adjust the batch size in the Batch Businesses for Email Finding node to match your ScraperCity plan limits\n- [ ] Customise the email body in the Send Outreach Email node with your personalised outreach message template\n\n### Customization\n\nAdjust wait durations in the Wait nodes to match ScraperCity's typical job completion times for your plan. Add a Google Sheets or database node after Send Outreach Email to log contacted businesses. Modify the filter conditions in Filter Businesses With a Website and Filter Records With Valid Email to tighten or relax lead quality criteria."},"typeVersion":1},{"id":"cb998ba2-ac02-47dc-8d60-ec670143bfcd","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[160,144],"parameters":{"color":7,"width":448,"height":320,"content":"## Workflow entry and config\n\nManual trigger that kicks off the workflow and a Set node that defines all search parameters used downstream."},"typeVersion":1},{"id":"e1ddd724-0e5b-468d-a4cf-4d8c0db65659","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[672,144],"parameters":{"color":7,"width":448,"height":320,"content":"## Submit Maps scrape job\n\nSends the Google Maps scrape request to ScraperCity and stores the returned run ID along with context fields for use in polling."},"typeVersion":1},{"id":"5f4b7fe5-f49d-4e2b-a013-f5246deda668","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[1200,176],"parameters":{"color":7,"width":960,"height":768,"content":"## Poll Maps scrape status\n\nWaits before the first poll, checks whether the Maps scrape job is finished, and retries every 60 seconds if it is not yet complete."},"typeVersion":1},{"id":"fbfab6ba-c69d-4d5c-8fa8-4d635d23c499","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[2192,144],"parameters":{"color":7,"width":464,"height":320,"content":"## Download and parse Maps results\n\nDownloads the completed Maps scrape file and parses or cleans the CSV/JSON payload into structured business records."},"typeVersion":1},{"id":"3ac3eb0d-84d2-434d-81c2-a78212b554df","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[2688,144],"parameters":{"color":7,"width":448,"height":320,"content":"## Filter and deduplicate leads\n\nRemoves businesses without a website and eliminates duplicate domains so only unique, contactable leads proceed."},"typeVersion":1},{"id":"e8b88816-49e8-4a07-b2d9-d91a131fa99b","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[3168,144],"parameters":{"color":7,"width":464,"height":320,"content":"## Batch and prepare email finder\n\nSplits leads into manageable batches and builds the contacts payload required by the ScraperCity email-finder API."},"typeVersion":1},{"id":"5c4e146a-ebed-4761-b384-cd2564e7d137","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[3664,144],"parameters":{"color":7,"width":448,"height":320,"content":"## Submit email finder job\n\nPosts the batch to the ScraperCity email-finder endpoint and stores the returned run ID for subsequent polling."},"typeVersion":1},{"id":"19e286ab-f9c7-464f-a1a0-d1e0ff5100b7","name":"Sticky Note8","type":"n8n-nodes-base.stickyNote","position":[4144,176],"parameters":{"color":7,"width":976,"height":768,"content":"## Poll email finder status\n\nWaits before the first poll, checks whether the email-finder job is finished, and retries every 60 seconds if still pending."},"typeVersion":1},{"id":"68959445-82fb-4040-a47a-1cd809c8e096","name":"Sticky Note9","type":"n8n-nodes-base.stickyNote","position":[5152,176],"parameters":{"color":7,"width":720,"height":304,"content":"## Download and merge email results\n\nDownloads the completed email-finder results, merges them with the original business records, and filters out any records lacking a valid email address."},"typeVersion":1},{"id":"0351ee36-094c-436a-935b-3f2d5652339f","name":"Sticky Note10","type":"n8n-nodes-base.stickyNote","position":[5920,48],"parameters":{"color":7,"width":240,"height":416,"content":"## Send personalised outreach email\n\nSends a personalised Gmail outreach message to each qualifying business and loops back to the batch node to process the next batch."},"typeVersion":1},{"id":"a1000000-0000-0000-0000-000000000001","name":"Start Workflow","type":"n8n-nodes-base.manualTrigger","position":[208,304],"parameters":{},"typeVersion":1},{"id":"a1000000-0000-0000-0000-000000000002","name":"Configure Search Parameters","type":"n8n-nodes-base.set","position":[464,304],"parameters":{"options":{},"assignments":{"assignments":[{"id":"cfg-001","name":"businessType","type":"string","value":"plumbers"},{"id":"cfg-002","name":"locationQuery","type":"string","value":"Austin, TX"},{"id":"cfg-003","name":"maxResults","type":"number","value":50},{"id":"cfg-004","name":"senderName","type":"string","value":"Your Name"},{"id":"cfg-005","name":"senderEmail","type":"string","value":"user@example.com"},{"id":"cfg-006","name":"emailSubject","type":"string","value":"Quick question about your business"}]}},"typeVersion":3.4},{"id":"a1000000-0000-0000-0000-000000000003","name":"Start Google Maps Scrape","type":"n8n-nodes-base.httpRequest","position":[720,304],"parameters":{"url":"https://app.scrapercity.com/api/v1/scrape/maps","method":"POST","options":{},"jsonBody":"={\n  \"searchStringsArray\": [\"{{ $json.businessType }}\"],\n  \"locationQuery\": \"{{ $json.locationQuery }}\",\n  \"maxCrawledPlacesPerSearch\": {{ $json.maxResults }}\n}","sendBody":true,"specifyBody":"json","authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"credential-id","name":"ScraperCity API Key"}},"typeVersion":4.2},{"id":"a1000000-0000-0000-0000-000000000004","name":"Store Maps Run ID","type":"n8n-nodes-base.set","position":[976,304],"parameters":{"options":{},"assignments":{"assignments":[{"id":"store-001","name":"mapsRunId","type":"string","value":"={{ $json.runId }}"},{"id":"store-002","name":"businessType","type":"string","value":"={{ $('Configure Search Parameters').item.json.businessType }}"},{"id":"store-003","name":"locationQuery","type":"string","value":"={{ $('Configure Search Parameters').item.json.locationQuery }}"},{"id":"store-004","name":"senderName","type":"string","value":"={{ $('Configure Search Parameters').item.json.senderName }}"},{"id":"store-005","name":"senderEmail","type":"string","value":"={{ $('Configure Search Parameters').item.json.senderEmail }}"},{"id":"store-006","name":"emailSubject","type":"string","value":"={{ $('Configure Search Parameters').item.json.emailSubject }}"}]}},"typeVersion":3.4},{"id":"a1000000-0000-0000-0000-000000000005","name":"Wait Before First Maps Poll","type":"n8n-nodes-base.wait","position":[1248,304],"webhookId":"a1000000-wait-maps-initial-0000","parameters":{"amount":30},"typeVersion":1.1},{"id":"a1000000-0000-0000-0000-000000000006","name":"Poll Maps Scrape Status","type":"n8n-nodes-base.httpRequest","position":[1504,304],"parameters":{"url":"=https://app.scrapercity.com/api/v1/scrape/status/{{ $('Store Maps Run ID').item.json.mapsRunId }}","method":"GET","options":{},"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"credential-id","name":"ScraperCity API Key"}},"typeVersion":4.2},{"id":"a1000000-0000-0000-0000-000000000007","name":"Is Maps Scrape Complete?","type":"n8n-nodes-base.if","position":[1760,304],"parameters":{"options":{},"conditions":{"options":{"version":2,"caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"cond-maps-001","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.status }}","rightValue":"SUCCEEDED"}]}},"typeVersion":2.2},{"id":"a1000000-0000-0000-0000-000000000008","name":"Wait 60s Before Retry Maps Poll","type":"n8n-nodes-base.wait","position":[2016,768],"webhookId":"a1000000-wait-maps-retry-0000","parameters":{"amount":60},"typeVersion":1.1},{"id":"a1000000-0000-0000-0000-000000000009","name":"Download Maps Results","type":"n8n-nodes-base.httpRequest","position":[2240,304],"parameters":{"url":"=https://app.scrapercity.com/api/downloads/{{ $('Store Maps Run ID').item.json.mapsRunId }}","method":"GET","options":{},"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"credential-id","name":"ScraperCity API Key"}},"typeVersion":4.2},{"id":"a1000000-0000-0000-0000-000000000010","name":"Parse and Clean Business Records","type":"n8n-nodes-base.code","position":[2512,304],"parameters":{"jsCode":"// Parse CSV or JSON array returned by ScraperCity Maps download\n// The download endpoint returns a JSON array of business objects\nconst raw = $input.first().json;\n\nlet businesses = [];\n\n// Handle both array response and nested data\nif (Array.isArray(raw)) {\n  businesses = raw;\n} else if (Array.isArray(raw.data)) {\n  businesses = raw.data;\n} else if (typeof raw === 'string') {\n  // Basic CSV parse -- split on newlines, first row is header\n  const lines = raw.trim().split('\\n');\n  const headers = lines[0].split(',').map(h => h.replace(/\"/g, '').trim());\n  businesses = lines.slice(1).map(line => {\n    const vals = line.split(',');\n    const obj = {};\n    headers.forEach((h, i) => {\n      obj[h] = (vals[i] || '').replace(/\"/g, '').trim();\n    });\n    return obj;\n  });\n}\n\n// Normalize fields and keep only records with a website\nconst cleaned = [];\nconst seen = new Set();\n\nfor (const biz of businesses) {\n  const name = biz.name || biz.title || biz.businessName || '';\n  const website = biz.website || biz.url || biz.websiteUrl || '';\n  const phone = biz.phone || biz.phoneNumber || '';\n  const address = biz.address || biz.fullAddress || '';\n  const city = biz.city || '';\n\n  if (!name || !website) continue;\n\n  // Extract domain from website\n  let domain = '';\n  try {\n    const url = new URL(website.startsWith('http') ? website : 'https://' + website);\n    domain = url.hostname.replace(/^www\\./, '');\n  } catch (e) {\n    domain = website.replace(/^https?:\\/\\/(www\\.)?/, '').split('/')[0];\n  }\n\n  if (!domain || seen.has(domain)) continue;\n  seen.add(domain);\n\n  // Try to split name into first/last for email finder\n  const nameParts = name.trim().split(' ');\n  const firstName = nameParts[0] || 'Owner';\n  const lastName = nameParts.slice(1).join(' ') || '';\n\n  cleaned.push({\n    json: {\n      businessName: name,\n      website,\n      domain,\n      phone,\n      address,\n      city,\n      firstName,\n      lastName\n    }\n  });\n}\n\nreturn cleaned;"},"typeVersion":2},{"id":"a1000000-0000-0000-0000-000000000011","name":"Filter Businesses With a Website","type":"n8n-nodes-base.filter","position":[2736,304],"parameters":{"options":{},"conditions":{"options":{"version":2,"caseSensitive":false,"typeValidation":"loose"},"combinator":"and","conditions":[{"id":"filt-001","operator":{"type":"string","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json.domain }}","rightValue":""}]}},"typeVersion":2.2},{"id":"a1000000-0000-0000-0000-000000000012","name":"Remove Duplicate Domains","type":"n8n-nodes-base.removeDuplicates","position":[2992,304],"parameters":{"compare":"selectedFields","options":{},"fieldsToCompare":{"fields":[{"fieldName":"domain"}]}},"typeVersion":2},{"id":"a1000000-0000-0000-0000-000000000013","name":"Batch Businesses for Email Finding","type":"n8n-nodes-base.splitInBatches","position":[3216,304],"parameters":{"options":{},"batchSize":10},"typeVersion":3},{"id":"a1000000-0000-0000-0000-000000000014","name":"Prepare Email Finder Payload","type":"n8n-nodes-base.code","position":[3488,304],"parameters":{"jsCode":"// Build contacts array for ScraperCity email-finder from current batch\nconst items = $input.all();\n\nconst contacts = items.map(item => ({\n  first_name: item.json.firstName || 'Owner',\n  last_name: item.json.lastName || '',\n  domain: item.json.domain\n}));\n\n// Also keep original business data to merge back later\nreturn [{\n  json: {\n    contacts,\n    originalItems: items.map(i => i.json)\n  }\n}];"},"typeVersion":2},{"id":"a1000000-0000-0000-0000-000000000015","name":"Start Email Finder Scrape","type":"n8n-nodes-base.httpRequest","position":[3712,304],"parameters":{"url":"https://app.scrapercity.com/api/v1/scrape/email-finder","method":"POST","options":{},"jsonBody":"={\n  \"contacts\": {{ JSON.stringify($json.contacts) }}\n}","sendBody":true,"specifyBody":"json","authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"credential-id","name":"ScraperCity API Key"}},"typeVersion":4.2},{"id":"a1000000-0000-0000-0000-000000000016","name":"Store Email Finder Run ID","type":"n8n-nodes-base.set","position":[3968,304],"parameters":{"options":{},"assignments":{"assignments":[{"id":"store-ef-001","name":"emailRunId","type":"string","value":"={{ $json.runId }}"},{"id":"store-ef-002","name":"originalItems","type":"string","value":"={{ JSON.stringify($('Prepare Email Finder Payload').item.json.originalItems) }}"}]}},"typeVersion":3.4},{"id":"a1000000-0000-0000-0000-000000000017","name":"Wait Before First Email Poll","type":"n8n-nodes-base.wait","position":[4192,304],"webhookId":"a1000000-wait-email-initial-000","parameters":{"amount":30},"typeVersion":1.1},{"id":"a1000000-0000-0000-0000-000000000018","name":"Poll Email Finder Status","type":"n8n-nodes-base.httpRequest","position":[4464,304],"parameters":{"url":"=https://app.scrapercity.com/api/v1/scrape/status/{{ $('Store Email Finder Run ID').item.json.emailRunId }}","method":"GET","options":{},"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"credential-id","name":"ScraperCity API Key"}},"typeVersion":4.2},{"id":"a1000000-0000-0000-0000-000000000019","name":"Is Email Finder Complete?","type":"n8n-nodes-base.if","position":[4720,304],"parameters":{"options":{},"conditions":{"options":{"version":2,"caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"cond-ef-001","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.status }}","rightValue":"SUCCEEDED"}]}},"typeVersion":2.2},{"id":"a1000000-0000-0000-0000-000000000020","name":"Wait 60s Before Retry Email Poll","type":"n8n-nodes-base.wait","position":[4976,768],"webhookId":"a1000000-wait-email-retry-00000","parameters":{"amount":60},"typeVersion":1.1},{"id":"a1000000-0000-0000-0000-000000000021","name":"Download Email Finder Results","type":"n8n-nodes-base.httpRequest","position":[5200,304],"parameters":{"url":"=https://app.scrapercity.com/api/downloads/{{ $('Store Email Finder Run ID').item.json.emailRunId }}","method":"GET","options":{},"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"credential-id","name":"ScraperCity API Key"}},"typeVersion":4.2},{"id":"a1000000-0000-0000-0000-000000000022","name":"Merge Emails With Business Data","type":"n8n-nodes-base.code","position":[5456,304],"parameters":{"jsCode":"// Merge email finder results back with original business records\nconst emailResults = $input.first().json;\nconst originalItems = JSON.parse($('Store Email Finder Run ID').item.json.originalItems || '[]');\n\nlet emailList = [];\n\nif (Array.isArray(emailResults)) {\n  emailList = emailResults;\n} else if (Array.isArray(emailResults.data)) {\n  emailList = emailResults.data;\n} else if (Array.isArray(emailResults.contacts)) {\n  emailList = emailResults.contacts;\n}\n\n// Build a lookup map by domain\nconst emailByDomain = {};\nfor (const record of emailList) {\n  const domain = record.domain || record.company_domain || '';\n  const email = record.email || record.emailAddress || '';\n  if (domain && email) {\n    emailByDomain[domain] = email;\n  }\n}\n\n// Merge\nconst merged = [];\nfor (const biz of originalItems) {\n  const email = emailByDomain[biz.domain] || '';\n  if (!email) continue; // skip businesses where no email was found\n  merged.push({\n    json: {\n      ...biz,\n      email\n    }\n  });\n}\n\nreturn merged;"},"typeVersion":2},{"id":"a1000000-0000-0000-0000-000000000023","name":"Filter Records With Valid Email","type":"n8n-nodes-base.filter","position":[5728,304],"parameters":{"options":{},"conditions":{"options":{"version":2,"caseSensitive":false,"typeValidation":"loose"},"combinator":"and","conditions":[{"id":"filt-email-001","operator":{"type":"string","operation":"contains"},"leftValue":"={{ $json.email }}","rightValue":"@"}]}},"typeVersion":2.2},{"id":"a1000000-0000-0000-0000-000000000024","name":"Send Outreach Email","type":"n8n-nodes-base.gmail","position":[5968,304],"parameters":{"sendTo":"={{ $json.email }}","message":"=Hi {{ $json.firstName }},\n\nI came across {{ $json.businessName }} while looking at {{ $json.businessType || 'businesses' }} in {{ $json.city || $('Configure Search Parameters').item.json.locationQuery }} and wanted to reach out.\n\nI work with local businesses like yours and think I could help you get more clients. Would you be open to a quick 15-minute call this week to explore if there's a fit?\n\nLooking forward to hearing from you.\n\nBest regards,\n{{ $('Configure Search Parameters').item.json.senderName }}\n{{ $('Configure Search Parameters').item.json.senderEmail }}","options":{"appendAttribution":false},"subject":"={{ $('Configure Search Parameters').item.json.emailSubject }}","emailType":"text"},"credentials":{"gmailOAuth2":{"id":"credential-id","name":"Gmail OAuth2 Credential"}},"typeVersion":2.1}],"settings":{"executionOrder":"v1"},"connections":{"Start Workflow":{"main":[[{"node":"Configure Search Parameters","type":"main","index":0}]]},"Store Maps Run ID":{"main":[[{"node":"Wait Before First Maps Poll","type":"main","index":0}]]},"Send Outreach Email":{"main":[[{"node":"Batch Businesses for Email Finding","type":"main","index":0}]]},"Download Maps Results":{"main":[[{"node":"Parse and Clean Business Records","type":"main","index":0}]]},"Poll Maps Scrape Status":{"main":[[{"node":"Is Maps Scrape Complete?","type":"main","index":0}]]},"Is Maps Scrape Complete?":{"main":[[{"node":"Download Maps Results","type":"main","index":0}],[{"node":"Wait 60s Before Retry Maps Poll","type":"main","index":0}]]},"Poll Email Finder Status":{"main":[[{"node":"Is Email Finder Complete?","type":"main","index":0}]]},"Remove Duplicate Domains":{"main":[[{"node":"Batch Businesses for Email Finding","type":"main","index":0}]]},"Start Google Maps Scrape":{"main":[[{"node":"Store Maps Run ID","type":"main","index":0}]]},"Is Email Finder Complete?":{"main":[[{"node":"Download Email Finder Results","type":"main","index":0}],[{"node":"Wait 60s Before Retry Email Poll","type":"main","index":0}]]},"Start Email Finder Scrape":{"main":[[{"node":"Store Email Finder Run ID","type":"main","index":0}]]},"Store Email Finder Run ID":{"main":[[{"node":"Wait Before First Email Poll","type":"main","index":0}]]},"Configure Search Parameters":{"main":[[{"node":"Start Google Maps Scrape","type":"main","index":0}]]},"Wait Before First Maps Poll":{"main":[[{"node":"Poll Maps Scrape Status","type":"main","index":0}]]},"Prepare Email Finder Payload":{"main":[[{"node":"Start Email Finder Scrape","type":"main","index":0}]]},"Wait Before First Email Poll":{"main":[[{"node":"Poll Email Finder Status","type":"main","index":0}]]},"Download Email Finder Results":{"main":[[{"node":"Merge Emails With Business Data","type":"main","index":0}]]},"Filter Records With Valid Email":{"main":[[{"node":"Send Outreach Email","type":"main","index":0}]]},"Merge Emails With Business Data":{"main":[[{"node":"Filter Records With Valid Email","type":"main","index":0}]]},"Wait 60s Before Retry Maps Poll":{"main":[[{"node":"Poll Maps Scrape Status","type":"main","index":0}]]},"Filter Businesses With a Website":{"main":[[{"node":"Remove Duplicate Domains","type":"main","index":0}]]},"Parse and Clean Business Records":{"main":[[{"node":"Filter Businesses With a Website","type":"main","index":0}]]},"Wait 60s Before Retry Email Poll":{"main":[[{"node":"Poll Email Finder Status","type":"main","index":0}]]},"Batch Businesses for Email Finding":{"main":[[{"node":"Prepare Email Finder Payload","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":35,"nodeTypes":{"n8n-nodes-base.if":{"count":2},"n8n-nodes-base.set":{"count":3},"n8n-nodes-base.code":{"count":3},"n8n-nodes-base.wait":{"count":4},"n8n-nodes-base.gmail":{"count":1},"n8n-nodes-base.filter":{"count":2},"n8n-nodes-base.stickyNote":{"count":11},"n8n-nodes-base.httpRequest":{"count":6},"n8n-nodes-base.manualTrigger":{"count":1},"n8n-nodes-base.splitInBatches":{"count":1},"n8n-nodes-base.removeDuplicates":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Alex Berman","username":"alexberman","bio":"Serial entrepreneur, author of The Cold Email Manifesto, 100K+ YouTube subscribers. Built ScraperCity - web scraping and lead generation SaaS with 12+ scrapers including Apollo, Google Maps, People Finder, and a 3M+ contact B2B Lead Database.","verified":true,"links":["https://scrapercity.com"],"avatar":"https://gravatar.com/avatar/0526442f3f7a36050517a2796f820fddb26c5f6c873b7af4a560b6ba9a177c3d?r=pg&d=retro&size=200"},"nodes":[{"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":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"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/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting 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/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/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/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/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/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"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/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"},{"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.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"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":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":514,"icon":"fa:pause-circle","name":"n8n-nodes-base.wait","codex":{"data":{"alias":["pause","sleep","delay","timeout"],"resources":{"generic":[{"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/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.wait/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Wait","color":"#804050"},"iconData":{"icon":"pause-circle","type":"icon"},"displayName":"Wait","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"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":838,"icon":"fa:mouse-pointer","name":"n8n-nodes-base.manualTrigger","codex":{"data":{"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.manualworkflowtrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\"]","defaults":{"name":"When clicking ‘Execute workflow’","color":"#909298"},"iconData":{"icon":"mouse-pointer","type":"icon"},"displayName":"Manual Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":844,"icon":"fa:filter","name":"n8n-nodes-base.filter","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The Filter node can be used to filter items based on a condition. If the condition is met, the item will be passed on to the next node. If the condition is not met, the item will be omitted. Conditions can be combined together by AND(meet all conditions), or OR(meet at least one condition).","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.filter/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Filter","color":"#229eff"},"iconData":{"icon":"filter","type":"icon"},"displayName":"Filter","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1238,"icon":"file:removeDuplicates.svg","name":"n8n-nodes-base.removeDuplicates","codex":{"data":{"alias":["Dedupe","Deduplicate","Duplicates","Remove","Unique","Transform","Array","List","Item"],"details":"","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.removeduplicates/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Remove Duplicates"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIj48ZyBmaWxsPSIjNTRCOEM5IiBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGQ9Ik0xMzQuMDk3IDExMWgzOC44Mjl2MzIuNTA4SDEzOC4xNnYzNC42MzVoLTMyLjUwOHYtMzguNjk5YzAtMTUuNzA5IDEyLjczNS0yOC40NDQgMjguNDQ1LTI4LjQ0NG03Ny42NTggMzIuNTA4VjExMWg3Ny42NTd2MzIuNTA4em0xMTYuNDg2IDBWMTExaDc3LjY1OHYzMi41MDh6bTExNi40ODcgMFYxMTFoMzguODI5YzE1LjcxIDAgMjguNDQ1IDEyLjczNSAyOC40NDUgMjguNDQ0djM4LjY5OWgtMzIuNTA4di0zNC42MzV6bTM0Ljc2NiA3My4yMzhoMzIuNTA4djM4LjY5OGMwIDE1LjcxLTEyLjczNSAyOC40NDUtMjguNDQ1IDI4LjQ0NWgtMzguODI5di0zMi41MDhoMzQuNzY2ek0wIDI0NC41MzdDMCAyMjkuMzI5IDEyLjczNSAyMTcgMjguNDQ0IDIxN2gzNDkuNDYxYzE1LjcwOSAwIDI4LjQ0NCAxMi4zMjkgMjguNDQ0IDI3LjUzN3YxMjkuODE1YzAgMTUuMjA4LTEyLjczNSAyNy41MzctMjguNDQ0IDI3LjUzN0gyOC40NDVDMTIuNzM0IDQwMS44ODkgMCAzODkuNTYgMCAzNzQuMzUyeiIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9ImEiPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0wIDBoNTEydjUxMkgweiIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPg=="},"displayName":"Remove Duplicates","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":37,"name":"Lead Generation"}],"image":[]}}