{"workflow":{"id":14095,"name":"Create a weekly Mealie dinner plan and generate a smart shopping list","views":0,"recentViews":0,"totalViews":0,"createdAt":"2026-03-16T23:52:18.973Z","description":"This n8n template automatically generates a full week of dinner meal plans in your self hosted **Mealie** instance, allows you to review and remove meals via email, replaces any removed meals with new random recipes, and finally creates a shopping list based on the finalized meal plan.\n\nIt is perfect for anyone who wants mostly hands off weekly planning while still keeping control over what meals end up on the schedule. Set it once and let it generate your dinners, review them quickly in your inbox, and automatically prepare your ingredient list for the week.\n\n---\n\n## How it works\n\n* A **Schedule Trigger** runs once per week to start the workflow.\n* A **Code node** generates the next 7 calendar days starting from today.\n* For each day, the workflow calls the **Mealie API** to generate a random dinner entry.\n* The weekly meal plan is retrieved and formatted into an email.\n* A **Gmail Send & Wait node** sends the meal plan to you with a form that allows you to remove any meals you do not want.\n* Any meals flagged for removal are deleted from the Mealie meal plan and replaced with new randomly generated meals.\n* The workflow retrieves the full recipe details for each meal in the finalized plan.\n* A new **shopping list** is created in Mealie for the week.\n* Recipe ingredients are added to the shopping list based on the finalized set of meals.\n\n---\n\n## What this gives you\n\n* Automatic weekly dinner planning\n* A simple email based meal review step\n* Automatic replacement of meals you do not want\n* A finalized shopping list generated directly in Mealie\n* Structured recipe and ingredient data that can be extended to:\n  * Aggregate ingredients across recipes\n  * Remove duplicate ingredients\n  * Scale quantities\n  * Export to external services\n\n---\n\n## How to use\n\n* By default, this runs weekly using the **Schedule Trigger**. You can change the interval or replace it with:\n  * A **Manual Trigger**\n  * A **Webhook**\n  * A **Form submission**\n* Make sure your **Mealie API endpoint** and **Bearer credentials** are configured correctly in the HTTP Request nodes.\n* Update the **Send Gmail & Wait** node to use your Gmail account and preferred recipient email.\n* Adjust the `entryType` field if you want to generate **breakfast or lunch** instead of dinner.\n\n---\n\n## Requirements\n\n* A running **Mealie** instance with API access enabled\n* **HTTP Bearer credentials** configured in n8n for Mealie API access\n* A connected **Gmail account** in n8n for sending the meal review email\n* Network access from n8n to your Mealie server","workflow":{"meta":{"instanceId":"d02dedabfaec1c62c6f5dc887654c692b28d1c3763c4b6b7df0f9dba2a53e15b","templateCredsSetupCompleted":true},"nodes":[{"id":"4594397e-3aa0-4872-985b-6e11b9bff28b","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[10512,1088],"parameters":{"color":7,"width":768,"height":272,"content":"## Schedule and meal generation\n\nTriggering the workflow and creating the weekly meal plan."},"typeVersion":1},{"id":"783a568d-c3fc-4191-823d-2bf7aad4f5a1","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[11408,1088],"parameters":{"color":7,"width":1376,"height":272,"content":"## Meal plan email workflow\n\nFetching meals, normalizing data, emailing and handling user responses."},"typeVersion":1},{"id":"99d6ab0b-f8b4-490a-a6a7-5f08066a5364","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[13248,1072],"parameters":{"color":7,"width":1440,"height":272,"content":"## Shopping list creation\n\nRetrieving recipe data and building a shopping list in Mealie."},"typeVersion":1},{"id":"3c024a75-7911-4528-b726-d829384b0c0b","name":"Add Ingredients To Shopping List","type":"n8n-nodes-base.httpRequest","position":[14544,1184],"parameters":{"url":"=http://<mealie ip address>:9925/api/households/shopping/lists/{{$('Create Shopping List in Mealie').item.json.id}}/recipe","method":"POST","options":{},"jsonBody":"={{ $json.recipes }}","sendBody":true,"specifyBody":"json","authentication":"predefinedCredentialType","nodeCredentialType":"httpBearerAuth"},"credentials":{"httpBearerAuth":{"id":"cchZ75ZVdCKTJCDE","name":"Mealie Auth Account"}},"executeOnce":false,"typeVersion":4.4},{"id":"904ddc41-c71e-432e-8564-4e766905fa44","name":"Delete Random Meal Plan","type":"n8n-nodes-base.httpRequest","position":[13424,1744],"parameters":{"url":"=http://<mealie ip address>:9925/api/households/mealplans/{{ $json.id }}","method":"DELETE","options":{},"authentication":"predefinedCredentialType","nodeCredentialType":"httpBearerAuth"},"credentials":{"httpBearerAuth":{"id":"cchZ75ZVdCKTJCDE","name":"Mealie Auth Account"}},"typeVersion":4.4},{"id":"85c04cb6-c234-424e-a5eb-6645829200b5","name":"Split Removals Array","type":"n8n-nodes-base.splitOut","position":[13200,1744],"parameters":{"options":{},"fieldToSplitOut":"removals"},"typeVersion":1},{"id":"a4fd769a-992f-4a82-a3b1-fb310e558047","name":"Generate Random Meal Plan","type":"n8n-nodes-base.httpRequest","position":[11136,1200],"parameters":{"url":"http://<mealie ip address>:9925/api/households/mealplans/random","method":"POST","options":{},"sendBody":true,"authentication":"predefinedCredentialType","bodyParameters":{"parameters":[{"name":"date","value":"={{ $json.date }}"},{"name":"entryType","value":"dinner"}]},"nodeCredentialType":"httpBearerAuth"},"credentials":{"httpBearerAuth":{"id":"cchZ75ZVdCKTJCDE","name":"Mealie Auth Account"}},"typeVersion":4.4},{"id":"d0b8ac89-7d39-465b-87b2-19cf2dcda40a","name":"Create Shopping List in Mealie","type":"n8n-nodes-base.httpRequest","position":[13840,1184],"parameters":{"url":"http://<mealie ip address>:9925/api/households/shopping/lists","method":"POST","options":{},"jsonBody":"={\n  \"name\": \"Shopping List Week of {{ $('Generate Upcoming Week').item.json.date }}\"\n} ","sendBody":true,"specifyBody":"json","authentication":"predefinedCredentialType","nodeCredentialType":"httpBearerAuth"},"credentials":{"httpBearerAuth":{"id":"cchZ75ZVdCKTJCDE","name":"Mealie Auth Account"}},"executeOnce":true,"typeVersion":4.4,"alwaysOutputData":false},{"id":"3cb018a9-b6f9-491d-a412-ed82539e8660","name":"Normalize Recipe Data","type":"n8n-nodes-base.code","position":[14320,1184],"parameters":{"jsCode":"const recipes = $('Fetch Recipe By Slug').all();\n\nconst mealPlanRecipes = recipes.map(item => {\n  const recipe = item.json;\n  return {\n    recipeId: recipe.id,\n    recipeIncrementQuantity: recipe.recipeServings ?? 1,\n    recipeIngredients: (recipe.recipeIngredient ?? []).map(ing => ({\n      quantity: ing.quantity ?? 0,\n      unit: ing.unit ?? null,\n      food: ing.food ?? null,\n      referencedRecipe: ing.referencedRecipe ?? null,\n      note: ing.note ?? \"\",\n      display: ing.display ?? \"\",\n      title: ing.title ?? null,\n      originalText: ing.originalText ?? null,\n      referenceId: ing.referenceId ?? null,\n    }))\n  };\n});\n\nreturn [{\n  json: {\n    recipes: mealPlanRecipes\n  }\n}];"},"typeVersion":2},{"id":"e8d36d94-22a2-4bfd-b2f2-b4ae3fbdab1f","name":"Fetch Current Week Meal Plans","type":"n8n-nodes-base.httpRequest","position":[11456,1200],"parameters":{"url":"http://<mealie ip address>:9925/api/households/mealplans","options":{},"sendQuery":true,"authentication":"predefinedCredentialType","queryParameters":{"parameters":[{"name":"start_date","value":"={{ $now.format('yyyy-MM-dd') }}"},{"name":"end_date","value":"={{ $now.plus(7, 'days').format('yyyy-MM-dd') }}"},{"name":"orderBy","value":"date"},{"name":"orderDirection","value":"asc"}]},"nodeCredentialType":"httpBearerAuth"},"credentials":{"httpBearerAuth":{"id":"cchZ75ZVdCKTJCDE","name":"Mealie Auth Account"}},"executeOnce":true,"typeVersion":4.4},{"id":"0bf51a6a-1e86-43b8-a68b-3e68d11022c4","name":"Send Meal Plan Email","type":"n8n-nodes-base.gmail","position":[11952,1200],"webhookId":"1d847c37-80e5-457e-a391-b97e37ae89fa","parameters":{"sendTo":"user@example.com","message":"={{ $json.html }}","options":{"responseFormCustomCss":":root {\n\t--font-family: 'Open Sans', sans-serif;\n\t--font-weight-normal: 400;\n\t--font-weight-bold: 600;\n\t--font-size-body: 12px;\n\t--font-size-label: 14px;\n\t--font-size-test-notice: 12px;\n\t--font-size-input: 14px;\n\t--font-size-header: 20px;\n\t--font-size-paragraph: 14px;\n\t--font-size-link: 12px;\n\t--font-size-error: 12px;\n\t--font-size-html-h1: 28px;\n\t--font-size-html-h2: 20px;\n\t--font-size-html-h3: 16px;\n\t--font-size-html-h4: 14px;\n\t--font-size-html-h5: 12px;\n\t--font-size-html-h6: 10px;\n\t--font-size-subheader: 14px;\n\n\t/* Colors */\n\t--color-background: #fbfcfe;\n\t--color-test-notice-text: #e6a23d;\n\t--color-test-notice-bg: #fefaf6;\n\t--color-test-notice-border: #f6dcb7;\n\t--color-card-bg: #ffffff;\n\t--color-card-border: #dbdfe7;\n\t--color-card-shadow: rgba(99, 77, 255, 0.06);\n\t--color-link: #7e8186;\n\t--color-header: #525356;\n\t--color-label: #555555;\n\t--color-input-border: #dbdfe7;\n\t--color-input-text: #71747A;\n\t--color-focus-border: rgb(90, 76, 194);\n\t--color-submit-btn-bg: #ff6d5a;\n\t--color-submit-btn-text: #ffffff;\n\t--color-error: #ea1f30;\n\t--color-required: #ff6d5a;\n\t--color-clear-button-bg: #7e8186;\n\t--color-html-text: #555;\n\t--color-html-link: #ff6d5a;\n\t--color-header-subtext: #7e8186;\n\n\t/* Border Radii */\n\t--border-radius-card: 8px;\n\t--border-radius-input: 6px;\n\t--border-radius-clear-btn: 50%;\n\t--card-border-radius: 8px;\n\n\t/* Spacing */\n\t--padding-container-top: 24px;\n\t--padding-card: 24px;\n\t--padding-test-notice-vertical: 12px;\n\t--padding-test-notice-horizontal: 24px;\n\t--margin-bottom-card: 16px;\n\t--padding-form-input: 12px;\n\t--card-padding: 24px;\n\t--card-margin-bottom: 16px;\n\n\t/* Dimensions */\n\t--container-width: 100vw;\n\t--submit-btn-height: 48px;\n\t--checkbox-size: 18px;\n\n\t/* Others */\n\t--box-shadow-card: 0px 4px 16px 0px var(--color-card-shadow);\n\t--opacity-placeholder: 0.5;\n}"},"subject":"=Mealie Meal Plan for {{ $now.format('yyyy-MM-dd') }}","operation":"sendAndWait","defineForm":"json","jsonOutput":"={{ $json.fields }}","responseType":"customForm"},"typeVersion":2.2},{"id":"ca9ce38b-7eb7-4d93-8d5c-2a0b6c25e450","name":"Normalize User Response","type":"n8n-nodes-base.code","position":[12160,1200],"parameters":{"jsCode":"const data = $input.first().json.data;\n\nconst removals = Object.entries(data)\n  .filter(([key, value]) => value.includes(\"Remove from meal plan\"))\n  .map(([key]) => {\n    // Format: \"2026-03-04 — Recipe Name - 148\"\n    const lastDash = key.lastIndexOf(' - ');\n    const id = key.substring(lastDash + 3).trim();\n    const withoutId = key.substring(0, lastDash).trim();\n\n    const [date, ...nameParts] = withoutId.split(' — ');\n    return {\n      id,\n      date: date.trim(),\n      recipeName: nameParts.join(' — ').trim()\n    };\n  });\n\nreturn [{\n  json: {\n    removals,\n    isEmpty: removals.length === 0\n  }\n}];"},"typeVersion":2},{"id":"1a16fd08-534a-4bbe-a6e7-fce3533e15fc","name":"Check for Removals","type":"n8n-nodes-base.if","position":[12640,1200],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"277ef324-0619-46ed-81bd-37447d7306b4","operator":{"type":"array","operation":"empty","singleValue":true},"leftValue":"={{ $json.removals }}","rightValue":""}]}},"typeVersion":2.3},{"id":"5334884e-470e-47d7-b841-39b11c8b6082","name":"Generate Upcoming Week","type":"n8n-nodes-base.code","position":[10928,1200],"parameters":{"jsCode":"const days = [];\nconst today = new Date($now.toFormat('yyyy-MM-dd'));\nfor (let i = 0; i < 7; i++) {\n  const date = new Date(today);\n  date.setDate(today.getDate() + i);\n  days.push({\n    json: {\n      date: date.toISOString().split(\"T\")[0],\n      dayOfWeek: date.toLocaleDateString(\"en-US\", { weekday: \"long\" }),\n    }\n  });\n}\nreturn days;"},"typeVersion":2},{"id":"dec9f546-f092-429f-84d0-300fae39ce71","name":"Weekly Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[10560,1200],"parameters":{"rule":{"interval":[{"field":"weeks"}]}},"typeVersion":1.3},{"id":"57c7f3f0-a5da-4407-b94c-675fe2647b13","name":"Prepare Meal Plan Email Data","type":"n8n-nodes-base.code","position":[11664,1200],"parameters":{"jsCode":"// N8N Code Node - Meal Plan Email Generator\n// Input: the meal plan JSON from your previous node\n// Output: { html: \"...\" } for the Gmail node\n\nconst items = $input.first().json.items;\n\nconst days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];\n\nfunction formatDate(dateStr) {\n  const d = new Date(dateStr + 'T00:00:00');\n  return {\n    weekday: days[d.getDay()],\n    date: d.toLocaleDateString('en-US', { month: 'long', day: 'numeric' })\n  };\n}\n\nfunction shortDesc(text) {\n  // Pull out just the first sentence for a clean summary\n  const first = text.split('. ')[0];\n  return first.length > 160 ? first.substring(0, 157) + '...' : first;\n}\n\nfunction extractStats(desc) {\n  const cal = desc.match(/(\\d+)\\s*calories/i);\n  const protein = desc.match(/(\\d+)g of protein/i);\n  const time = null; // pulled from recipe directly\n  return {\n    calories: cal ? cal[1] : null,\n    protein: protein ? protein[1] : null,\n  };\n}\n\nconst mealRows = items.map(item => {\n  const { weekday, date } = formatDate(item.date);\n  const recipe = item.recipe;\n  const stats = extractStats(recipe.description);\n  const desc = shortDesc(recipe.description);\n\n  const statBadges = [\n    recipe.totalTime ? `⏱ ${recipe.totalTime}` : null,\n    stats.calories ? `🔥 ${stats.calories} cal` : null,\n    stats.protein ? `💪 ${stats.protein}g protein` : null,\n    recipe.recipeServings ? `🍽 Serves ${recipe.recipeServings}` : null,\n  ].filter(Boolean).map(b => `<span style=\"display:inline-block;background:#f0ebe1;color:#7a5c38;font-size:11px;font-weight:500;padding:3px 9px;border-radius:20px;margin:2px 3px 2px 0;\">${b}</span>`).join('');\n\n  return `\n    <tr>\n      <td style=\"padding:0 0 14px 0;\">\n        <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"background:#ffffff;border:1px solid #e8dfd0;border-radius:12px;overflow:hidden;\">\n          <tr>\n            <td style=\"background:#2c2416;width:80px;text-align:center;padding:16px 10px;vertical-align:top;\">\n              <div style=\"font-family:'Georgia',serif;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.1em;color:#c9a96e;line-height:1.2;\">${weekday.substring(0,3)}</div>\n              <div style=\"font-family:'Georgia',serif;font-size:22px;font-weight:700;color:#fdf8f0;line-height:1.1;margin-top:2px;\">${new Date(item.date + 'T00:00:00').getDate()}</div>\n              <div style=\"font-family:'Georgia',serif;font-size:10px;color:#a89070;margin-top:2px;\">${new Date(item.date + 'T00:00:00').toLocaleDateString('en-US',{month:'short'})}</div>\n            </td>\n            <td style=\"padding:16px 20px;vertical-align:top;\">\n              <div style=\"font-family:'Georgia',serif;font-size:16px;font-weight:700;color:#2c2416;margin-bottom:6px;\">${recipe.name}</div>\n              <div style=\"margin-bottom:8px;\">${statBadges}</div>\n              <div style=\"font-size:13px;color:#6b5740;line-height:1.6;\">${desc}.</div>\n            </td>\n          </tr>\n        </table>\n      </td>\n    </tr>\n  `;\n}).join('');\n\nconst selectOptions = items.map(item => {\n  const { weekday } = formatDate(item.date);\n  return `<option value=\"${item.id}|${item.recipeId}|${item.date}\">${weekday} – ${item.recipe.name}</option>`;\n}).join('\\n');\n\nconst html = `<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\"/>\n  <meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\"/>\n</head>\n<body style=\"margin:0;padding:32px 16px;background-color:#f5f0e8;font-family:'Helvetica Neue',Arial,sans-serif;color:#2c2416;\">\n  <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">\n    <tr><td align=\"center\">\n      <table width=\"620\" cellpadding=\"0\" cellspacing=\"0\" style=\"max-width:620px;width:100%;\">\n\n        <!-- Header -->\n        <tr>\n          <td style=\"background:#2c2416;border-radius:16px 16px 0 0;padding:36px 40px 28px;text-align:center;\">\n            <div style=\"font-size:11px;font-weight:600;letter-spacing:0.2em;text-transform:uppercase;color:#c9a96e;margin-bottom:10px;\">Weekly Dinner Plan</div>\n            <div style=\"font-family:'Georgia',serif;font-size:28px;font-weight:700;color:#fdf8f0;line-height:1.2;\">This Week's Dinners</div>\n            <div style=\"margin-top:10px;font-size:14px;color:#a89070;\">Review your meals below, then let us know if you'd like to swap anything out.</div>\n          </td>\n        </tr>\n\n        <!-- Body -->\n        <tr>\n          <td style=\"background:#fdf8f0;padding:32px 40px;\">\n\n            <!-- Intro -->\n            <p style=\"font-size:14.5px;line-height:1.7;color:#5a4a35;margin:0 0 24px 0;padding-bottom:24px;border-bottom:1px solid #e8dfd0;\">\n              Here's your dinner lineup for the week. Take a look at each meal, and if anything doesn't appeal to you, use the form below to flag it for replacement.\n            </p>\n\n            <!-- Meal Cards -->\n            <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">\n              ${mealRows}\n            </table>\n\n            <!-- Divider -->\n            <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"margin:8px 0 28px;\">\n              <tr><td style=\"border-top:1px dashed #d4c8b5;font-size:0;\">&nbsp;</td></tr>\n            </table>\n          </td>\n        </tr>\n      </table>\n    </td></tr>\n  </table>\n</body>\n</html>`;\n\nconst fields = items.map(item => ({\n  fieldLabel: `${item.date} — ${item.recipe.name} - ${item.id}`,\n  fieldType: \"checkbox\",\n  fieldOptions: {\n    values: [\n      {\n        option: \"Remove from meal plan\"\n      }\n    ]\n  }\n}));\n\nreturn [{ json: { html, fields } }];\n"},"typeVersion":2},{"id":"c447f816-8a11-46b6-947b-d519b7971f30","name":"Fetch Recipe By Slug","type":"n8n-nodes-base.httpRequest","position":[13296,1184],"parameters":{"url":"=http://<mealie ip address>:9925/api/recipes/{{ $json.recipe.slug }}","options":{},"authentication":"predefinedCredentialType","nodeCredentialType":"httpBearerAuth"},"credentials":{"httpBearerAuth":{"id":"cchZ75ZVdCKTJCDE","name":"Mealie Auth Account"}},"typeVersion":4.4},{"id":"427e210c-fde2-42dd-9f56-3b6d064dcd83","name":"Sticky Note14","type":"n8n-nodes-base.stickyNote","position":[9952,1072],"parameters":{"width":480,"height":736,"content":"## Create a meal plan with Mealie and generate a smart shopping list\n\n### How it works\n\n- Starts on a schedule to generate a week's worth of meals.\n- Sends an email with the meal plan and handles user responses.\n- Creates a shopping list in Mealie based on chosen recipes.\n- Allows optional removal of a random meal from the plan.\n\n### Setup steps\n\n- [ ] Configure the Schedule Trigger with desired frequency and timezone.\n- [ ] Set up Mealie API credentials (IP, port, authentication) in the HTTP Request nodes.\n- [ ] Enter Gmail account details for the Send Gmail node.\n\n### Customization\n\nAdjust the \"Generate Next 7 Days\" code node to change how dates are calculated or modify the email template in the Gmail node."},"typeVersion":1}],"pinData":{},"connections":{"Check for Removals":{"main":[[{"node":"Fetch Recipe By Slug","type":"main","index":0}],[{"node":"Split Removals Array","type":"main","index":0}]]},"Fetch Recipe By Slug":{"main":[[{"node":"Create Shopping List in Mealie","type":"main","index":0}]]},"Send Meal Plan Email":{"main":[[{"node":"Normalize User Response","type":"main","index":0}]]},"Split Removals Array":{"main":[[{"node":"Delete Random Meal Plan","type":"main","index":0}]]},"Normalize Recipe Data":{"main":[[{"node":"Add Ingredients To Shopping List","type":"main","index":0}]]},"Generate Upcoming Week":{"main":[[{"node":"Generate Random Meal Plan","type":"main","index":0}]]},"Delete Random Meal Plan":{"main":[[{"node":"Generate Random Meal Plan","type":"main","index":0}]]},"Normalize User Response":{"main":[[{"node":"Check for Removals","type":"main","index":0}]]},"Weekly Schedule Trigger":{"main":[[{"node":"Generate Upcoming Week","type":"main","index":0}]]},"Generate Random Meal Plan":{"main":[[{"node":"Fetch Current Week Meal Plans","type":"main","index":0}]]},"Prepare Meal Plan Email Data":{"main":[[{"node":"Send Meal Plan Email","type":"main","index":0}]]},"Fetch Current Week Meal Plans":{"main":[[{"node":"Prepare Meal Plan Email Data","type":"main","index":0}]]},"Create Shopping List in Mealie":{"main":[[{"node":"Normalize Recipe Data","type":"main","index":0}]]}}},"lastUpdatedBy":29,"workflowInfo":{"nodeCount":18,"nodeTypes":{"n8n-nodes-base.if":{"count":1},"n8n-nodes-base.code":{"count":4},"n8n-nodes-base.gmail":{"count":1},"n8n-nodes-base.splitOut":{"count":1},"n8n-nodes-base.stickyNote":{"count":4},"n8n-nodes-base.httpRequest":{"count":6},"n8n-nodes-base.scheduleTrigger":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Kory Clark","username":"kkudda","bio":"","verified":false,"links":["https://korysam15.github.io/"],"avatar":"https://gravatar.com/avatar/5eb15f4759a2977c9633c34273f9f50f894ef7f342a0a039f3ab6dfd48f6e0c8?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":356,"icon":"file:gmail.svg","name":"n8n-nodes-base.gmail","codex":{"data":{"alias":["email","human","form","wait","hitl","approval"],"resources":{"generic":[{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/using-automation-to-boost-productivity-in-the-workplace/","icon":"💪","label":"Using Automation to Boost Productivity in the Workplace"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gmail/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"transform\"]","defaults":{"name":"Gmail"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMTkzIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZmlsbD0iIzQyODVGNCIgZD0iTTU4LjE4MiAxOTIuMDVWOTMuMTRMMjcuNTA3IDY1LjA3NyAwIDQ5LjUwNHYxMjUuMDkxYzAgOS42NTggNy44MjUgMTcuNDU1IDE3LjQ1NSAxNy40NTV6Ii8+PHBhdGggZmlsbD0iIzM0QTg1MyIgZD0iTTE5Ny44MTggMTkyLjA1aDQwLjcyN2M5LjY1OSAwIDE3LjQ1NS03LjgyNiAxNy40NTUtMTcuNDU1VjQ5LjUwNWwtMzEuMTU2IDE3LjgzNy0yNy4wMjYgMjUuNzk4eiIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im01OC4xODIgOTMuMTQtNC4xNzQtMzguNjQ3IDQuMTc0LTM2Ljk4OUwxMjggNjkuODY4bDY5LjgxOC01Mi4zNjQgNC42NyAzNC45OTItNC42NyA0MC42NDRMMTI4IDE0NS41MDR6Ii8+PHBhdGggZmlsbD0iI0ZCQkMwNCIgZD0iTTE5Ny44MTggMTcuNTA0VjkzLjE0TDI1NiA0OS41MDRWMjYuMjMxYzAtMjEuNTg1LTI0LjY0LTMzLjg5LTQxLjg5LTIwLjk0NXoiLz48cGF0aCBmaWxsPSIjQzUyMjFGIiBkPSJtMCA0OS41MDQgMjYuNzU5IDIwLjA3TDU4LjE4MiA5My4xNFYxNy41MDRMNDEuODkgNS4yODZDMjQuNjEtNy42NiAwIDQuNjQ2IDAgMjYuMjN6Ii8+PC9zdmc+"},"displayName":"Gmail","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":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":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":43,"name":"Personal Productivity"}],"image":[]}}