{"workflow":{"id":12338,"name":"Migrate large Hugging Face datasets to MongoDB with a looping subworkflow","views":68,"recentViews":0,"totalViews":68,"createdAt":"2025-12-31T18:26:47.231Z","description":"\nThis n8n template provides a **production-ready, memory-safe pipeline** for ingesting large Hugging Face datasets into MongoDB using batch pagination.  \nIt is designed as a reusable data ingestion layer for **RAG systems, recommendation engines, analytics pipelines, and ML workflows**.\n\nThe template includes:\n- A **main workflow** that orchestrates pagination and looping\n- A **subworkflow** that fetches dataset rows, sanitizes them, and inserts them into MongoDB safely\n\n---\n\n## 🚀 What This Template Does\n\n- Fetches rows from a Hugging Face dataset using the `datasets-server` API\n- Processes data in **configurable batches** (offset + length)\n- Removes Hugging Face `_id` fields to avoid MongoDB duplicate key errors\n- Inserts clean documents into MongoDB\n- Automatically loops until all dataset rows are ingested\n- Handles large datasets **without memory overflow**\n\n---\n\n## 🧩 Architecture Overview\n\n### Main Workflow (Orchestrator)\n- Starts the ingestion process\n- Defines dataset, batch size, and MongoDB collection\n- Repeatedly calls the subworkflow until no rows remain\n\n### Subworkflow (Batch Processor)\n- Fetches a single batch of rows from Hugging Face\n- Splits rows into individual items\n- Removes `_id` fields\n- Inserts documents into MongoDB\n- Returns batch statistics to the main workflow\n\n---\n\n## 🔁 Workflow Logic (High-Level)\n\n1. Set initial configuration:\n   - Dataset name\n   - Split (`train`, `test`, etc.)\n   - Batch size\n   - Offset\n2. Fetch rows from Hugging Face\n3. If rows exist:\n   - Split rows into items\n   - Remove `_id`\n   - Insert into MongoDB\n4. Increase offset\n5. Repeat until no rows are returned\n\n---\n\n## 📦 Default Configuration\n\n| Parameter | Default Value |\n|---------|--------------|\n| Dataset | `MongoDB/airbnb_embeddings` |\n| Config | `default` |\n| Split | `train` |\n| Batch Size | `100` |\n| MongoDB Collection | `airbnb` |\n\nAll values can be changed easily from the **Config_Start** node.\n\n---\n\n## 🛠 Prerequisites\n\n- n8n (self-hosted or cloud)\n- MongoDB (local or hosted)\n- MongoDB credentials configured in n8n\n- Internet access to `datasets-server.huggingface.co`\n\n---\n\n## ▶️ How to Use\n\n1. Import the workflow JSON into n8n\n2. Configure MongoDB credentials in the MongoDB node\n3. Update dataset parameters if needed:\n   - Dataset name\n   - Split\n   - Batch size\n   - Collection name\n4. Run the workflow using the **Manual Trigger**\n5. Monitor execution until completion\n\n---\n\n## 🧠 Why `_id` Is Removed\n\nHugging Face dataset rows often include an `_id` field.  \nMongoDB requires `_id` values to be unique, so reusing these values can cause insertion failures.\n\nThis template:\n- **Removes the Hugging Face `_id`**\n- Lets MongoDB generate its own `ObjectId`\n- Prevents duplicate key errors\n- Allows safe re-runs and incremental ingestion\n\n---\n\n## 🔍 Ideal Use Cases\n\n### ✅ RAG (Retrieval-Augmented Generation)\n- Store dataset content as source documents\n- Add embeddings later using OpenAI, Mistral, or local models\n- Connect MongoDB to a vector database or hybrid search\n\n### ✅ Recommendation Systems\n- Build item catalogs from public datasets\n- Use embeddings or metadata for similarity search\n- Combine with user behavior data downstream\n\n### ✅ ML & Analytics Pipelines\n- Centralize dataset ingestion\n- Normalize data before training or analysis\n\n---\n\n## ⚙️ Recommended Enhancements\n\nYou can easily extend this template with:\n\n- **Upsert logic** using a deterministic hash (idempotent ingestion)\n- **Embedding generation** before or after insertion\n- **Schema validation** or field filtering\n- **Rate-limit handling & backoff**\n- **Parallel ingestion** for faster processing\n\n---\n\n## ⚠️ Notes & Best Practices\n\n- Reduce batch size if you encounter memory limits\n- Verify dataset license before production use\n- Add indexes in MongoDB for faster downstream querying\n- Use upserts if you plan to re-run ingestion frequently\n\n---\n\n## 📄 License & Disclaimer\n\nThis workflow template is provided as-is.  \nYou are responsible for:\n- Dataset licensing compliance\n- Infrastructure costs\n- Downstream data usage\n\nHugging Face datasets are subject to their respective licenses.\n\n---\n\n## ⭐ Template Summary\n\n**Category:** Data Ingestion  \n**Complexity:** Intermediate  \n**Scalability:** High  \n**Memory Safe:** Yes  \n**Production Ready:** Yes  \n\n---\n\nIf you want a version with:\n- Upserts instead of inserts\n- Built-in embeddings\n- Vector database support\n- Logging & monitoring\n\nJust say the word and I’ll generate the enhanced workflow JSON.\n","workflow":{"meta":{"instanceId":"5bfd12a6bf15fc795141ec4724c268daca25991a2b24ea82c616ff4a791c7666"},"nodes":[{"id":"a22c634c-eb9b-4de7-be1e-40d9378f704b","name":"Aggregate","type":"n8n-nodes-base.aggregate","position":[2128,672],"parameters":{"options":{},"aggregate":"aggregateAllItemData"},"typeVersion":1},{"id":"a711dee2-5337-4a4e-a653-3575ef5e72fc","name":"setOffset","type":"n8n-nodes-base.set","position":[2352,672],"parameters":{"options":{"dotNotation":true},"assignments":{"assignments":[{"id":"5e7e828f-07ee-4071-9088-88a09cb19d12","name":"rows_count","type":"number","value":"={{$items(\"Row_Splitter\").length}}"},{"id":"cde76c8b-969d-4286-8545-f0f33147ca78","name":"=offset","type":"number","value":"={{ $('SubTrigger').item.json.offset + $('SubTrigger').item.json.length }}"},{"id":"129e5a82-4382-48be-934a-51694830e6b5","name":"length","type":"number","value":"={{ $('SubTrigger').item.json.length }}"},{"id":"40b54f42-a079-4404-ac75-0872f3544c7b","name":"dataset","type":"string","value":"={{ $('SubTrigger').item.json.dataset }}"},{"id":"efde740c-69f0-4e42-a3ee-945ffdeaca79","name":"config","type":"string","value":"={{ $('SubTrigger').item.json.config }}"},{"id":"04c9572b-d363-43e8-8b61-00e88e58cd7e","name":"split","type":"string","value":"={{ $('SubTrigger').item.json.split }}"},{"id":"bd612c4f-4ca5-42b6-8fbd-7d28f34e6ac1","name":"collection_name","type":"string","value":"={{ $('SubTrigger').item.json.collection_name }}"}]}},"typeVersion":3.4},{"id":"c8f6511a-b2e6-4a19-a5a8-639d2102466c","name":"SubTrigger","type":"n8n-nodes-base.executeWorkflowTrigger","position":[560,768],"parameters":{"workflowInputs":{"values":[{"name":"offset","type":"number"},{"name":"length","type":"number"},{"name":"dataset"},{"name":"config"},{"name":"split"},{"name":"collection_name"}]}},"typeVersion":1.1},{"id":"030000b4-48f3-490f-a2f8-ab86c077e451","name":"HF_FetchRows","type":"n8n-nodes-base.httpRequest","onError":"continueRegularOutput","position":[784,768],"parameters":{"url":"https://datasets-server.huggingface.co/rows","options":{},"sendQuery":true,"queryParameters":{"parameters":[{"name":"dataset","value":"={{ $json.dataset }}"},{"name":"config","value":"={{ $json.config }}"},{"name":"split","value":"={{ $json.split }}"},{"name":"offset","value":"={{ $('SubTrigger').item.json.offset }}"},{"name":"length","value":"={{ $('SubTrigger').item.json.length }}"}]}},"retryOnFail":true,"typeVersion":4.3},{"id":"857f2797-c61b-425c-b7a6-2dbad92b7337","name":"Extract_Rows","type":"n8n-nodes-base.set","position":[1008,768],"parameters":{"options":{},"assignments":{"assignments":[{"id":"aa61b92e-f947-4681-a051-373988ebd69e","name":"rows","type":"array","value":"={{ $json.rows }}"}]}},"typeVersion":3.4},{"id":"514b4db6-79ae-4bcd-9b04-7be4a320f66b","name":"HasRows?","type":"n8n-nodes-base.if","position":[1232,768],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"d73a6dea-1564-4f20-8230-67b555f854bd","operator":{"type":"array","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json.rows }}","rightValue":""}]}},"typeVersion":2.3},{"id":"80cb9377-07cd-441b-b61f-a137ae1a03ea","name":"Row_Splitter","type":"n8n-nodes-base.splitOut","position":[1456,672],"parameters":{"options":{},"fieldToSplitOut":"rows"},"typeVersion":1},{"id":"2a7a5365-85c4-4ade-a76b-21bb5746060e","name":"Transform_RemoveId_AddMeta","type":"n8n-nodes-base.code","position":[1680,672],"parameters":{"jsCode":"/**\n * Remove Hugging Face _id so MongoDB can generate ObjectId\n */\n\nreturn items.map(item => {\n  const row = item.json.row;\n\n  if (!row || typeof row !== 'object') {\n    return null;\n  }\n\n  // Destructure to remove _id\n  const { _id, ...doc } = row;\n\n  return {\n    json: doc\n  };\n}).filter(Boolean);\n"},"typeVersion":2},{"id":"e84f68de-6d2d-4f73-956d-58b42a6b8413","name":"Mongo_InsertOrUpsert","type":"n8n-nodes-base.mongoDb","position":[1904,672],"parameters":{"fields":"={{ Object.keys($json).join(',') }}","options":{"useDotNotation":false},"operation":"insert","collection":"airbnb"},"typeVersion":1.2},{"id":"8bf2959b-4d9f-4a09-aefc-1234ab2d1c02","name":"Config_Start","type":"n8n-nodes-base.set","position":[1632,208],"parameters":{"options":{},"assignments":{"assignments":[{"id":"f70d3e9e-d6be-419f-ab93-c8d74d34b142","name":"offset","type":"number","value":0},{"id":"0102a45c-dc20-4d40-b4b7-7a63332228b8","name":"length","type":"number","value":100},{"id":"5fd666a8-6238-47a2-8c39-ee831d3b4165","name":"dataset","type":"string","value":"MongoDB/airbnb_embeddings"},{"id":"0348c706-fbcd-45aa-bc4b-4682c888877c","name":"config","type":"string","value":"default"},{"id":"8160e1e7-de4f-4846-bef4-90e5b61bde6d","name":"split","type":"string","value":"train"},{"id":"58807bd2-d7d6-426d-bd28-affd82b0c564","name":"collection_name","type":"string","value":"airbnb"}]}},"typeVersion":3.4},{"id":"05dc3b69-7c33-40d7-ab39-2ccb20928ee6","name":"Trigger_Manual","type":"n8n-nodes-base.manualTrigger","position":[1344,224],"parameters":{},"typeVersion":1},{"id":"a19f7baf-6f71-4902-9f02-f6f522f4877c","name":"ContinueLoop?","type":"n8n-nodes-base.if","position":[2208,208],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"5b4b56d7-7277-414e-a5af-0fe62ccc9e38","operator":{"type":"number","operation":"notEquals"},"leftValue":"={{ $json.rows_count }}","rightValue":0}]}},"typeVersion":2.3},{"id":"2f6dcaf1-76d7-48aa-8656-c814bd05ac9f","name":"Stop","type":"n8n-nodes-base.noOp","position":[2464,224],"parameters":{},"typeVersion":1},{"id":"57cdce0e-3f50-41bc-b191-f56f40601432","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[544,-32],"parameters":{"width":720,"height":464,"content":"## How it works:\n1- This workflow automates the migration of large datasets by fetching data in batches from the Hugging Face API. \n2- It begins with a configuration node where you define the dataset, split, and batch length. \n3- The main workflow triggers a subworkflow that fetches specific rows, extracts the data, and splits the array into individual items. \n4- A Code node transforms the data by removing the Hugging Face _id to allow MongoDB to generate its own unique ObjectIDs. \n5- After inserting the batch into MongoDB, the workflow calculates a new offset and loops until all rows have been processed.\n\n## Setup steps\n1. Hugging Face API: In the HF_FetchRows node, ensure the URL points to the correct Hugging Face dataset server.\n2. MongoDB Credentials: Connect your MongoDB account in the Mongo_InsertOrUpsert node and specify your target collection.\n3. Subworkflow ID: Update the Subworkflow_InsertBatch node with the specific ID of your local subworkflow to ensure the loop functions correctly.\n4. Configuration: Adjust the Config_Start node to set your desired dataset name and batch length (default is 100)\n"},"typeVersion":1},{"id":"a6d24010-70d8-4f33-a16d-654d691fa233","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[736,672],"parameters":{"color":7,"width":624,"height":304,"content":"Fetch & extract\nFetch rows from HF API, extract array, and split into items."},"typeVersion":1},{"id":"9ff85351-1953-45b9-a3da-63fee464dca1","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[1440,592],"parameters":{"color":7,"width":1104,"height":304,"content":"Transform & insert\nRemove HF _id, add metadata, then insert documents into MongoDB."},"typeVersion":1},{"id":"772be563-1834-4884-9338-fbcc7f6c3804","name":"InsertBatch","type":"n8n-nodes-base.executeWorkflow","position":[1904,176],"parameters":{"mode":"each","options":{"waitForSubWorkflow":true},"workflowId":{"__rl":true,"mode":"list","value":"P4SdjAY71rPIh9OB","cachedResultUrl":"/workflow/P4SdjAY71rPIh9OB","cachedResultName":"Hg_subworkflow"},"workflowInputs":{"value":{"split":"={{ $json.split }}","config":"={{ $json.config }}","length":"={{ $json.length }}","offset":"={{ $json.offset }}","dataset":"={{ $json.dataset }}","collection_name":"={{ $json.collection_name }}"},"schema":[{"id":"offset","type":"number","display":true,"removed":false,"required":false,"displayName":"offset","defaultMatch":false,"canBeUsedToMatch":true},{"id":"length","type":"number","display":true,"removed":false,"required":false,"displayName":"length","defaultMatch":false,"canBeUsedToMatch":true},{"id":"dataset","type":"string","display":true,"removed":false,"required":false,"displayName":"dataset","defaultMatch":false,"canBeUsedToMatch":true},{"id":"config","type":"string","display":true,"removed":false,"required":false,"displayName":"config","defaultMatch":false,"canBeUsedToMatch":true},{"id":"split","type":"string","display":true,"removed":false,"required":false,"displayName":"split","defaultMatch":false,"canBeUsedToMatch":true},{"id":"collection_name","type":"string","display":true,"removed":false,"required":false,"displayName":"collection_name","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":true}},"typeVersion":1.3},{"id":"73449288-7730-4f6f-9695-765750124336","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[1520,112],"parameters":{"color":7,"width":864,"height":272,"content":"Loop & orchestration\nControl offset/length, call subworkflow per batch, repeat until no rows remain.\n"},"typeVersion":1},{"id":"c1740cac-c070-4c54-a3eb-ef7a56a2a65c","name":"NoRows_Offset","type":"n8n-nodes-base.set","position":[1456,992],"parameters":{"options":{"dotNotation":true},"assignments":{"assignments":[{"id":"5e7e828f-07ee-4071-9088-88a09cb19d12","name":"rows_count","type":"number","value":0}]}},"typeVersion":3.4},{"id":"47809a64-adef-44ff-a561-fb0f87b534c6","name":"Sticky Note9","type":"n8n-nodes-base.stickyNote","position":[1440,944],"parameters":{"color":7,"width":224,"height":304,"content":"### Set rows_count to zero"},"typeVersion":1}],"pinData":{"SubTrigger":[{"split":"train","config":"default","length":100,"offset":0,"dataset":"MongoDB/airbnb_embeddings","collection_name":"airbnb"}],"Trigger_Manual":[{}]},"connections":{"HasRows?":{"main":[[{"node":"Row_Splitter","type":"main","index":0}],[{"node":"NoRows_Offset","type":"main","index":0}]]},"Aggregate":{"main":[[{"node":"setOffset","type":"main","index":0}]]},"SubTrigger":{"main":[[{"node":"HF_FetchRows","type":"main","index":0}]]},"InsertBatch":{"main":[[{"node":"ContinueLoop?","type":"main","index":0}]]},"Config_Start":{"main":[[{"node":"InsertBatch","type":"main","index":0}]]},"Extract_Rows":{"main":[[{"node":"HasRows?","type":"main","index":0}]]},"HF_FetchRows":{"main":[[{"node":"Extract_Rows","type":"main","index":0}]]},"Row_Splitter":{"main":[[{"node":"Transform_RemoveId_AddMeta","type":"main","index":0}]]},"ContinueLoop?":{"main":[[{"node":"InsertBatch","type":"main","index":0}],[{"node":"Stop","type":"main","index":0}]]},"Trigger_Manual":{"main":[[{"node":"Config_Start","type":"main","index":0}]]},"Mongo_InsertOrUpsert":{"main":[[{"node":"Aggregate","type":"main","index":0}]]},"Transform_RemoveId_AddMeta":{"main":[[{"node":"Mongo_InsertOrUpsert","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":20,"nodeTypes":{"n8n-nodes-base.if":{"count":2},"n8n-nodes-base.set":{"count":4},"n8n-nodes-base.code":{"count":1},"n8n-nodes-base.noOp":{"count":1},"n8n-nodes-base.mongoDb":{"count":1},"n8n-nodes-base.splitOut":{"count":1},"n8n-nodes-base.aggregate":{"count":1},"n8n-nodes-base.stickyNote":{"count":5},"n8n-nodes-base.httpRequest":{"count":1},"n8n-nodes-base.manualTrigger":{"count":1},"n8n-nodes-base.executeWorkflow":{"count":1},"n8n-nodes-base.executeWorkflowTrigger":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Mohamed Abdelwahab","username":"mohelwah","bio":"I’m an AI Automation Engineer with 5+ years of experience designing and implementing intelligent, scalable automation systems. I specialize in streamlining operations, reducing manual tasks, and building AI-powered solutions using Python, Node.js, and no-code/low-code platforms n8n.\n\nWhether you need to integrate complex APIs, build automated workflows, or deploy AI chatbots, I can deliver robust solutions tailored to your business needs.\nhttps://www.freelancer.com/u/MohmedAbdelwahab","verified":true,"links":["https://www.upwork.com/freelancers/~01bf6d0d89522ab95d"],"avatar":"https://gravatar.com/avatar/bd48d27acd715a75456eefdfb956c531bc94d929322c1610cee61f70316d7158?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":26,"icon":"fa:arrow-right","name":"n8n-nodes-base.noOp","codex":{"data":{"alias":["nothing"],"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/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/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/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/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.noop/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"organization\"]","defaults":{"name":"No Operation, do nothing","color":"#b0b0b0"},"iconData":{"icon":"arrow-right","type":"icon"},"displayName":"No Operation, do nothing","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":59,"icon":"file:mongodb.svg","name":"n8n-nodes-base.mongoDb","codex":{"data":{"resources":{"generic":[{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"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-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"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mongodb/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/mongodb/"}]},"categories":["Development","Data & Storage"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\"]","defaults":{"name":"MongoDB"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCIgdmlld0JveD0iMCAwIDMyIDMyIj48cGF0aCBmaWxsPSIjNTk5NjM2IiBkPSJtMTUuOS4wODcuODU0IDEuNjA0Yy4xOTIuMjk2LjQuNTU4LjY0NS44MDJhMjIgMjIgMCAwIDEgMi4wMDQgMi4yNjZjMS40NDcgMS45IDIuNDIzIDQuMDEgMy4xMiA2LjI5Mi40MTggMS4zOTQuNjQ1IDIuODI0LjY2MiA0LjI3LjA3IDQuMzIzLTEuNDEyIDguMDM1LTQuNCAxMS4xMmExMyAxMyAwIDAgMS0xLjU3IDEuMzQyYy0uMjk2IDAtLjQzNi0uMjI3LS41NTgtLjQzNmEzLjYgMy42IDAgMCAxLS40MzYtMS4yNTVjLS4xMDUtLjUyMy0uMTc0LTEuMDQ2LS4xNC0xLjU4NnYtLjI0NEMxNi4wNTcgMjQuMjEgMTUuNzk2LjIxIDE1LjkuMDg3Ii8+PHBhdGggZmlsbD0iIzZjYWM0OCIgZD0iTTE1LjkuMDM0Yy0uMDM1LS4wNy0uMDctLjAxNy0uMTA1LjAxNy4wMTcuMzUtLjEwNS42NjItLjI5Ni45Ni0uMjEuMjk2LS40ODguNTIzLS43NjcuNzY3LTEuNTUgMS4zNDItMi43NyAyLjk2My0zLjc0NyA0Ljc3Ni0xLjMgMi40NC0xLjk3IDUuMDU1LTIuMTYgNy44MDgtLjA4Ny45OTMuMzE0IDQuNDk3LjYyNyA1LjUwOC44NTQgMi42ODQgMi4zODggNC45MzMgNC4zNzUgNi44ODUuNDg4LjQ3IDEuMDEuOTA2IDEuNTUgMS4zMjUuMTU3IDAgLjE3NC0uMTQuMjEtLjI0NGE1IDUgMCAwIDAgLjE1Ny0uNjhsLjM1LTIuNjE0eiIvPjxwYXRoIGZpbGw9IiNjMmJmYmYiIGQ9Ik0xNi43NTQgMjguODQ1Yy4wMzUtLjQuMjI3LS43MzIuNDM2LTEuMDYzLS4yMS0uMDg3LS4zNjYtLjI2LS40ODgtLjQ1M2EzLjIgMy4yIDAgMCAxLS4yNi0uNTc1Yy0uMjQ0LS43MzItLjI5Ni0xLjUtLjM2Ni0yLjI0OHYtLjQ1M2MtLjA4Ny4wNy0uMTA1LjY2Mi0uMTA1Ljc1YTE3IDE3IDAgMCAxLS4zMTQgMi4zNTNjLS4wNTIuMzE0LS4wODcuNjI3LS4yOC45MDYgMCAuMDM1IDAgLjA3LjAxNy4xMjIuMzE0LjkyNC40IDEuODY1LjQ1MyAyLjgyNHYuMzVjMCAuNDE4LS4wMTcuMzMuMzMuNDcuMTQuMDUyLjI5Ni4wNy40MzYuMTc0LjEwNSAwIC4xMjItLjA4Ny4xMjItLjE1N2wtLjA1Mi0uNTc1di0xLjYwNGMtLjAxNy0uMjguMDM1LS41NTguMDctLjgyeiIvPjwvc3ZnPg=="},"displayName":"MongoDB","typeVersion":1,"nodeCategories":[{"id":3,"name":"Data & Storage"},{"id":5,"name":"Development"}]},{"id":111,"icon":"fa:sign-in-alt","name":"n8n-nodes-base.executeWorkflow","codex":{"data":{"alias":["n8n","call","sub","workflow","sub-workflow","subworkflow"],"details":"The Execute Workflow node can be used when you want your workflow to treat another workflow as a step in your flow. It allows you to modularize your workflows and have a single source of truth for series of actions you perform often. ","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflow/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"Execute Workflow","color":"#ff6d5a"},"iconData":{"icon":"sign-in-alt","type":"icon"},"displayName":"Execute Sub-workflow","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":837,"icon":"fa:sign-out-alt","name":"n8n-nodes-base.executeWorkflowTrigger","codex":{"data":{"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflowtrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"trigger\"]","defaults":{"name":"When Executed by Another Workflow","color":"#ff6d5a"},"iconData":{"icon":"sign-out-alt","type":"icon"},"displayName":"Execute Workflow Trigger","typeVersion":1,"nodeCategories":[{"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":1236,"icon":"file:aggregate.svg","name":"n8n-nodes-base.aggregate","codex":{"data":{"alias":["Aggregate","Combine","Flatten","Transform","Array","List","Item"],"details":"","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.aggregate/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Aggregate"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIj48ZyBmaWxsPSIjRkY2RDVBIiBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTMyIDE0OGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE0NmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJINDRjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6bTAgOTZjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNDZjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDQ0Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEyem0wIDk2YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTQ2YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkg0NGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGQ9Ik03NCA3NmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDExNi4yMTdjMTcuNjczIDAgMzIgMTQuMzI3IDMyIDMydjU2YzAgMjYuOTc4IDEwLjI3MiA1MS41NTcgMjcuMTE5IDcwLjAzOSA1LjA1NSA1LjU0NSA1LjA1NSAxNC4zNzcgMCAxOS45MjItMTYuODQ3IDE4LjQ4Mi0yNy4xMTkgNDMuMDYxLTI3LjExOSA3MC4wMzl2NTZjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMySDg2Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTE2LjIxN2M0NC4xODMgMCA4MC0zNS44MTcgODAtODB2LTU2YzAtMzAuOTI4IDI1LjA3Mi01NiA1Ni01NmE1Ljc4MyA1Ljc4MyAwIDAgMCA1Ljc4My01Ljc4M3YtMzYuNDM0YTUuNzgzIDUuNzgzIDAgMCAwLTUuNzgzLTUuNzgzYy0zMC45MjggMC01Ni0yNS4wNzItNTYtNTZ2LTU2YzAtNDQuMTgzLTM1LjgxNy04MC04MC04MEg4NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnoiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zNzYgMjQ0YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTEyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkgzODhjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJhIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDUxMnY1MTJIMHoiLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz4="},"displayName":"Aggregate","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1239,"icon":"file:splitOut.svg","name":"n8n-nodes-base.splitOut","codex":{"data":{"alias":["Split","Nested","Transform","Array","List","Item"],"details":"","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitout/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Split Out"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIj48ZyBmaWxsPSIjOUI2REQ1IiBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQ4MCAxNDhjMC02LjYyNy01LjM3My0xMi0xMi0xMkgzMjJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjRjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxNDZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMCA5NmMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDMyMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyNGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDE0NmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0wIDk2YzAtNi42MjctNS4zNzMtMTItMTItMTJIMzIyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTQ2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBkPSJNNDM4IDc2YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzA5Ljc4M2MtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMydjU2YzAgMjYuOTc4LTEwLjI3MiA1MS41NTctMjcuMTE5IDcwLjAzOS01LjA1NSA1LjU0NS01LjA1NSAxNC4zNzcgMCAxOS45MjIgMTYuODQ3IDE4LjQ4MiAyNy4xMTkgNDMuMDYxIDI3LjExOSA3MC4wMzl2NTZjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMySDQyNmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzA5Ljc4M2MtNDQuMTgzIDAtODAtMzUuODE3LTgwLTgwdi01NmMwLTMwLjkyOC0yNS4wNzItNTYtNTYtNTZhNS43ODMgNS43ODMgMCAwIDEtNS43ODMtNS43ODN2LTM2LjQzNGE1Ljc4MyA1Ljc4MyAwIDAgMSA1Ljc4My01Ljc4M2MzMC45MjggMCA1Ni0yNS4wNzIgNTYtNTZ2LTU2YzAtNDQuMTgzIDM1LjgxNy04MCA4MC04MEg0MjZjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnoiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMzYgMjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjRjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxMTJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9ImEiPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik01MTIgMEgwdjUxMmg1MTJ6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+"},"displayName":"Split Out","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":5,"name":"Engineering"}],"image":[]}}