{"workflow":{"id":13533,"name":"Send a weekly Keephub task progress report to Slack","views":17,"recentViews":0,"totalViews":17,"createdAt":"2026-02-20T08:06:42.222Z","description":"This workflow fetches all Keephub task templates active in the \nprevious week for a given org unit, retrieves detailed progress \nfor each one, and posts a formatted summary to Slack every Monday \nat 9:00am.\n\nEach task is shown with its completion percentage and counts, \ngrouped by status:\n🔴 Overdue — tasks past their due date with no completions\n🟡 Open — tasks in progress\n✅ Done — fully completed tasks\n\nA totals summary line is included at the top of every report.\n\n## Prerequisites\n- Keephub account with Login API credentials\nOR Keephub Bearer API token\n- Slack workspace with a channel for reports\n\n## Setup\n1. Connect your **Keephub Login** or **Keephub Bearer** credential to the \"Get Tasks by \n   Orgunit\" node\n2. Connect your **Keephub Login** or **Keephub Bearer** credential to the \"Get Progress\" \n   node\n3. Set your `orgunitId` in the \"Get Tasks by Orgunit\" node\n4. Connect your **Slack** credential and set your channel in \n   \"Send a message\"\n\n## Customisation\n- Change the date window in the two DateTime nodes to report on \n  different periods (e.g. last 30 days for a monthly report)\n- Replace the Slack node with any messaging app — Teams, Discord, \n  email, etc.\n- Adjust the task limit (default: 200) in \"Get Tasks by Orgunit\" \n  if you have more templates\n","workflow":{"meta":{"instanceId":"","templateCredsSetupCompleted":true},"nodes":[{"id":"0f418647-b9b5-4544-a6a8-caca65e976e6","name":"Every Monday 9am","type":"n8n-nodes-base.scheduleTrigger","position":[544,1056],"parameters":{"rule":{"interval":[{"field":"weeks","triggerAtDay":[1],"triggerAtHour":9}]}},"typeVersion":1.2},{"id":"c0db31a3-ec69-4801-b13a-d069fb85b7ab","name":"Last Week Start","type":"n8n-nodes-base.dateTime","position":[768,1152],"parameters":{"options":{},"duration":7,"magnitude":"={{ $now }}","operation":"subtractFromDate","outputFieldName":"lastWeekStart"},"typeVersion":2},{"id":"dab8e77c-f899-47ae-9b96-4c1109845877","name":"Get Tasks by Orgunit","type":"n8n-nodes-keephub.keephub","position":[1216,1152],"parameters":{"options":{"limit":200,"sortBy":"template.dueDate","sortOrder":1,"startDateGte":"={{ $('Last Week Start').first().json.lastWeekStart }}","startDateLte":"={{ $('Last Week End').first().json.lastWeekEnd }}"},"resource":"task","operation":"getTaskByOrgunit","orgunitId":"YOUR_ORG_UNIT_ID","authentication":"loginCredentials"},"credentials":{"keephubLoginApi":{"id":"hh22Q5qm3ZZZtMc2","name":"Keephub Login account"}},"typeVersion":1},{"id":"fa6f817a-0783-4fbc-b4c6-30fcf25f1443","name":"Extract Task Template IDs","type":"n8n-nodes-base.code","position":[1440,1152],"parameters":{"jsCode":"return $input.all().map(item => ({\n  json: {\n    taskTemplateId: item.json._id,\n    title: item.json.template?.title?.en || item.json.title?.en || item.json._id\n  }\n}));\n"},"typeVersion":2},{"id":"6682cd7c-3821-4d9c-8034-a2d67166bcf7","name":"Get Progress","type":"n8n-nodes-keephub.keephub","position":[1664,1080],"parameters":{"taskId":"={{ $json.taskTemplateId }}","resource":"task","operation":"getTaskProgress"},"credentials":{"keephubBearerApi":{"id":"5NUOupTW1SOs06nN","name":"Keephub Bearer account"}},"typeVersion":1},{"id":"a6f4583e-44e1-44b2-8413-9b50de3ab60a","name":"Merge","type":"n8n-nodes-base.merge","position":[1888,1152],"parameters":{"mode":"combine","options":{},"combineBy":"combineByPosition"},"typeVersion":3.2},{"id":"98526c0c-4628-45c0-9625-5e6abc8a82be","name":"Format for Message","type":"n8n-nodes-base.code","position":[2112,1152],"parameters":{"jsCode":"const items = $input.all();\nconst date = new Date().toLocaleDateString('en-GB', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' });\n\nlet overdueItems = [], openItems = [], doneItems = [], stats = { total: 0, done: 0, openCount: 0, overdueCount: 0, doneCount: 0 };\n\nitems.forEach(item => {\n  const progress = item.json.fullProgress?.[0] ?? {};\n  const done = progress.done ?? 0;\n  const openCount = progress.open ?? 0;\n  const status = progress.status ?? 'unknown';\n\n  stats.total += done + openCount;\n  stats.done += done;\n  stats.openCount += openCount;\n  if (status === 'overdue') stats.overdueCount++;\n  if (status === 'done') stats.doneCount++;\n\n  const title = item.json.title || item.json.id || 'Untitled';\n  const total = done + openCount;\n  const pct = total > 0 ? Math.round((done / total) * 100) : 0;\n  const emoji = status === 'overdue' ? '🔴' : status === 'open' ? '🟡' : '✅';\n  const line = `*${title}* ${emoji} ${pct}% (${done}/${total})`;\n\n  if (status === 'overdue') overdueItems.push(line);\n  else if (status === 'done') doneItems.push(line);\n  else openItems.push(line);\n});\n\nconst totalPct = stats.total > 0 ? Math.round((stats.done / stats.total) * 100) : 0;\n\nlet report = `*📊 Keephub Weekly Tasks — ${date}*\\n\\n`;\nreport += `📋 Totals: ${stats.done}/${stats.total} (${totalPct}%) | ⏳ ${stats.openCount} open | 🔴 ${stats.overdueCount} overdue | ✅ ${stats.doneCount} done\\n\\n`;\n\nif (overdueItems.length) {\n  report += `🔴 *OVERDUE (${overdueItems.length}):*\\n` + overdueItems.join('\\n') + '\\n\\n';\n}\nif (openItems.length) {\n  report += `🟡 *OPEN (${openItems.length}):*\\n` + openItems.join('\\n') + '\\n\\n';\n}\nif (doneItems.length) {\n  report += `✅ *DONE (${doneItems.length}):*\\n` + doneItems.join('\\n') + '\\n\\n';\n}\n\nreport += `_Generated automatically every Monday at 9:00am_`;\n\nreturn [{ json: { summary: report, stats } }];\n"},"typeVersion":2},{"id":"cfe0c410-9be3-4f18-adcb-cce04b312527","name":"Last Week End","type":"n8n-nodes-base.dateTime","position":[992,1152],"parameters":{"options":{},"duration":7,"magnitude":"={{ $json.lastWeekStart }}","operation":"addToDate","outputFieldName":"lastWeekEnd"},"typeVersion":2},{"id":"fbb78b41-40af-4e8d-b231-375c38212d2e","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[736,1040],"parameters":{"width":400,"height":80,"content":"Dates can be set per your needs, so you can easily change this into a monthly report.\n"},"typeVersion":1},{"id":"bf3c1a06-47d8-4daf-b8f1-00a93c3aeabd","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[2064,1024],"parameters":{"height":96,"content":"Formats the message so it can be sent to the communication channel of your choice"},"typeVersion":1},{"id":"fda93213-48f8-4577-a8c8-e3bb1afe782d","name":"Send a message","type":"n8n-nodes-base.slack","position":[2336,1152],"webhookId":"7a34684f-6c04-4e01-b831-61bc06db1406","parameters":{"text":"={{ $json.summary }}","otherOptions":{}},"typeVersion":2.4},{"id":"4b5c9566-0aef-40e9-9eb5-95f749449850","name":"Or Manually Run","type":"n8n-nodes-base.manualTrigger","position":[544,1248],"parameters":{},"typeVersion":1},{"id":"f564a65a-bacb-48ec-839b-7bf02eaa8252","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[432,560],"parameters":{"color":6,"width":336,"height":416,"content":"## 📊 Keephub Weekly Task Report\n\nFetches all tasks for an org unit from the past week, \ngets their progress, and sends a formatted Slack summary.\n\n**Setup:**\n1. Add your Keephub Login credential\n2. Add your Keephub Bearer credential\n3. Set your orgunit ID in \"Get Tasks by Orgunit\"\n4. Set your Slack channel in the Slack node\n\nRuns automatically every Monday at 9:00am.\n"},"typeVersion":1},{"id":"2d4e741a-6313-46c5-93a0-5d7614341504","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[1168,1040],"parameters":{"color":4,"height":80,"content":"⚙️ Change `orgunitId` to your root org unit ID.\n"},"typeVersion":1}],"pinData":{},"connections":{"Merge":{"main":[[{"node":"Format for Message","type":"main","index":0}]]},"Get Progress":{"main":[[{"node":"Merge","type":"main","index":0}]]},"Last Week End":{"main":[[{"node":"Get Tasks by Orgunit","type":"main","index":0}]]},"Last Week Start":{"main":[[{"node":"Last Week End","type":"main","index":0}]]},"Or Manually Run":{"main":[[{"node":"Last Week Start","type":"main","index":0}]]},"Every Monday 9am":{"main":[[{"node":"Last Week Start","type":"main","index":0}]]},"Format for Message":{"main":[[{"node":"Send a message","type":"main","index":0}]]},"Get Tasks by Orgunit":{"main":[[{"node":"Extract Task Template IDs","type":"main","index":0}]]},"Extract Task Template IDs":{"main":[[{"node":"Merge","type":"main","index":1},{"node":"Get Progress","type":"main","index":0}]]}}},"lastUpdatedBy":29,"workflowInfo":{"nodeCount":14,"nodeTypes":{"n8n-nodes-base.code":{"count":2},"n8n-nodes-base.merge":{"count":1},"n8n-nodes-base.slack":{"count":1},"n8n-nodes-base.dateTime":{"count":2},"n8n-nodes-base.stickyNote":{"count":4},"n8n-nodes-keephub.keephub":{"count":2},"n8n-nodes-base.manualTrigger":{"count":1},"n8n-nodes-base.scheduleTrigger":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Niksa Perovic","username":"niksa90","bio":"Obsessed with product, automation, and everything AI. Jack of all trades, master of getting things done.","verified":true,"links":[""],"avatar":"https://gravatar.com/avatar/8116b70e0134b4ff5de5d9e1d87bd1f3ae7df875fb146d4c9e301a454fdceb5a?r=pg&d=retro&size=200"},"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":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":221,"icon":"fa:clock","name":"n8n-nodes-base.dateTime","codex":{"data":{"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/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"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datetime/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Date & Time","color":"#408000"},"iconData":{"icon":"clock","type":"icon"},"displayName":"Date & Time","typeVersion":2,"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"}]}],"categories":[{"id":46,"name":"Project Management"}],"image":[]}}