{"workflow":{"id":14309,"name":"Send end-of-life software alerts using NocoDB, endoflife.date, and Slack","views":0,"recentViews":0,"totalViews":0,"createdAt":"2026-03-25T10:24:44.906Z","description":"## What Is This?\n\nThis workflow is an automated system that tracks End-of-Life (EOL) dates for software and technologies used across your projects. It eliminates the need to manually monitor EOL dates in spreadsheets or calendars by automatically fetching the latest EOL information and sending Slack notifications when software versions are approaching their end of support, end of life, or when new subversions are released.\n\n## Who Is It For?\n\nDesigned for DevOps teams, IT managers, project managers, CTOs, and technical leads responsible for maintaining software infrastructure. This workflow empowers anyone who needs to ensure their projects stay secure and compliant by using supported software versions.\n\nDevelopment agencies managing multiple client projects, internal IT teams overseeing infrastructure maintenance, and compliance officers tracking software support lifecycles will all find this solution invaluable. By automatically monitoring EOL dates from endoflife.date and cross-referencing them with your project inventory, the workflow ensures you never miss critical upgrade windows.\n\nWhether you manage a handful of internal applications or oversee dozens of client projects with varied technology stacks, this automated pipeline delivers timely, actionable alerts without manual date tracking.\n\n## How Does It Work?\n\nThis end-to-end EOL monitoring automation consists of five main stages:\n\n**1. Software Inventory Collection**  \nRetrieves your list of software to monitor from the NocoDB EOL Software table, then processes each software individually through the pipeline.\n\n**2. EOL Data Fetching**  \nConnects to the free endoflife.date API to fetch comprehensive EOL information for each software, including version cycles, latest subversions, release dates, support end dates, and EOL dates for over 400 products.\n\n**3. Data Normalization & Storage**  \nRenames API fields to human-readable formats, converts boolean values to proper nulls, and intelligently updates or creates records in the EOL Dates table based on existing data.\n\n**4. Project Analysis**  \nUses JavaScript to analyze all projects and their associated software versions, categorizing them into three priority groups: Past EOL (already end-of-life), EOL Today (ending today), and EOL in X days (approaching within configured threshold).\n\n**5. Intelligent Notifications**  \nFilters out projects without EOL concerns and sends beautifully formatted Slack messages to your designated channel, clearly organizing alerts by severity with complete version and date information.\n\n![image.png](fileId:5140)\n\n## How To Set It Up?\n\n**Prerequisites:**\n\n- An active n8n account or self-hosted instance\n- A NocoDB account with API access, might be self-hosted\n- A Slack workspace with appropriate permissions\n\n**Required NocoDB Tables:**  \nYou need to create three tables with specific schemas. Luckily, our workflow automates the set up as much as possible to provide better experience.\n\n**EOL Software Table** (manually populated):\n![image.png](fileId:5138)\n- `Title`: Single line text - must use valid software identifiers from [endoflife.date](https://endoflife.date/)\n\n**EOL Dates Table** (automatically populated):\n![image.png](fileId:5139)\n- `key`: Single line text\n- `Software`: Single line text\n- `Version`: Single line text\n- `Latest Subversion`: Single line text\n- `Subversion Release`: Date field\n- `End Of Life`: Date field\n- `End Of Support`: Date field\n- `Long Term Support`: Checkbox\n\n**EOL Projects Table** (manually populated):\n![image.png](fileId:5137)\n- `Project Name`: Single line text\n- `EOLDates`: Link field - Many-to-Many relationship to EOL Dates table\n\n**Configuration:**  \nIn the \"Config\" node, set `Days before EOL` to your desired notification threshold (default: 31 days).\n\n**Credentials Setup:**\n\n- Configure NocoDB API token in the NocoDB nodes\n- Set up Slack OAuth2 credentials in the \"Send a message\" node\n- Update the Slack channel ID to your desired notification channel\n\n**Scheduling:**  \nThe workflow runs automatically daily at 7:00 AM via the Schedule Trigger node. For initial setup, run it manually by pressing \"Execute workflow\" to populate the EOL Dates table.\n\n**Initial Data Entry:**\n\n1. First run: Manually populate the EOL Software table with software you want to track\n2. Execute the workflow manually to populate the EOL Dates table\n3. Populate the EOL Projects table by linking your project names to the relevant software versions from EOL Dates\n4. The workflow will now automatically monitor and notify you daily\n\n## What's More?\n\n**Rate Limiting Protection:**  \nThe workflow includes a Wait node between API calls to respect endoflife.date's rate limits, ensuring reliable long-term operation.\n\n**Smart Update Logic:**  \nThe workflow intelligently checks if EOL data already exists before deciding whether to update existing records or insert new ones, preventing duplicates and maintaining data integrity.\n\n**Flexible Alerting:**  \nConfigure your notification window from 1 to any number of days before EOL events, adapting to your team's upgrade planning cycles.\n\n## Thank You, Perfect!\n\nVisit my profile for other free business automations. And if you're looking for dedicated software development or custom n8n workflow solutions, don't hesitate to reach out at [developers@sailingbyte.com](mailto:developers@sailingbyte.com) or on [sailingbyte.com](sailingbyte.com)!\n","workflow":{"meta":{"instanceId":"","templateCredsSetupCompleted":true},"nodes":[{"id":"ec0bd9d6-b85a-4cf9-aacc-c539eb1e3bdb","name":"Wait","type":"n8n-nodes-base.wait","position":[1632,336],"webhookId":"a82d6dcc-974d-4474-9fc6-afa8c32f2efd","parameters":{},"typeVersion":1.1},{"id":"aec41046-584c-4883-9ce5-91441cf6b906","name":"Get EOL data from endoflife.date","type":"n8n-nodes-base.httpRequest","position":[32,96],"parameters":{"url":"=https://endoflife.date/api/{{ $json.Software.toLowerCase() }}.json","options":{}},"typeVersion":4.2},{"id":"09353e3b-d132-4a22-96bf-6cec6004fa0d","name":"Merge","type":"n8n-nodes-base.merge","position":[704,112],"parameters":{"mode":"combine","options":{},"joinMode":"enrichInput1","fieldsToMatchString":"key"},"typeVersion":3},{"id":"aa429f71-984c-4f8d-92d1-75d9f2b3da13","name":"Rename Keys","type":"n8n-nodes-base.renameKeys","position":[480,96],"parameters":{"keys":{"key":[{"newKey":"Version","currentKey":"cycle"},{"newKey":"Latest Subversion","currentKey":"latest"},{"newKey":"Subversion Release","currentKey":"latestReleaseDate"},{"newKey":"End Of Life","currentKey":"eol"},{"newKey":"Long Term Support","currentKey":"lts"},{"newKey":"End Of Support","currentKey":"support"}]},"additionalOptions":{}},"typeVersion":1},{"id":"2f33b884-12c0-4d2f-bb3e-7bf5c58d98f7","name":"Get Current Rows","type":"n8n-nodes-base.nocoDb","position":[32,320],"parameters":{"table":"mmk9jtv13jor4jh","options":{"fields":[]},"operation":"getAll","projectId":"pksfpoc943gwhvy","returnAll":true,"authentication":"nocoDbApiToken"},"credentials":{"nocoDbApiToken":{"id":"kAY3Nntg4Ze5X5sG","name":"NocoDB API Token"}},"typeVersion":3,"alwaysOutputData":true},{"id":"22258dbf-ee9f-49e7-bfbe-be506d0269ce","name":"Each Software Once","type":"n8n-nodes-base.splitInBatches","position":[-336,176],"parameters":{"options":{}},"typeVersion":3,"alwaysOutputData":false},{"id":"9cb4f585-0334-420e-ac82-67d32b3d6148","name":"Make ID Key","type":"n8n-nodes-base.set","position":[480,320],"parameters":{"options":{},"assignments":{"assignments":[{"id":"34db845e-cf0b-490f-a21d-77016359f5a5","name":"Id","type":"number","value":"={{ $json.Id }}"},{"id":"d18fcb8b-116f-494a-a98e-a83a9d1eeac2","name":"key","type":"string","value":"={{ $json.key }}"},{"id":"2f0ca0a0-a0d7-461b-98a6-139f78eab6f8","name":"Projects","type":"array","value":"={{ $json[\"_nc_m2m_EOLDates With P_EOLProjects\"] }}"}]}},"typeVersion":3.4},{"id":"f13b028e-6960-45eb-883d-3c8c391456e4","name":"If ID exists","type":"n8n-nodes-base.if","position":[1184,208],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"45f0bfd2-893b-48da-b1ee-45012c8e408e","operator":{"type":"number","operation":"gt"},"leftValue":"={{ $json.Id }}","rightValue":0}]}},"typeVersion":2.2},{"id":"b6cb8a38-5eb6-46ec-b565-35be14d004f6","name":"Insert New","type":"n8n-nodes-base.nocoDb","position":[1408,336],"parameters":{"table":"mmk9jtv13jor4jh","operation":"create","projectId":"pksfpoc943gwhvy","dataToSend":"autoMapInputData","authentication":"nocoDbApiToken"},"credentials":{"nocoDbApiToken":{"id":"kAY3Nntg4Ze5X5sG","name":"NocoDB API Token"}},"typeVersion":3},{"id":"a908bd4f-1789-436f-abdd-dece51d1dece","name":"Add Key and Software","type":"n8n-nodes-base.set","position":[256,96],"parameters":{"options":{},"assignments":{"assignments":[{"id":"79514700-9336-4da8-aa5b-b41a8e75f086","name":"key","type":"string","value":"={{ $(\"Each Software Once\").item.json.Software }}{{ $json.cycle }}"},{"id":"32088a9a-2699-4468-87b8-62ba6f287631","name":"Software","type":"string","value":"={{$(\"Each Software Once\").item.json.Software }}"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"b474cca8-fd77-47b3-9526-28cfac58fdfa","name":"Update Data","type":"n8n-nodes-base.nocoDb","position":[1408,192],"parameters":{"table":"mmk9jtv13jor4jh","operation":"update","projectId":"pksfpoc943gwhvy","dataToSend":"autoMapInputData","authentication":"nocoDbApiToken"},"credentials":{"nocoDbApiToken":{"id":"kAY3Nntg4Ze5X5sG","name":"NocoDB API Token"}},"typeVersion":3},{"id":"22395c86-ee5d-4199-b3a6-9d34b8509a0b","name":"Convert bool to null","type":"n8n-nodes-base.code","position":[960,112],"parameters":{"jsCode":"for (const item of $input.all()) {\n\n  if(typeof item.json['End Of Life'] == 'boolean')\n    item.json['End Of Life'] = null;\n\n  if(typeof item.json['End Of Support'] == 'boolean')\n    item.json['End Of Support'] = null;\n  \n}\n\nreturn $input.all();"},"typeVersion":2},{"id":"8c742698-8f44-45c7-b55b-9455549a600e","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[1152,-32],"parameters":{"color":7,"width":624,"height":528,"content":"## Step 4: Update EOL Dates table with newest info\nWe check if given software already has entry in the database, update it if it does, or insert new one if it doesn't. After that we wait to make sure we don't hit rate limits of endoflife.data"},"typeVersion":1},{"id":"12c0ad16-2754-49e5-bdfd-1198bf346670","name":"Config","type":"n8n-nodes-base.set","position":[-1104,176],"parameters":{"options":{},"assignments":{"assignments":[{"id":"e580b3f2-73ff-4eb0-85f1-3e826523d71f","name":"Days before EOL","type":"number","value":31}]}},"typeVersion":3.4},{"id":"bbc944cb-64c3-487a-bc93-9a9383963054","name":"Filter","type":"n8n-nodes-base.filter","position":[1424,-384],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"or","conditions":[{"id":"4cfa7ede-2a65-4763-8c9a-79e7c113d4ce","operator":{"type":"array","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json.Past_EOL }}","rightValue":""},{"id":"e131b9e0-f29c-43f3-b5c7-16e6020412de","operator":{"type":"array","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json.EOL_in_x_days }}","rightValue":""},{"id":"681428d6-52ee-48b4-9bf7-260a6f06b52c","operator":{"type":"array","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json.EOL_Today }}","rightValue":""}]}},"typeVersion":2.3},{"id":"dbd64e72-8e0e-434a-9df6-5612b6ea96f2","name":"Send a message","type":"n8n-nodes-base.slack","position":[1600,-320],"webhookId":"d1de21d1-e751-4938-b6db-88041962c6fd","parameters":{"select":"channel","blocksUi":"={\n\t\"blocks\": [\n\t\t{\n\t\t\t\"type\": \"header\",\n\t\t\t\"text\": {\n\t\t\t\t\"type\": \"plain_text\",\n\t\t\t\t\"text\": \"EOL Reminder for project {{ $json['Project Name'] }}\",\n\t\t\t\t\"emoji\": true\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"type\": \"section\",\n\t\t\t\"text\": {\n\t\t\t\t\"type\": \"mrkdwn\",\n\t\t\t\t\"text\": \"Warning, project *{{ $json['Project Name'] }}* has incoming EOL issues:\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"type\": \"divider\"\n\t\t},\n\t\t{{ $if($json.Past_EOL.length > 0, `{\n\t\t\t\"type\": \"header\",\n\t\t\t\"text\": {\n\t\t\t\t\"type\": \"plain_text\",\n\t\t\t\t\"text\": \"PAST END OF LIFE:\",\n\t\t\t\t\"emoji\": true\n\t\t\t}\n\t\t},`,'') }}\n\t\t{{ $json.Past_EOL.map(i=>`\n{\n\t\t\t\"type\": \"section\",\n\t\t\t\"text\": {\n\t\t\t\t\"type\": \"mrkdwn\",\n\t\t\t\t\"text\": \"*${i.Software} ${i.Version}*\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"type\": \"section\",\n\t\t\t\"fields\": [\n\t\t\t\t{\n\t\t\t\t\t\"type\": \"mrkdwn\",\n\t\t\t\t\t\"text\": \"*End of life:*\\\\n ${i['End Of Life']}\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"type\": \"mrkdwn\",\n\t\t\t\t\t\"text\": \"*End of support:*\\\\n ${i['End Of Support']}\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"type\": \"mrkdwn\",\n\t\t\t\t\t\"text\": \"*Subversion release:*\\\\n ${i['Subversion Release']}\"\n\t\t\t\t}\n\t\t\t]\n\t\t\t\n\t\t},\n`).join('') }}\n        {{  $if($json.Past_EOL.length > 0, `\n{\n\t\t\t\"type\": \"divider\"\n\t\t},`,'') }}\n\t\t{{ $if($json.EOL_Today.length > 0, `{\n\t\t\t\"type\": \"header\",\n\t\t\t\"text\": {\n\t\t\t\t\"type\": \"plain_text\",\n\t\t\t\t\"text\": \"Due today:\",\n\t\t\t\t\"emoji\": true\n\t\t\t}\n\t\t},`,'') }}\n\t\t{{ $json.EOL_Today.map(i=>`\n{\n\t\t\t\"type\": \"section\",\n\t\t\t\"text\": {\n\t\t\t\t\"type\": \"mrkdwn\",\n\t\t\t\t\"text\": \"*${i.Software} ${i.Version}*\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"type\": \"section\",\n\t\t\t\"fields\": [\n\t\t\t\t{\n\t\t\t\t\t\"type\": \"mrkdwn\",\n\t\t\t\t\t\"text\": \"*End of life:*\\\\n ${i['End Of Life']}\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"type\": \"mrkdwn\",\n\t\t\t\t\t\"text\": \"*End of support:*\\\\n ${i['End Of Support']}\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"type\": \"mrkdwn\",\n\t\t\t\t\t\"text\": \"*Subversion release:*\\\\n ${i['Subversion Release']}\"\n\t\t\t\t}\n\t\t\t]\n\t\t\t\n\t\t},\n`).join('') }}\n{{  $if($json.EOL_Today.length > 0, `\n{\n\t\t\t\"type\": \"divider\"\n\t\t},`,'')  }}\n\t\t{{  $if($json.EOL_in_x_days.length > 0,`{\n\t\t\t\"type\": \"header\",\n\t\t\t\"text\": {\n\t\t\t\t\"type\": \"plain_text\",\n\t\t\t\t\"text\": \"Incoming EOL:\",\n\t\t\t\t\"emoji\": true\n\t\t\t}\n\t\t},`,'')  }}\n\t\t{{ $json.EOL_in_x_days.map(i=>`\n{\n\t\t\t\"type\": \"section\",\n\t\t\t\"text\": {\n\t\t\t\t\"type\": \"mrkdwn\",\n\t\t\t\t\"text\": \"*${i.Software} ${i.Version}*\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"type\": \"section\",\n\t\t\t\"fields\": [\n\t\t\t\t{\n\t\t\t\t\t\"type\": \"mrkdwn\",\n\t\t\t\t\t\"text\": \"*End of life:*\\\\n ${i['End Of Life']}\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"type\": \"mrkdwn\",\n\t\t\t\t\t\"text\": \"*End of support:*\\\\n ${i['End Of Support']}\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"type\": \"mrkdwn\",\n\t\t\t\t\t\"text\": \"*Subversion release:*\\\\n ${i['Subversion Release']}\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n`).join('') }}\n        {{  $if($json.EOL_in_x_days.length > 0, `\n{\n                    \"type\": \"divider\"\n                },`,'')\n            }}\n{\n\t\t\t\"type\": \"section\",\n\t\t\t\"text\": {\n\t\t\t\t\"type\": \"plain_text\",\n\t\t\t\t\"text\": \" \",\n\t\t\t\t\"emoji\": true\n\t\t\t}\n\t\t}\n\t]\n}","channelId":{"__rl":true,"mode":"list","value":"C0AM2GZ70SG","cachedResultName":"eol2"},"messageType":"block","otherOptions":{},"authentication":"oAuth2"},"credentials":{"slackOAuth2Api":{"id":"IvZCxNWZUk2WLNfY","name":"Slack OAuth2"}},"typeVersion":2.4},{"id":"f5e7028d-c23c-4f6f-92ff-a0cce04c3d0f","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[0,-32],"parameters":{"color":7,"width":1136,"height":528,"content":"## Step 3: Fetch End of life dates from endoflife.date. Merge new data with existing one\nhttps://endoflife.date offers End of life data for over 400 products. We can access this data using their free API. We rename keys to more human readable form, add some metadata and we convert dates from `false` value to `null` using [code block](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/). In this step we are using EOLDates Noco Table to check if we already have data regarding software, if so, we update it, if not, we add it to our database"},"typeVersion":1},{"id":"56107b49-d1dc-4e9d-a6b3-6e832d90d11c","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[0,-624],"parameters":{"color":7,"width":1776,"height":576,"content":"## Step 5: Loop over EOLProjects table records, check if any has EOL date comming and notify the user on the Slack channel\nWe use code block to check if we are Past EOL, is it soon or it's today. Code block allows us to do it all at once in more cohesieve and easier way than using multiple other blocks. We filter projects that are not affected (EOL date is too far into future). At the end we send a message including project name with all events properly structured to predefined Slack channel."},"typeVersion":1},{"id":"87a5ca14-6177-48a8-aae8-f9e954a71339","name":"Get software to check","type":"n8n-nodes-base.nocoDb","position":[-768,176],"parameters":{"table":"mdxtflijkbf3po6","options":{},"operation":"getAll","projectId":"pksfpoc943gwhvy","returnAll":true,"authentication":"nocoDbApiToken"},"credentials":{"nocoDbApiToken":{"id":"kAY3Nntg4Ze5X5sG","name":"NocoDB API Token"}},"typeVersion":3},{"id":"b442bf59-5535-43bf-8d9e-8fbd899ec12c","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-1456,-32],"parameters":{"color":3,"width":528,"height":368,"content":"## Fill out config\nHow many days before End of life date, End of support date, or Subversion Release should you be notified  "},"typeVersion":1},{"id":"47ea36e8-fecf-445d-9300-4fa0903cf0cc","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-912,-32],"parameters":{"color":7,"width":896,"height":368,"content":"## Step 1: Fetch softwares you are using from NocoDB EOLSoftware Table and feed them to into pipeline\nLoops are perfect tool if we want to process each item individaully with more than one block and retrun combined result or like in this case you want to better visually represent ongoing process.\n"},"typeVersion":1},{"id":"63ab8eca-d2cf-4894-b01a-be3fc7eaa3c1","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-2096,-32],"parameters":{"color":3,"width":624,"height":512,"content":"## Before you start:\nThis workflow requires 3 NocoDB Tables which can be created with single click by pressing \"Create Tables\". It will create required tables. It's important to then populate EOL Software table by hand, run workflow again manually, this time from \"Run daily\" trigger and populate EOL Projects table using values from EOLDates.\n"},"typeVersion":1},{"id":"724b03ec-2caf-4ba3-afda-f81a81bde704","name":"Sticky Note8","type":"n8n-nodes-base.stickyNote","position":[-2720,-480],"parameters":{"width":608,"height":960,"content":"## End of life alert\nThis workflow monitors your projects for software that is approaching or has passed its End of Life date, by fetching up-to-date data from https://endoflife.date and cross-referencing it with software versions used in each of your projects stored in NocoDB. When an issue is detected, a structured alert is sent to a designated Slack channel.\n\n### How it works\n1. Workflow fetches the list of software you track from NocoDB and queries the https://endoflife.date free API for each one. \n2. The retrieved data is normalized, stored in the EOLDates table, and kept up to date on every run. \n3. For each project in your EOLProjects table, the workflow checks whether any linked software version falls into one of three categories\n    1. Past EOL - end of life, end of support, or subversion release date has already passed\n    2. Due today - any of those dates fall on today's date\n    3. Incoming EOL - any of those dates fall within the configured threshold (default: 31 days)\n4. Projects with no issues are silently skipped. Affected projects trigger a structured Slack message listing all flagged software versions grouped by severity.\n\n### Setup\n1. Run the Create Tables trigger once to automatically provision tables to NocoDB\n2. Populate the EOLSoftware table with the names of software you want to track (names must match https://endoflife.date slugs)\n3. Trigger the workflow manually using Run daily to populate the EOLDates table\n4. Populate the EOLProjects table with your project names and link each project to the relevant software versions from EOLDates\n5. Adjust the Config node to set how many days before EOL you want to be notified\n\n### Customize\nThe Slack channel is configured directly in the Send a message node — swap it for any channel your team monitors. The three alert categories (Past EOL, Due today, Incoming EOL) and their Slack block layouts can be adjusted in that same node if you want to change the message format or add additional fields.\n\n\n\n\n\n\n\n\nNeed help? Contact us at [developers@sailingbyte.com](mailto:developers@sailingbyte.com) or on [sailingbyte.com](sailingbyte.com)!\n\nHappy hacking!"},"typeVersion":1},{"id":"de227d95-4094-4545-acf5-d64c73a256a6","name":"Run daily","type":"n8n-nodes-base.scheduleTrigger","position":[-1392,176],"parameters":{"rule":{"interval":[{"triggerAtHour":7,"triggerAtMinute":{}}]}},"typeVersion":1.2},{"id":"9ef9587b-0043-4c9f-b670-37ee8a2c5b5b","name":"Create Tables","type":"n8n-nodes-base.manualTrigger","position":[-2032,128],"parameters":{},"typeVersion":1},{"id":"626bca10-49f8-450f-9347-4753adf2fd76","name":"NocoDB Config","type":"n8n-nodes-base.set","position":[-1840,128],"parameters":{"options":{},"assignments":{"assignments":[{"id":"54aae501-d2c2-4d1e-b268-341126fcfb9b","name":"Base ID","type":"string","value":""},{"id":"697fc737-8f87-403e-83fe-b82d4ce4ab48","name":"NocoDB Url","type":"string","value":""}]}},"typeVersion":3.4},{"id":"1e7a2c02-fac8-4113-8927-a27408360118","name":"Create relation between tables","type":"n8n-nodes-base.httpRequest","position":[-1632,320],"parameters":{"url":"={{ $('NocoDB Config').first().json['NocoDB Url'] }}api/v3/meta/bases/{{$('NocoDB Config').first().json['Base ID']}}/tables/{{ $json.id }}/fields","method":"POST","options":{},"jsonBody":"={\n      \"title\": \"EOLDates\",\n      \"type\": \"Links\",\n      \"options\": {\n        \"relation_type\": \"hm\",\n        \"related_table_id\": \"{{ $('Create NocoDB EOL Dates Table').first().json['id'] }}\"\n      }\n    }","sendBody":true,"specifyBody":"json","authentication":"predefinedCredentialType","nodeCredentialType":"nocoDbApiToken"},"credentials":{"nocoDbApiToken":{"id":"kAY3Nntg4Ze5X5sG","name":"NocoDB API Token"}},"typeVersion":4.3},{"id":"1a82ac26-8211-4d3a-8739-7a063ca0c62d","name":"Create NocoDB EOL Software Table","type":"n8n-nodes-base.httpRequest","position":[-1632,128],"parameters":{"url":"={{ $json[\"NocoDB Url\"] }}api/v3/meta/bases/{{$('NocoDB Config').first().json['Base ID']}}/tables","method":"POST","options":{},"jsonBody":"{\n  \"title\": \"EOLSoftware\",\n  \"table_name\": \"EOLSoftware\",\n  \"fields\": [\n    {\n      \"title\": \"Software\",\n      \"type\": \"SingleLineText\"\n    }\n  ]\n}","sendBody":true,"specifyBody":"json","authentication":"predefinedCredentialType","nodeCredentialType":"nocoDbApiToken"},"credentials":{"nocoDbApiToken":{"id":"kAY3Nntg4Ze5X5sG","name":"NocoDB API Token"}},"typeVersion":4.3},{"id":"9cea509b-dfb9-483c-8213-8596a88d8061","name":"Create NocoDB EOL Dates Table","type":"n8n-nodes-base.httpRequest","position":[-2032,320],"parameters":{"url":"={{ $('NocoDB Config').first().json['NocoDB Url'] }}api/v3/meta/bases/{{$('NocoDB Config').first().json['Base ID']}}/tables","method":"POST","options":{},"jsonBody":"=\n    {\n  \"title\": \"EOLDates\",\n  \"table_name\": \"EOLDates\",\n  \"fields\": [\n    {\n      \"title\": \"key\",\n      \"type\": \"SingleLineText\"\n    },\n    {\n      \"title\": \"Software\",\n      \"type\": \"SingleLineText\"\n    },\n    {\n      \"title\": \"Version\",\n      \"type\": \"SingleLineText\"\n    },\n    {\n      \"title\": \"Latest Subversion\",\n      \"type\": \"SingleLineText\"\n    },\n    {\n      \"title\": \"Subversion Release\",\n      \"type\": \"SingleLineText\"\n    },\n    {\n      \"title\": \"End Of Life\",\n      \"type\": \"SingleLineText\"\n    },\n    {\n      \"title\": \"End Of Support\",\n      \"type\": \"SingleLineText\"\n    }\n  ]\n}","sendBody":true,"specifyBody":"json","authentication":"predefinedCredentialType","nodeCredentialType":"nocoDbApiToken"},"credentials":{"nocoDbApiToken":{"id":"kAY3Nntg4Ze5X5sG","name":"NocoDB API Token"}},"typeVersion":4.3},{"id":"b3f014c9-66cc-4fc1-98cb-fbf17cb7e357","name":"Create NocoDB EOL Projects Table","type":"n8n-nodes-base.httpRequest","position":[-1840,320],"parameters":{"url":"={{ $('NocoDB Config').first().json['NocoDB Url'] }}api/v3/meta/bases/{{$('NocoDB Config').first().json['Base ID']}}/tables","method":"POST","options":{},"jsonBody":"={\n  \"title\": \"EOLProjects\",\n  \"table_name\": \"EOLProjects\",\n  \"fields\": [\n    {\n      \"title\": \"Project Name\",\n      \"type\": \"SingleLineText\"\n    }\n  ]\n}","sendBody":true,"specifyBody":"json","authentication":"predefinedCredentialType","nodeCredentialType":"nocoDbApiToken"},"credentials":{"nocoDbApiToken":{"id":"kAY3Nntg4Ze5X5sG","name":"NocoDB API Token"}},"typeVersion":4.3},{"id":"bd4e6b21-61d2-4495-9e01-f1260cac4c2a","name":"Check when is EOL","type":"n8n-nodes-base.code","position":[1200,-384],"parameters":{"jsCode":"for (const item of $input.all()) {\n  const now = $now.toUTC().toString().slice(0, 10);\n  const daysBeforeEol = $('Config').first().json[\"Days before EOL\"] ?? 30;\n  const manyToManyProjectsSoftwareColumn = item.json.EOLDates\n  // First, identify items that are EOL today\n  item.json.EOL_Today = manyToManyProjectsSoftwareColumn.filter(\n    (d) =>\n      d[\"Subversion Release\"] === now ||\n      d[\"End Of Life\"] === now ||\n      d[\"End Of Support\"] === now\n  );\n  \n  // Create a Set of today's EOL items for quick lookup\n  const todayEOLSet = new Set(item.json.EOL_Today);\n  \n  // Then filter Past_EOL, excluding items already in EOL_Today\n  item.json.Past_EOL = manyToManyProjectsSoftwareColumn.filter(\n    (d) =>\n      !todayEOLSet.has(d) &&\n      (new Date(d[\"Subversion Release\"]) < new Date(now) ||\n       new Date(d[\"End Of Life\"]) < new Date(now) ||\n       new Date(d[\"End Of Support\"]) < new Date(now))\n  );\n\n  const pastEOLSet = new Set(item.json.Past_EOL)\n  // Filter EOL_in_x_days, excluding items already in EOL_Today or Past_EOL\n  item.json.EOL_in_x_days = manyToManyProjectsSoftwareColumn.filter(\n    (d) =>\n      !todayEOLSet.has(d) &&\n      !pastEOLSet.has(d) &&\n      ($now.diff(DateTime.fromJSDate(new Date(d[\"Subversion Release\"])), 'days').days <= daysBeforeEol ||\n       $now.diff(DateTime.fromJSDate(new Date(d[\"End Of Life\"])), 'days').days <= daysBeforeEol ||\n       $now.diff(DateTime.fromJSDate(new Date(d[\"End Of Support\"])), 'days').days <= daysBeforeEol)\n  );\n  \n  delete item.json._nc_m2m_EOLDates_EOLProjects;\n}\nreturn $input.all();"},"typeVersion":2},{"id":"1199a871-f107-4d59-b1ba-19e62cc61a6c","name":"Get EOLProjects","type":"n8n-nodes-base.nocoDb","position":[32,-352],"parameters":{"table":"m68cljurlid8t2z","options":{"fields":[]},"operation":"getAll","projectId":"pksfpoc943gwhvy","returnAll":true,"authentication":"nocoDbApiToken"},"credentials":{"nocoDbApiToken":{"id":"kAY3Nntg4Ze5X5sG","name":"NocoDB API Token"}},"executeOnce":true,"typeVersion":3,"alwaysOutputData":false},{"id":"ce0cd00f-392c-4fb4-830d-ee220375a77c","name":"Loop over projects","type":"n8n-nodes-base.splitInBatches","position":[256,-416],"parameters":{"options":{}},"typeVersion":3},{"id":"d86ddcf5-cc84-407f-aa13-8d5a69309be5","name":"Get many rows","type":"n8n-nodes-base.nocoDb","position":[480,-336],"parameters":{"table":"mmk9jtv13jor4jh","options":{"where":"=(EOLProjects_id,eq,{{ $json.Id }})"},"operation":"getAll","projectId":"pksfpoc943gwhvy","returnAll":true,"authentication":"nocoDbApiToken"},"credentials":{"nocoDbApiToken":{"id":"kAY3Nntg4Ze5X5sG","name":"NocoDB API Token"}},"executeOnce":true,"typeVersion":3},{"id":"be2d33bc-3468-4d19-9ec1-4e2276fe5857","name":"Merge Project with Softwares it uses","type":"n8n-nodes-base.merge","position":[960,-384],"parameters":{"mode":"combine","options":{},"combineBy":"combineByPosition"},"typeVersion":3.2},{"id":"cf1c6243-b85b-4d76-8a35-65bc2ccd039c","name":"Combine All Software into single list","type":"n8n-nodes-base.set","position":[704,-336],"parameters":{"options":{},"assignments":{"assignments":[{"id":"b75f3135-56b6-461a-a286-85b788e68f50","name":"EOLDates","type":"array","value":"={{ $input.all().map(i=>i.json) }}"}]}},"typeVersion":3.4}],"pinData":{},"connections":{"Wait":{"main":[[{"node":"Each Software Once","type":"main","index":0}]]},"Merge":{"main":[[{"node":"Convert bool to null","type":"main","index":0}]]},"Config":{"main":[[{"node":"Get software to check","type":"main","index":0}]]},"Filter":{"main":[[{"node":"Send a message","type":"main","index":0}]]},"Run daily":{"main":[[{"node":"Config","type":"main","index":0}]]},"Insert New":{"main":[[{"node":"Wait","type":"main","index":0}]]},"Make ID Key":{"main":[[{"node":"Merge","type":"main","index":1}]]},"Rename Keys":{"main":[[{"node":"Merge","type":"main","index":0}]]},"Update Data":{"main":[[{"node":"Wait","type":"main","index":0}]]},"If ID exists":{"main":[[{"node":"Update Data","type":"main","index":0}],[{"node":"Insert New","type":"main","index":0}]]},"Create Tables":{"main":[[{"node":"NocoDB Config","type":"main","index":0}]]},"Get many rows":{"main":[[{"node":"Combine All Software into single list","type":"main","index":0}]]},"NocoDB Config":{"main":[[{"node":"Create NocoDB EOL Software Table","type":"main","index":0}]]},"Send a message":{"main":[[{"node":"Loop over projects","type":"main","index":0}]]},"Get EOLProjects":{"main":[[{"node":"Loop over projects","type":"main","index":0}]]},"Get Current Rows":{"main":[[{"node":"Make ID Key","type":"main","index":0}]]},"Check when is EOL":{"main":[[{"node":"Filter","type":"main","index":0}]]},"Each Software Once":{"main":[[{"node":"Get EOLProjects","type":"main","index":0}],[{"node":"Get Current Rows","type":"main","index":0},{"node":"Get EOL data from endoflife.date","type":"main","index":0}]]},"Loop over projects":{"main":[[],[{"node":"Get many rows","type":"main","index":0},{"node":"Merge Project with Softwares it uses","type":"main","index":0}]]},"Add Key and Software":{"main":[[{"node":"Rename Keys","type":"main","index":0}]]},"Convert bool to null":{"main":[[{"node":"If ID exists","type":"main","index":0}]]},"Get software to check":{"main":[[{"node":"Each Software Once","type":"main","index":0}]]},"Create NocoDB EOL Dates Table":{"main":[[{"node":"Create NocoDB EOL Projects Table","type":"main","index":0}]]},"Create relation between tables":{"main":[[]]},"Create NocoDB EOL Projects Table":{"main":[[{"node":"Create relation between tables","type":"main","index":0}]]},"Create NocoDB EOL Software Table":{"main":[[{"node":"Create NocoDB EOL Dates Table","type":"main","index":0}]]},"Get EOL data from endoflife.date":{"main":[[{"node":"Add Key and Software","type":"main","index":0}]]},"Merge Project with Softwares it uses":{"main":[[{"node":"Check when is EOL","type":"main","index":0}]]},"Combine All Software into single list":{"main":[[{"node":"Merge Project with Softwares it uses","type":"main","index":1}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":36,"nodeTypes":{"n8n-nodes-base.if":{"count":1},"n8n-nodes-base.set":{"count":5},"n8n-nodes-base.code":{"count":2},"n8n-nodes-base.wait":{"count":1},"n8n-nodes-base.merge":{"count":2},"n8n-nodes-base.slack":{"count":1},"n8n-nodes-base.filter":{"count":1},"n8n-nodes-base.nocoDb":{"count":6},"n8n-nodes-base.renameKeys":{"count":1},"n8n-nodes-base.stickyNote":{"count":7},"n8n-nodes-base.httpRequest":{"count":5},"n8n-nodes-base.manualTrigger":{"count":1},"n8n-nodes-base.splitInBatches":{"count":2},"n8n-nodes-base.scheduleTrigger":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Łukasz","username":"lukaszpp","bio":"Developer, automation architect and CTO/CEO helping businesses turn complex processes into scalable systems. I build smart automations and SaaS solutions for Real Estate, advertising, logistics and more.\n\nMy focus is to remove manual work, increase efficiency, and create measurable business impact.\n\nI support founders and decision-makers in turning ideas into structured, automated operations.\n\nLet’s connect 🤝","verified":true,"links":["https://sailingbyte.com"],"avatar":"https://gravatar.com/avatar/aae1a29225cc13556a92db7f75050da4bb664bf68e1d73407da6c9cd5a7a9a8a?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":24,"icon":"file:merge.svg","name":"n8n-nodes-base.merge","codex":{"data":{"alias":["Join","Concatenate","Wait"],"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/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"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/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"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/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.merge/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Merge"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTc3XzUxOCkiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNDhDMCAyMS40OTAzIDIxLjQ5MDMgMCA0OCAwSDExMkMxMzguNTEgMCAxNjAgMjEuNDkwMyAxNjAgNDhWNTZIMTk2LjI1MkMyNDAuNDM1IDU2IDI3Ni4yNTIgOTEuODE3MiAyNzYuMjUyIDEzNlYxOTJDMjc2LjI1MiAyMTQuMDkxIDI5NC4xNjEgMjMyIDMxNi4yNTIgMjMySDM1MlYyMjRDMzUyIDE5Ny40OSAzNzMuNDkgMTc2IDQwMCAxNzZINDY0QzQ5MC41MSAxNzYgNTEyIDE5Ny40OSA1MTIgMjI0VjI4OEM1MTIgMzE0LjUxIDQ5MC41MSAzMzYgNDY0IDMzNkg0MDBDMzczLjQ5IDMzNiAzNTIgMzE0LjUxIDM1MiAyODhWMjgwSDMxNi4yNTJDMjk0LjE2MSAyODAgMjc2LjI1MiAyOTcuOTA5IDI3Ni4yNTIgMzIwVjM3NkMyNzYuMjUyIDQyMC4xODMgMjQwLjQzNSA0NTYgMTk2LjI1MiA0NTZIMTYwVjQ2NEMxNjAgNDkwLjUxIDEzOC41MSA1MTIgMTEyIDUxMkg0OEMyMS40OTAzIDUxMiAwIDQ5MC41MSAwIDQ2NFY0MDBDMCAzNzMuNDkgMjEuNDkwMyAzNTIgNDggMzUySDExMkMxMzguNTEgMzUyIDE2MCAzNzMuNDkgMTYwIDQwMFY0MDhIMTk2LjI1MkMyMTMuOTI1IDQwOCAyMjguMjUyIDM5My42NzMgMjI4LjI1MiAzNzZWMzIwQzIyOC4yNTIgMjk0Ljc4NCAyMzguODU5IDI3Mi4wNDQgMjU1Ljg1MyAyNTZDMjM4Ljg1OSAyMzkuOTU2IDIyOC4yNTIgMjE3LjIxNiAyMjguMjUyIDE5MlYxMzZDMjI4LjI1MiAxMTguMzI3IDIxMy45MjUgMTA0IDE5Ni4yNTIgMTA0SDE2MFYxMTJDMTYwIDEzOC41MSAxMzguNTEgMTYwIDExMiAxNjBINDhDMjEuNDkwMyAxNjAgMCAxMzguNTEgMCAxMTJWNDhaTTEwNCA0OEMxMDguNDE4IDQ4IDExMiA1MS41ODE3IDExMiA1NlYxMDRDMTEyIDEwOC40MTggMTA4LjQxOCAxMTIgMTA0IDExMkg1NkM1MS41ODE3IDExMiA0OCAxMDguNDE4IDQ4IDEwNFY1NkM0OCA1MS41ODE3IDUxLjU4MTcgNDggNTYgNDhIMTA0Wk00NTYgMjI0QzQ2MC40MTggMjI0IDQ2NCAyMjcuNTgyIDQ2NCAyMzJWMjgwQzQ2NCAyODQuNDE4IDQ2MC40MTggMjg4IDQ1NiAyODhINDA4QzQwMy41ODIgMjg4IDQwMCAyODQuNDE4IDQwMCAyODBWMjMyQzQwMCAyMjcuNTgyIDQwMy41ODIgMjI0IDQwOCAyMjRINDU2Wk0xMTIgNDA4QzExMiA0MDMuNTgyIDEwOC40MTggNDAwIDEwNCA0MDBINTZDNTEuNTgxNyA0MDAgNDggNDAzLjU4MiA0OCA0MDhWNDU2QzQ4IDQ2MC40MTggNTEuNTgxNyA0NjQgNTYgNDY0SDEwNEMxMDguNDE4IDQ2NCAxMTIgNDYwLjQxOCAxMTIgNDU2VjQwOFoiIGZpbGw9IiM1NEI4QzkiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTc3XzUxOCI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Merge","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":36,"icon":"fa:edit","name":"n8n-nodes-base.renameKeys","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.renamekeys/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Rename Keys","color":"#772244"},"iconData":{"icon":"edit","type":"icon"},"displayName":"Rename Keys","typeVersion":1,"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":40,"icon":"file:slack.svg","name":"n8n-nodes-base.slack","codex":{"data":{"alias":["human","form","wait","hitl","approval"],"resources":{"generic":[{"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/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/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"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/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.slack/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/slack/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Slack"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgMTUwLjg1MiAxNTAuODUyIj48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIuOTI2IiB5PSIuOTI2Ii8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZS13aWR0aD0iMS44NTIiPjxwYXRoIGZpbGw9IiNlMDFlNWEiIHN0cm9rZT0iI2UwMWU1YSIgZD0iTTQwLjc0MSA5My41NWMwLTguNzM1IDYuNjA3LTE1Ljc3MiAxNC44MTUtMTUuNzcyczE0LjgxNSA3LjAzNyAxNC44MTUgMTUuNzcydjM4LjgyNGMwIDguNzM3LTYuNjA3IDE1Ljc3NC0xNC44MTUgMTUuNzc0cy0xNC44MTUtNy4wMzctMTQuODE1LTE1Ljc3MnoiLz48cGF0aCBmaWxsPSIjZWNiMjJkIiBzdHJva2U9IiNlY2IyMmQiIGQ9Ik05My41NSAxMDcuNDA4Yy04LjczNSAwLTE1Ljc3Mi02LjYwNy0xNS43NzItMTQuODE1czcuMDM3LTE0LjgxNSAxNS43NzItMTQuODE1aDM4LjgyNmM4LjczNSAwIDE1Ljc3MiA2LjYwNyAxNS43NzIgMTQuODE1cy03LjAzNyAxNC44MTUtMTUuNzcyIDE0LjgxNXoiLz48cGF0aCBmaWxsPSIjMmZiNjdjIiBzdHJva2U9IiMyZmI2N2MiIGQ9Ik03Ny43NzggMTUuNzcyQzc3Ljc3OCA3LjAzNyA4NC4zODUgMCA5Mi41OTMgMHMxNC44MTUgNy4wMzcgMTQuODE1IDE1Ljc3MnYzOC44MjZjMCA4LjczNS02LjYwNyAxNS43NzItMTQuODE1IDE1Ljc3MnMtMTQuODE1LTcuMDM3LTE0LjgxNS0xNS43NzJ6Ii8+PHBhdGggZmlsbD0iIzM2YzVmMSIgc3Ryb2tlPSIjMzZjNWYxIiBkPSJNMTUuNzcyIDcwLjM3MUM3LjAzNyA3MC4zNzEgMCA2My43NjMgMCA1NS41NTZzNy4wMzctMTQuODE1IDE1Ljc3Mi0xNC44MTVoMzguODI2YzguNzM1IDAgMTUuNzcyIDYuNjA3IDE1Ljc3MiAxNC44MTVzLTcuMDM3IDE0LjgxNS0xNS43NzIgMTQuODE1eiIvPjxnIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiPjxwYXRoIGZpbGw9IiNlY2IyMmQiIHN0cm9rZT0iI2VjYjIyZCIgZD0iTTc3Ljc3OCAxMzMuMzMzYzAgOC4yMDggNi42MDcgMTQuODE1IDE0LjgxNSAxNC44MTVzMTQuODE1LTYuNjA3IDE0LjgxNS0xNC44MTUtNi42MDctMTQuODE1LTE0LjgxNS0xNC44MTVINzcuNzc4eiIvPjxwYXRoIGZpbGw9IiMyZmI2N2MiIHN0cm9rZT0iIzJmYjY3YyIgZD0iTTEzMy4zMzQgNzAuMzcxaC0xNC44MTVWNTUuNTU2YzAtOC4yMDcgNi42MDctMTQuODE1IDE0LjgxNS0xNC44MTVzMTQuODE1IDYuNjA3IDE0LjgxNSAxNC44MTUtNi42MDcgMTQuODE1LTE0LjgxNSAxNC44MTV6Ii8+PHBhdGggZmlsbD0iI2UwMWU1YSIgc3Ryb2tlPSIjZTAxZTVhIiBkPSJNMTQuODE1IDc3Ljc3OEgyOS42M3YxNC44MTVjMCA4LjIwNy02LjYwNyAxNC44MTUtMTQuODE1IDE0LjgxNVMwIDEwMC44IDAgOTIuNTkzczYuNjA3LTE0LjgxNSAxNC44MTUtMTQuODE1eiIvPjxwYXRoIGZpbGw9IiMzNmM1ZjEiIHN0cm9rZT0iIzM2YzVmMSIgZD0iTTcwLjM3MSAxNC44MTVWMjkuNjNINTUuNTU2Yy04LjIwNyAwLTE0LjgxNS02LjYwNy0xNC44MTUtMTQuODE1UzQ3LjM0OCAwIDU1LjU1NiAwczE0LjgxNSA2LjYwNyAxNC44MTUgMTQuODE1eiIvPjwvZz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Slack","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"id":510,"icon":"file:nocodb.svg","name":"n8n-nodes-base.nocoDb","codex":{"data":{"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.nocodb/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/nocodb/"}]},"categories":["Data & Storage"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\"]","defaults":{"name":"NocoDB"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiBmaWxsPSJub25lIj48cmVjdCB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgZmlsbD0iIzNENDNENSIgcng9IjI1Ii8+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTM4IDkzLjkwNyAyOS43NiAyOS4wMDZ2NDUuOTJIMzh6bTEyNS02MS42NjV2MTI1LjQxN2MwIDguMDc4LTQuNDk4IDExLjM0MS0xMS43NDIgMTEuMzQxLTEuMzMzIDAtMy43MjUtLjUwMS01Ljc5My0yLjUwMkwzOCA2NS4zMjhWNDIuODRDMzggMzQuNzYzIDQxLjM2MyAzMS41IDQ5LjcyMyAzMS41YzEuMzMzIDAgNC4wMS41MiA2LjA2IDIuNTAybDc3LjQzOCA3MS45MjNWMzIuMjQyeiIvPjwvc3ZnPg=="},"displayName":"NocoDB","typeVersion":3,"nodeCategories":[{"id":3,"name":"Data & Storage"}]},{"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":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"}]},{"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"}]}],"categories":[{"id":16,"name":"DevOps"}],"image":[{"id":5137,"url":"https://n8niostorageaccount.blob.core.windows.net/n8nio-strapi-blobs-prod/assets/image_50f45838ec.png"},{"id":5138,"url":"https://n8niostorageaccount.blob.core.windows.net/n8nio-strapi-blobs-prod/assets/image_9634da4857.png"},{"id":5139,"url":"https://n8niostorageaccount.blob.core.windows.net/n8nio-strapi-blobs-prod/assets/image_16fba6db32.png"},{"id":5140,"url":"https://n8niostorageaccount.blob.core.windows.net/n8nio-strapi-blobs-prod/assets/image_b24579c2f8.png"}]}}