{"workflow":{"id":13298,"name":"Monitor Google Search rankings with SerpApi and Google Sheets","views":54,"recentViews":0,"totalViews":54,"createdAt":"2026-02-11T07:15:06.322Z","description":"## Google Keyword SEO Monitoring\n\n### What this is about\n\nThis workflow enables SEO monitoring by checking Google rank positions for a list of keywords and domains. It uses SerpApi's Google Search API, but can be customized to use any of SerpApi's APIs.\n\n### How it works\n\nThe workflow accepts Google Sheet with a list of keywords and domains to identify their rank in Google search results.\n\nThe results are synced to two sheets in a Google Sheet. The first is a log of all past runs. The second is an overview list showing the results from the latest run.\n\nThe workflow includes a Wait node that delays between each keyword to avoid Google Sheets API rate limiting. Adjust this if you have a custom rate limit.\n\n### Setup\n\n1. Create a free SerpApi account here: https://serpapi.com/\n1. Add SerpApi credentials to n8n. Your SerpApi API key is here: https://serpapi.com/manage-api-key\n1. Connect your Google Sheets accounts to n8n. Help available here: https://n8n.io/integrations/google-sheets/\n1. Copy this Google Sheet to your own Google account: https://docs.google.com/spreadsheets/d/148gjSSqSY5x9Gz5JWE_FDXHOuB7ASTomSyxkZjrjuNc/edit?gid=1750873622#gid=1750873622\n1. Set your list of keywords and domains in the 'Latest Run' sheet.\n1. Connect your Google Sheet in the 'Get Keywords and Domains to Match' node\n1. Connect your Google Sheet in the 'Update Rank Log' node\n1. Connect your Google Sheet again in the 'Update Latest Run' node\n1. (Optional) Customize the schedule to your needs\n1. (Optional) Set a custom page limit and match type in 'Set Page Limit & Match Type'\n\n### Documentation\n\n[SerpApi Google Search API](https://serpapi.com/search-api)\n[SerpApi n8n Node Intro Guide](https://serpapi.com/blog/boost-your-n8n-workflows-with-serpapis-verified-node/)\n","workflow":{"id":"0UMNp6VvaRTKvh2L","meta":{"instanceId":"886f6aad18962318bf6e0e61dcc99fe4272655356eb72558c67fde0caf721bc9"},"name":"Monitor Google Search rank with SerpApi & Google Sheets","tags":[],"nodes":[{"id":"be9f2df9-ac78-4b5a-b2a2-5f4d2105cd40","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[624,400],"parameters":{"color":7,"width":624,"height":460,"content":"## Kick Off the Workflow\n\nConfigured to run at 10 AM UTC every day. Adjust as needed or trigger it manually.\n\nAdd your own Google Sheet in the Google Sheet node to fetch your keywords and domains to match. \n\nThe workflow will loop over each keyword and domain pair."},"typeVersion":1},{"id":"ef8aad69-9f80-4f3e-8ab3-9a95b9d57d90","name":"Loop Over Keywords","type":"n8n-nodes-base.splitInBatches","position":[1104,704],"parameters":{"options":{}},"typeVersion":3},{"id":"91dae5e2-f466-429f-86eb-218e995b7691","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[2560,224],"parameters":{"color":7,"width":632,"height":628,"content":"## Update Google Sheet\n\nLogs results and updates last run overview sheet.\n\nAdd your own Google Sheet here.\n\nIf the mappings get cleared when you add your Google Sheet, here they are:\n\nsearched_at: `{{ $now.toISO() }}`\ntarget: `{{ $('Loop Over Keywords').item.json.target }}`\nkeyword: `{{ $('Search Google').item.json.search_parameters.q }}`\nrank: `{{ $json.rank }}`\n\nThe update last run node should match on `row_number`. Enter this expression to match on:\n\n`{{ $('Loop Over Keywords').item.json.row_number }}`\n\nAfter the update, workflow will wait 4 seconds before going to the next keyword to avoid the Google Sheets API rate limit. You can remove/adjust this if you have a a higher limit on the Google Sheets API. "},"typeVersion":1},{"id":"818e696f-02f0-4731-a327-571b4fd26dac","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[0,208],"parameters":{"width":598,"height":912,"content":"## Google Keyword SEO Monitoring\n\n### What this is about\n\nThis workflow enables SEO monitoring by checking Google rank positions for a list of keywords and domains. It uses SerpApi's Google Search API, but can be customized to use any of SerpApi's APIs.\n\n### How it works\n\nThe workflow accepts Google Sheet with a list of keywords and domains to identify their rank in Google search results.\n\nThe results are synced to two sheets in a Google Sheet. The first is a log of all past runs. The second is an overview list showing the results from the latest run.\n\nThe workflow includes a Wait node that delays between each keyword to avoid Google Sheets API rate limiting. Adjust this if you have a custom rate limit.\n\n### Setup\n\n1. Create a free SerpApi account here: https://serpapi.com/\n1. Add SerpApi credentials to n8n. Your SerpApi API key is here: https://serpapi.com/manage-api-key\n1. Connect your Google Sheets accounts to n8n. Help available here: https://n8n.io/integrations/google-sheets/\n1. Copy this Google Sheet to your own Google account: https://docs.google.com/spreadsheets/d/148gjSSqSY5x9Gz5JWE_FDXHOuB7ASTomSyxkZjrjuNc/edit?gid=1750873622#gid=1750873622\n1. Set your list of keywords and domains in the 'Latest Run' sheet.\n1. Connect your Google Sheet in the 'Get Keywords and Domains to Match' node\n1. Connect your Google Sheet in the 'Update Rank Log' node\n1. Connect your Google Sheet again in the 'Update Latest Run' node\n1. (Optional) Customize the schedule to your needs\n1. (Optional) Set a custom page limit and match type in 'Set Page Limit & Match Type'\n\n### Documentation\n\n[SerpApi Google Search API](https://serpapi.com/search-api)\n[SerpApi n8n Node Intro Guide](https://serpapi.com/blog/boost-your-n8n-workflows-with-serpapis-verified-node/)\n"},"typeVersion":1},{"id":"d77d05eb-09cb-40b3-be88-efc9e8c01b2e","name":"Update Latest Run","type":"n8n-nodes-base.googleSheets","position":[2832,688],"parameters":{"columns":{"value":{"rank":"={{ $('Parse Rank for Target Domain or Page').item.json.rank }}","target":"={{ $('Get Keywords and Domains to Match').item.json.target }}","keyword":"={{ $('Search Google').item.json.search_parameters.q }}","row_number":"={{ $('Get Keywords and Domains to Match').item.json.row_number }}","searched_at":"={{ $now.toISO() }}"},"schema":[{"id":"target","type":"string","display":true,"removed":false,"required":false,"displayName":"target","defaultMatch":false,"canBeUsedToMatch":true},{"id":"keyword","type":"string","display":true,"removed":false,"required":false,"displayName":"keyword","defaultMatch":false,"canBeUsedToMatch":true},{"id":"domain_keyword_pair","type":"string","display":true,"removed":true,"required":false,"displayName":"domain_keyword_pair","defaultMatch":false,"canBeUsedToMatch":true},{"id":"rank","type":"string","display":true,"required":false,"displayName":"rank","defaultMatch":false,"canBeUsedToMatch":true},{"id":"searched_at","type":"string","display":true,"required":false,"displayName":"searched_at","defaultMatch":false,"canBeUsedToMatch":true},{"id":"row_number","type":"number","display":true,"removed":false,"readOnly":true,"required":false,"displayName":"row_number","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["row_number"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"url","value":"https://docs.google.com/spreadsheets/d/106cvWeYYcT044aE8P7eKCreVaSS0MZ4XT_vKC3MzFNo/edit?pli=1&gid=1750873622#gid=1750873622"},"documentId":{"__rl":true,"mode":"url","value":"https://docs.google.com/spreadsheets/d/106cvWeYYcT044aE8P7eKCreVaSS0MZ4XT_vKC3MzFNo/edit?pli=1&gid=1750873622#gid=1750873622"}},"typeVersion":4.5},{"id":"0ff07a23-0a37-4ac7-9d7a-0cf5809b93c1","name":"Search Google","type":"n8n-nodes-serpapi.serpApi","position":[1712,704],"parameters":{"q":"={{ $('Get Keywords and Domains to Match').item.json.keyword }}","location":"Austin, Texas, United States","requestOptions":{},"additionalFields":{"start":"={{ $json.start }}","no_cache":false}},"typeVersion":1},{"id":"627b4185-71b0-4fd7-ac7b-f79ccdcec6b2","name":"Update Rank Log","type":"n8n-nodes-base.googleSheets","position":[2624,688],"parameters":{"columns":{"value":{"rank":"={{ $json.rank }}","target":"={{ $('Get Keywords and Domains to Match').item.json.target }}","keyword":"={{ $('Search Google').item.json.search_parameters.q }}","searched_at":"={{ $now.toISO() }}"},"schema":[{"id":"searched_at","type":"string","display":true,"required":false,"displayName":"searched_at","defaultMatch":false,"canBeUsedToMatch":true},{"id":"target","type":"string","display":true,"removed":false,"required":false,"displayName":"target","defaultMatch":false,"canBeUsedToMatch":true},{"id":"keyword","type":"string","display":true,"required":false,"displayName":"keyword","defaultMatch":false,"canBeUsedToMatch":true},{"id":"rank","type":"string","display":true,"required":false,"displayName":"rank","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"url","value":"https://docs.google.com/spreadsheets/d/106cvWeYYcT044aE8P7eKCreVaSS0MZ4XT_vKC3MzFNo/edit?pli=1&gid=0#gid=0"},"documentId":{"__rl":true,"mode":"url","value":"https://docs.google.com/spreadsheets/d/106cvWeYYcT044aE8P7eKCreVaSS0MZ4XT_vKC3MzFNo/edit?pli=1&gid=0#gid=0"}},"typeVersion":4.5},{"id":"754e9a3a-6cbc-4df2-8fa8-eaf47e511cf5","name":"Get Keywords and Domains to Match","type":"n8n-nodes-base.googleSheets","position":[880,704],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"url","value":"https://docs.google.com/spreadsheets/d/106cvWeYYcT044aE8P7eKCreVaSS0MZ4XT_vKC3MzFNo/edit?pli=1&gid=1750873622#gid=1750873622"},"documentId":{"__rl":true,"mode":"url","value":"https://docs.google.com/spreadsheets/d/106cvWeYYcT044aE8P7eKCreVaSS0MZ4XT_vKC3MzFNo/edit?pli=1&gid=1750873622#gid=1750873622"}},"typeVersion":4.5},{"id":"04bc2052-d3ea-46da-8e21-29f4dd089872","name":"If - Next Page or Next Keyword","type":"n8n-nodes-base.if","position":[2368,704],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"loose"},"combinator":"or","conditions":[{"id":"bf3c9bb0-8bdf-4a1c-99c9-1631afd7426e","operator":{"type":"string","operation":"notEquals"},"leftValue":"={{ $json.rank }}","rightValue":"N/A"},{"id":"30a48eb7-a3ff-4728-a00a-e56b4629c054","operator":{"type":"number","operation":"lte"},"leftValue":"={{ $json.page_limit * 10 }}","rightValue":"={{ $json.start }}"}]},"looseTypeValidation":true},"typeVersion":2.3},{"id":"0c5b2240-64ef-415f-8083-47cc88e3df24","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[1264,400],"parameters":{"color":7,"width":364,"height":460,"content":"## Set Page Limit & Match Type\n\nTemplate defaults to checking up to 10 pages to find a domain. Update `data.pagination_limit` here to set your own limit.\n\nTemplate defaults to match on domain. Update `data.match_type` to match for page URLs.\n- `'page'` - Match exact URL path (e.g., `example.com/page1`)\n- `'domain'` - Match any URL from the domain (e.g., any page from `example.com`)"},"typeVersion":1},{"id":"5b8d033b-276b-40b5-8f26-b4d95b11c890","name":"Sticky Note8","type":"n8n-nodes-base.stickyNote","position":[2304,400],"parameters":{"color":7,"width":236,"height":460,"content":"## Next Page or Next Keyword\n\nIf a match is found or the pagination limit is hit, it goes to the next keyword. Otherwise, it requests another page for the same keyword. "},"typeVersion":1},{"id":"46c24178-51bc-45b2-b0ec-cfcb737b9926","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[1648,224],"parameters":{"color":7,"width":636,"height":636,"content":"## Search & Parse Rank\n\nThe SerpApi node searches the keyword in through Google Search API.\n\nThe code finds and parses the target domain's rank. Assigns \"N/A\" if a domain is not found in the results.\n\n### URL Matching Behavior\nMake sure to set your `data.match_type` from **'Set Page Limit & Match Type'** node: \n\n**Page Mode:**\n- Target with path (e.g., `example.com/blog`) → matches exact path only\n- Target without path (e.g., `example.com`) → matches any page from domain\n\n**Domain Mode:**\n- Always matches any page from the domain, ignoring path\n\n### URL Normalization\nURLs are normalized by removing protocols, `www.`, trailing slashes, and converting to lowercase for consistent matching."},"typeVersion":1},{"id":"d901ec60-bdf1-4cc6-8a33-6d8d7f435945","name":"Parse Rank for Target Domain or Page","type":"n8n-nodes-base.code","position":[2032,704],"parameters":{"jsCode":"const data = $getWorkflowStaticData('global');\n\nif ($input.first().json.search_information.organic_results_state != \"Fully empty\") {\n  \n  const targetUrl = $('Loop Over Keywords').first().json.target;\n  const matchType = $('Loop Over Keywords').first().json.match_type || data.match_type;\n  \n  function normalizeUrl(url) {\n    if (!url) return null;\n    let cleanUrl = url.trim().replace(/^[\"']|[\"']$/g, '');\n    cleanUrl = cleanUrl.replace(/^https?:\\/\\//, '');\n    cleanUrl = cleanUrl.replace(/^www\\./, '');\n    cleanUrl = cleanUrl.replace(/\\/$/, '');\n    return cleanUrl.toLowerCase();\n  }\n  \n  const normalizedTarget = normalizeUrl(targetUrl);\n  const targetHasPath = normalizedTarget.includes('/');\n  \n  if (matchType === 'domain' || !targetHasPath) {\n    const targetDomain = normalizedTarget.split('/')[0];\n    index = $input.first().json.organic_results.findIndex(obj => {\n      const resultUrl = normalizeUrl(obj.link);\n      const resultDomain = resultUrl ? resultUrl.split('/')[0] : null;\n      return resultDomain === targetDomain;\n    });\n  } else {\n    index = $input.first().json.organic_results.findIndex(obj => {\n      const resultUrl = normalizeUrl(obj.link);\n      return resultUrl === normalizedTarget;\n    });\n  }\n\n  if (index >= 0) {\n    data.rank = data.start + index + 1;\n  } else {\n    data.rank = \"N/A\"\n  }\n  \n  data.start += 10\n  \n} else {\n  data.rank = \"N/A\"\n  data.start = 100000\n}\n\nreturn data;"},"typeVersion":2},{"id":"38f38f68-2d4a-4b80-9fb3-61e6ec608288","name":"Set Page Limit & Match Type","type":"n8n-nodes-base.code","position":[1408,704],"parameters":{"jsCode":"const data = $getWorkflowStaticData('global');\ndata.start = 0; // Leave as is\n\n// Update below value to limit how many pages to check before moving to the next keyword\n// Default is 10 to check up to 100 results\n// Set to 1 to only check the first page\n// Set to a high value (e.g. 50) to ensure all possible pages are checked\ndata.page_limit = 10;\n\n// Set your default match type here: 'domain' or 'page'\n// 'domain' will match on the first result matching your provided domain\n// 'page' will match on a specific page's URL\ndata.match_type = 'domain';\n\nreturn data;"},"typeVersion":2},{"id":"3fd04db6-1be6-45fa-996c-33b33515e2e2","name":"Wait Before Next Keyword","type":"n8n-nodes-base.wait","position":[3040,688],"webhookId":"51cb9f76-6908-4617-a5f5-767d92d68b89","parameters":{"amount":4},"typeVersion":1.1},{"id":"6f5ac293-183c-4b90-b755-d936f40afb20","name":"Schedule Workflow","type":"n8n-nodes-base.scheduleTrigger","position":[688,704],"parameters":{"rule":{"interval":[{"triggerAtHour":10}]}},"typeVersion":1.2}],"active":false,"pinData":{},"settings":{"availableInMCP":false,"executionOrder":"v1"},"versionId":"b1bd15b3-213d-418b-a0ad-f8b8754dc83f","connections":{"Search Google":{"main":[[{"node":"Parse Rank for Target Domain or Page","type":"main","index":0}]]},"Update Rank Log":{"main":[[{"node":"Update Latest Run","type":"main","index":0}]]},"Schedule Workflow":{"main":[[{"node":"Get Keywords and Domains to Match","type":"main","index":0}]]},"Update Latest Run":{"main":[[{"node":"Wait Before Next Keyword","type":"main","index":0}]]},"Loop Over Keywords":{"main":[[],[{"node":"Set Page Limit & Match Type","type":"main","index":0}]]},"Wait Before Next Keyword":{"main":[[{"node":"Loop Over Keywords","type":"main","index":0}]]},"Set Page Limit & Match Type":{"main":[[{"node":"Search Google","type":"main","index":0}]]},"If - Next Page or Next Keyword":{"main":[[{"node":"Update Rank Log","type":"main","index":0}],[{"node":"Search Google","type":"main","index":0}]]},"Get Keywords and Domains to Match":{"main":[[{"node":"Loop Over Keywords","type":"main","index":0}]]},"Parse Rank for Target Domain or Page":{"main":[[{"node":"If - Next Page or Next Keyword","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":16,"nodeTypes":{"n8n-nodes-base.if":{"count":1},"n8n-nodes-base.code":{"count":2},"n8n-nodes-base.wait":{"count":1},"n8n-nodes-base.stickyNote":{"count":6},"n8n-nodes-serpapi.serpApi":{"count":1},"n8n-nodes-base.googleSheets":{"count":3},"n8n-nodes-base.splitInBatches":{"count":1},"n8n-nodes-base.scheduleTrigger":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"SerpApi","username":"serpapi","bio":"","verified":true,"links":["https://serpapi.com/"],"avatar":"https://gravatar.com/avatar/72b8444c0c76a6ea756748a275be98c1c4290a757976ae8488ffeb5938e22b40?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":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":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":839,"icon":"fa:clock","name":"n8n-nodes-base.scheduleTrigger","codex":{"data":{"alias":["Time","Scheduler","Polling","Cron","Interval"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\",\"schedule\"]","defaults":{"name":"Schedule Trigger","color":"#31C49F"},"iconData":{"icon":"clock","type":"icon"},"displayName":"Schedule Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":32,"name":"Market Research"}],"image":[]}}