{"workflow":{"id":12852,"name":"Monitor company budgets with Bexio, Google Sheets and Gmail alerts","views":57,"recentViews":0,"totalViews":57,"createdAt":"2026-01-20T14:54:49.801Z","description":"**This n8n template allows you to automatically monitor your company's budget by comparing live Bexio accounting data against targets defined in Google Sheets, sending automated weekly email reports. It also exports your financial data from Bexio into a flexible spreadsheet environment.**\n\nFinancial overspending often goes unnoticed until it's too late. This workflow transforms reactive accounting into **proactive management** by automatically calculating monthly actuals and flagging budget overages in real-time, eliminating the need for manual spreadsheet updates.\n\n\n## Who’s it for\nThis workflow is built for Founders and CFOs who want to replace reactive accounting with proactive financial management. It is the ideal solution for leadership teams needing to eliminate manual data entry, synchronize live Bexio actuals against Google Sheet targets, and receive automated weekly email reports that proactively flag budget overages before they become critical issues.\n\n## How it works\nThe workflow automates the extraction and analysis of your Bexio accounting journal through several stages:\n\n**Data Extraction:** It uses a recursive pagination loop to fetch journal entries from the Bexio API in batches of 1,000 records.\n\n**Data Synchronization:** It utilizes the \"Append or Update\" operation in Google Sheets to ensure records stay current without creating duplicates.\n\n**Financial Analysis:** The system reads target thresholds from a \"Budgets\" sheet and aggregates costs per account by calculating the delta between Debits and Credits.\n\n**Automated Reporting:** A logic engine compares monthly actuals against budgets and generates a summary report sent via Gmail if thresholds are exceeded.\n\n## How to set up\n**Credentials:** Connect your Bexio (Bearer Token), Google Sheets (OAuth2), and Gmail accounts in their respective nodes.\n\n**Target Sheet:** In the \"Update Records\" node, select your specific Google Spreadsheet and target tab for the journal entries. Use this template to create your database - [Google Sheet Template](https://docs.google.com/spreadsheets/d/1ZnaXFqOhcrgMptM2K8k-W0VZTxgyL99_D569GiwTZZk/edit?usp=sharing)\n\n**Budget Configuration:** Clone the template spreadsheet and define your specific metrics and monthly budget limits in the \"Budgets\" sheet.\n\n**Date Filtering:** Open the \"Get Records\" node and adjust the from and to query parameters (currently set for the 2025 fiscal year) to match your reporting period.\n\n**Gmail:** Enter the recipient email address in the \"To\" field of the Gmail node.\n\n## Requirements\n\n**Bexio Account:** Must have API access enabled.\n\n**Google Workspace:** Access to Google Sheets for data storage and Gmail for sending reports.\n\n## How to customize the workflow\n**Budget:** You can set budgets for as many metrics as you want for every accounting period.\n\n**Sync Frequency:** The \"Schedule Trigger\" can be adjusted from its weekly default to daily or hourly for more frequent updates.\n\n**Notification Channels:** Swap the Gmail node for Slack or Microsoft Teams to receive report via different channels.\n\n**Rate Limiting:** If processing a very large journal, increase the \"Delay\" node duration to remain within Bexio’s API rate limits.\n\n**Pagination Reuse:** The pagination logic can be adapted to retrieve any other Bexio data limited by API batch sizes.","workflow":{"id":"ZBcrVGqCZTFn34Gjsryiw","meta":{"instanceId":"b025dd2ec37c0640cc010b561de856ffd1edf4518fd83218a1b9a5fb552811e8","templateCredsSetupCompleted":true},"name":"Proactive company budget controller Bexio and GoogleSheets","tags":[],"nodes":[{"id":"9d0bc3d2-3f08-4c12-a423-360f8d1d5b0e","name":"Set Offset","type":"n8n-nodes-base.set","position":[1232,160],"parameters":{"options":{},"assignments":{"assignments":[{"id":"21fa8709-a9bc-45d4-8dbb-ad9789367221","name":"offset","type":"number","value":"={{$json[\"new_offset\"] || 0}}"}]}},"executeOnce":true,"typeVersion":3.4},{"id":"7c5f7c4a-25d9-4098-9804-e767f60c1468","name":"Add Offset","type":"n8n-nodes-base.set","position":[2000,160],"parameters":{"options":{},"assignments":{"assignments":[{"id":"c2d5d63e-a2b0-4bad-a9fd-faa3eb65810f","name":"new_offset","type":"number","value":"={{ $('Set Offset').item.json.offset + $('Batch Size').item.json.batchSize}}"}]}},"executeOnce":true,"typeVersion":3.4},{"id":"bf4aa503-c994-4704-a073-8d8051392328","name":"Update Records","type":"n8n-nodes-base.googleSheets","position":[1664,160],"parameters":{"columns":{"value":{"ID":"={{ $json.id }}","Date":"={{ DateTime.fromISO($json.date).toFormat('yyyy-MM-dd') }}","Amount":"={{ $json.amount }}","Debit ID":"={{ $json.debit_account_id }}","Credit ID":"={{ $json.credit_account_id }}","Sync Date":"={{ DateTime.now().toFormat('yyyy-MM-dd') }}","Currency ID":"={{ $json.currency_id }}","Description":"={{ $json.description }}","Date Formated":"={{ DateTime.fromISO($json.date).toFormat('MM yyyy') }}","Year Formatted":"={{ DateTime.fromISO($json.date).toFormat('yyyy') }}","Conversion factor":"={{ $json.currency_factor }}","Amount in basic currency":"={{ $json.base_currency_amount }}"},"schema":[{"id":"ID","type":"string","display":true,"removed":false,"required":false,"displayName":"ID","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Date","type":"string","display":true,"required":false,"displayName":"Date","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Description","type":"string","display":true,"required":false,"displayName":"Description","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Debit ID","type":"string","display":true,"required":false,"displayName":"Debit ID","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Credit ID","type":"string","display":true,"required":false,"displayName":"Credit ID","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Amount","type":"string","display":true,"required":false,"displayName":"Amount","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Currency ID","type":"string","display":true,"required":false,"displayName":"Currency ID","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Conversion factor","type":"string","display":true,"required":false,"displayName":"Conversion factor","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Amount in basic currency","type":"string","display":true,"required":false,"displayName":"Amount in basic currency","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Year Formatted","type":"string","display":true,"required":false,"displayName":"Year Formatted","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Date Formated","type":"string","display":true,"required":false,"displayName":"Date Formated","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Sync Date","type":"string","display":true,"required":false,"displayName":"Sync Date","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["ID"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"appendOrUpdate","sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1ZnaXFqOhcrgMptM2K8k-W0VZTxgyL99_D569GiwTZZk/edit#gid=0","cachedResultName":"Journal"},"documentId":{"__rl":true,"mode":"list","value":"1ZnaXFqOhcrgMptM2K8k-W0VZTxgyL99_D569GiwTZZk","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1ZnaXFqOhcrgMptM2K8k-W0VZTxgyL99_D569GiwTZZk/edit?usp=drivesdk","cachedResultName":"Accounting journal (n8n template)"}},"credentials":{"googleSheetsOAuth2Api":{"id":"x3QMnmxwHebg9nCI","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"e1378ea8-6d9d-4133-89c8-84be927c0845","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[496,0],"parameters":{"color":7,"width":416,"height":464,"content":"## Initial settings"},"typeVersion":1},{"id":"37b9dee9-5c1b-412d-b1a7-c90ee4bd977d","name":"Delay","type":"n8n-nodes-base.wait","position":[1840,160],"webhookId":"5de54036-3c48-4d0a-805d-ad1544da1e14","parameters":{"amount":2},"executeOnce":true,"typeVersion":1.1},{"id":"1348be14-dcb8-45fe-a9f4-84eec811ee73","name":"Get Records","type":"n8n-nodes-base.httpRequest","position":[1456,160],"parameters":{"url":"=https://api.bexio.com/3.0/accounting/journal","options":{"response":{"response":{}}},"sendQuery":true,"sendHeaders":true,"authentication":"predefinedCredentialType","queryParameters":{"parameters":[{"name":"from","value":"2025-01-01"},{"name":"to","value":"2025-12-31"},{"name":"=limit","value":"=1000"},{"name":"=offset","value":"={{ $json.offset }}"}]},"headerParameters":{"parameters":[{"name":"Accept","value":"application/json"}]},"nodeCredentialType":"httpBearerAuth"},"credentials":{"httpBearerAuth":{"id":"7fCZckG1UAnjnmTi","name":"Bexio Auth QI 19 Jan 2026"}},"executeOnce":true,"typeVersion":4.2},{"id":"7ba55437-f07f-4532-ac7c-d090b6cfaf8d","name":"Batch Size","type":"n8n-nodes-base.set","position":[736,160],"parameters":{"options":{},"assignments":{"assignments":[{"id":"ebdf097d-9e7e-452b-9376-b5a796fd2239","name":"batchSize","type":"number","value":1000}]}},"typeVersion":3.4},{"id":"3ba9d765-3124-4c7f-9f34-686e60a45b1d","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[928,0],"parameters":{"color":7,"width":1440,"height":464,"content":"## Update accounting records Bexio to Google Sheets"},"typeVersion":1},{"id":"6ceb6bf9-822a-4b64-8c41-936d3f4a4388","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-208,0],"parameters":{"width":640,"height":1088,"content":"**This n8n template allows you to automatically monitor your company's budget by comparing live Bexio accounting data against targets defined in Google Sheets, sending automated weekly email reports.**\n\nFinancial overspending often goes unnoticed until it's too late. This workflow transforms reactive accounting into **proactive management** by automatically calculating monthly actuals and flagging budget overages in real-time, eliminating the need for manual spreadsheet updates.\n\n## How it works\n* Data Extraction: Uses a recursive pagination loop to fetch all journal entries from the Bexio API.\n* Financial Logic: Aggregates costs per account by merging and calculating the delta between Debits and Credits.\n* Budget Comparison: Reads your target thresholds from Google Sheets and compares them against calculated monthly actuals.\n* Automated Reporting: Generates a summary report and sends it via Gmail periodically.\n\n## Setup steps\n- [ ] Credentials: Connect your Bexio (Bearer Token), Google Sheets (OAuth2), and Gmail accounts.\n- [ ] Spreadsheet Config: Clone the template and set you metrics and monthly budgets in the \"Budgets\" sheet. The \"Accounts\" sheet contains sample records. The records will be populated from Bexio automatically. \n- [ ] Gmail: Enter an email address for reporting purposes in the field \"To\" inside Gmail node.\n\n## Customization tips\n* Switch the Gmail node for Slack or Microsoft Teams for instant push notifications.\n* Change schedule to bi-weekly or daily according to your needs. \n\n## Requirements\n* Bexio account with API access.\n* Google Sheets for budget storage.\n* Gmail account for sending reports."},"typeVersion":1},{"id":"b6ed1653-a432-4d09-9ede-51a50fb7c89f","name":"Read Budgets","type":"n8n-nodes-base.googleSheets","position":[656,880],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":1462771045,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1ZnaXFqOhcrgMptM2K8k-W0VZTxgyL99_D569GiwTZZk/edit#gid=1462771045","cachedResultName":"Budgets"},"documentId":{"__rl":true,"mode":"list","value":"1ZnaXFqOhcrgMptM2K8k-W0VZTxgyL99_D569GiwTZZk","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1ZnaXFqOhcrgMptM2K8k-W0VZTxgyL99_D569GiwTZZk/edit?usp=drivesdk","cachedResultName":"Accounting journal (n8n template)"}},"credentials":{"googleSheetsOAuth2Api":{"id":"x3QMnmxwHebg9nCI","name":"Google Sheets account"}},"typeVersion":4.7},{"id":"735a28d8-530d-4874-9df6-5b1a1ccf803e","name":"Get Debits","type":"n8n-nodes-base.googleSheets","position":[1200,1280],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"={{ $json['Account ID'] }}","lookupColumn":"Debit ID"}]},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1ZnaXFqOhcrgMptM2K8k-W0VZTxgyL99_D569GiwTZZk/edit#gid=0","cachedResultName":"Journal"},"documentId":{"__rl":true,"mode":"list","value":"1ZnaXFqOhcrgMptM2K8k-W0VZTxgyL99_D569GiwTZZk","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1ZnaXFqOhcrgMptM2K8k-W0VZTxgyL99_D569GiwTZZk/edit?usp=drivesdk","cachedResultName":"Accounting journal (n8n template)"},"combineFilters":"OR"},"credentials":{"googleSheetsOAuth2Api":{"id":"x3QMnmxwHebg9nCI","name":"Google Sheets account"}},"typeVersion":4.7},{"id":"14df45e7-63d2-49dc-a320-2b29e54a8b23","name":"Get Credits","type":"n8n-nodes-base.googleSheets","position":[1200,1456],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"={{ $json['Account ID'] }}","lookupColumn":"Credit ID"}]},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1ZnaXFqOhcrgMptM2K8k-W0VZTxgyL99_D569GiwTZZk/edit#gid=0","cachedResultName":"Journal"},"documentId":{"__rl":true,"mode":"list","value":"1ZnaXFqOhcrgMptM2K8k-W0VZTxgyL99_D569GiwTZZk","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1ZnaXFqOhcrgMptM2K8k-W0VZTxgyL99_D569GiwTZZk/edit?usp=drivesdk","cachedResultName":"Accounting journal (n8n template)"},"combineFilters":"OR"},"credentials":{"googleSheetsOAuth2Api":{"id":"x3QMnmxwHebg9nCI","name":"Google Sheets account"}},"typeVersion":4.7,"alwaysOutputData":true},{"id":"003f5228-4279-45bb-92fb-4dffcb17bee9","name":"Calculate Credits","type":"n8n-nodes-base.code","position":[1360,1280],"parameters":{"jsCode":"// detect year from first item or default to current year\nconst year = items[0]?.json[\"Date Formated\"]?.split(\" \")[1] || new Date().getFullYear();\n\n// initialize 12 months with 0\nconst totals = Object.fromEntries(\n  Array.from({ length: 12 }, (_, i) => [\n    `${String(i + 1).padStart(2, \"0\")} ${year}`, 0\n  ])\n);\n\n// sum amounts if input is not empty\nfor (const { json } of items || []) {\n  const key = json[\"Date Formated\"];\n  if (key && totals.hasOwnProperty(key)) {\n    totals[key] += Number(json[\"Amount in basic currency\"]) || 0;\n  }\n}\n\n// return 1 item with all months\nreturn [{ json: Object.fromEntries(\n  Object.entries(totals).map(([month, total]) => [month, +total.toFixed(2)])\n) }];\n"},"typeVersion":2},{"id":"216b8051-60c8-4b8a-8ccb-aa73d294d8d0","name":"Calculate debit","type":"n8n-nodes-base.code","position":[1360,1456],"parameters":{"jsCode":"// detect year from first item or default to current year\nconst year = items[0]?.json[\"Date Formated\"]?.split(\" \")[1] || new Date().getFullYear();\n\n// initialize 12 months with 0\nconst totals = Object.fromEntries(\n  Array.from({ length: 12 }, (_, i) => [\n    `${String(i + 1).padStart(2, \"0\")} ${year}`, 0\n  ])\n);\n\n// sum amounts if input is not empty\nfor (const { json } of items || []) {\n  const key = json[\"Date Formated\"];\n  if (key && totals.hasOwnProperty(key)) {\n    totals[key] += Number(json[\"Amount in basic currency\"]) || 0;\n  }\n}\n\n// return 1 item with all months\nreturn [{ json: Object.fromEntries(\n  Object.entries(totals).map(([month, total]) => [month, +total.toFixed(2)])\n) }];\n"},"typeVersion":2},{"id":"5ef10109-0ad8-41aa-aa24-3c5b4bd35af2","name":"Loop Over Items","type":"n8n-nodes-base.splitInBatches","position":[912,880],"parameters":{"options":{}},"typeVersion":3},{"id":"0b90b1b0-ff9c-4dec-bb75-7fb5fd2f2ec7","name":"Merge Credits/Debits","type":"n8n-nodes-base.merge","position":[1568,1296],"parameters":{},"typeVersion":3.2},{"id":"4d9c877c-8219-4527-b1e1-ccc9d99fb49c","name":"Calculate Costs","type":"n8n-nodes-base.code","position":[1712,1296],"parameters":{"jsCode":"const [credit, debit] = items.map(i => i.json);\n\nconst result = Object.fromEntries(\n  Object.keys(credit).map(month => [month, +(credit[month] - (debit[month] || 0)).toFixed(2)])\n);\n\nreturn [{ json: result }];\n"},"typeVersion":2},{"id":"a10b7090-106b-4368-87f6-d7c26e492bf9","name":"Add Budgets","type":"n8n-nodes-base.merge","position":[1904,912],"parameters":{},"typeVersion":3.2},{"id":"57d20597-f0b1-482e-95f8-6a9e1a9a519d","name":"Check Budgets","type":"n8n-nodes-base.code","position":[2064,912],"parameters":{"jsCode":"const actuals = items[1].json;\nconst budget = items[0].json;\n\n// dynamic key from Metric\nconst key = items[0].json.Metric || \"messages\";\n\n// generate messages if actual > budget\nlet result = Object.keys(budget)\n  .filter(month => actuals[month] > budget[month])\n  .map(month => `Budget exceeded in ${month} - budget: ${budget[month]}, actual: ${actuals[month]}`);\n\n// fallback if empty\nif (result.length === 0) {\n  result = [\"All costs within the budget\"];\n}\n\n// return single item with dynamic key\nreturn [{ json: { [key]: result } }];"},"typeVersion":2},{"id":"187500f9-204f-439f-a489-eb74f6ba5ba0","name":"Compose Report","type":"n8n-nodes-base.code","position":[1184,544],"parameters":{"jsCode":"const input = items.map(i => i.json);\n\nlet body = \"Budget Report:\\n\\n\";\n\nfor (const section of input) {\n  for (const [metric, messages] of Object.entries(section)) {\n    body += `${metric}:\\n`;\n    for (const msg of messages) {\n      body += `- ${msg}\\n`;\n    }\n    body += \"\\n\"; // add extra line between sections\n  }\n}\n\n// return single item with email body\nreturn [{ json: { email_body: body.trim() } }];\n"},"typeVersion":2},{"id":"1f8f1484-d9e0-409b-881d-edbb189246e8","name":"Send Report","type":"n8n-nodes-base.gmail","position":[1360,544],"webhookId":"4bb507d3-9c18-4f9d-a9b8-1b1c079d533c","parameters":{"message":"={{ $json.email_body }}","options":{"appendAttribution":false},"subject":"=Budget Report {{ $now.format(\"dd/LL/yyyy\") }}","emailType":"text"},"credentials":{"gmailOAuth2":{"id":"4tl6FXTkq0gsxhnN","name":"QuadIntegral 20 Jan 26"}},"typeVersion":2.2},{"id":"0d8d55ea-7c9c-4765-8c7f-ba70df930756","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[496,1200],"parameters":{"color":7,"width":1872,"height":464,"content":"## Calculate costs for each period based on accounting records"},"typeVersion":1},{"id":"6e98e233-a25c-498c-848a-954e335ce469","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[496,480],"parameters":{"color":7,"width":1872,"height":272,"content":"## Send final reports"},"typeVersion":1},{"id":"01b2caf9-8ec9-45a5-bf36-cb86834e71b9","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[496,784],"parameters":{"color":7,"width":1872,"height":384,"content":"## Compare budgets to actual costs"},"typeVersion":1},{"id":"a823f709-c1ef-45c6-a766-e7d829ddafc5","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[576,160],"parameters":{"rule":{"interval":[{"field":"weeks"}]}},"typeVersion":1.3},{"id":"87f7206e-cfc5-4c2e-b4f5-6d646b830b5f","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-208,1120],"parameters":{"color":5,"width":640,"height":544,"content":"## Example report\n\nBudget Report:\n\nIT costs:\n- Budget exceeded in 04 2025 - budget: 200, actual: 420\n\n\nRentals:\n- All costs within the budget\n\n\nYour custom metric\n- Report if budget exceeded any month"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"availableInMCP":false,"executionOrder":"v1"},"versionId":"d246032d-d458-4ca2-b58c-84135e775407","connections":{"Delay":{"main":[[{"node":"Add Offset","type":"main","index":0}]]},"Add Offset":{"main":[[{"node":"Set Offset","type":"main","index":0},{"node":"Read Budgets","type":"main","index":0}]]},"Batch Size":{"main":[[{"node":"Set Offset","type":"main","index":0}]]},"Get Debits":{"main":[[{"node":"Calculate Credits","type":"main","index":0}]]},"Set Offset":{"main":[[{"node":"Get Records","type":"main","index":0}]]},"Add Budgets":{"main":[[{"node":"Check Budgets","type":"main","index":0}]]},"Get Credits":{"main":[[{"node":"Calculate debit","type":"main","index":0}]]},"Get Records":{"main":[[{"node":"Update Records","type":"main","index":0}]]},"Read Budgets":{"main":[[{"node":"Loop Over Items","type":"main","index":0}]]},"Check Budgets":{"main":[[{"node":"Loop Over Items","type":"main","index":0}]]},"Compose Report":{"main":[[{"node":"Send Report","type":"main","index":0}]]},"Update Records":{"main":[[{"node":"Delay","type":"main","index":0}]]},"Calculate Costs":{"main":[[{"node":"Add Budgets","type":"main","index":1}]]},"Calculate debit":{"main":[[{"node":"Merge Credits/Debits","type":"main","index":1}]]},"Loop Over Items":{"main":[[{"node":"Compose Report","type":"main","index":0}],[{"node":"Add Budgets","type":"main","index":0},{"node":"Get Debits","type":"main","index":0},{"node":"Get Credits","type":"main","index":0}]]},"Schedule Trigger":{"main":[[{"node":"Batch Size","type":"main","index":0}]]},"Calculate Credits":{"main":[[{"node":"Merge Credits/Debits","type":"main","index":0}]]},"Merge Credits/Debits":{"main":[[{"node":"Calculate Costs","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":26,"nodeTypes":{"n8n-nodes-base.set":{"count":3},"n8n-nodes-base.code":{"count":5},"n8n-nodes-base.wait":{"count":1},"n8n-nodes-base.gmail":{"count":1},"n8n-nodes-base.merge":{"count":2},"n8n-nodes-base.stickyNote":{"count":7},"n8n-nodes-base.httpRequest":{"count":1},"n8n-nodes-base.googleSheets":{"count":4},"n8n-nodes-base.splitInBatches":{"count":1},"n8n-nodes-base.scheduleTrigger":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Kamil Ostrowski","username":"ostkam","bio":"Helping founders scale revenue & cut costs with AI | Founder @ QuadIntegral | Ex-Robotics Engineer","verified":false,"links":["https://www.linkedin.com/in/ostkam/"],"avatar":"https://gravatar.com/avatar/fdfeb3ec40f7d141fe319799f258eebacc64b765881fad35f08b6ca473e3edeb?r=pg&d=retro&size=200"},"nodes":[{"id":18,"icon":"file:googleSheets.svg","name":"n8n-nodes-base.googleSheets","codex":{"data":{"alias":["CSV","Sheet","Spreadsheet","GS"],"resources":{"generic":[{"url":"https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/","icon":"❤️","label":"Love at first sight: Ricardo’s n8n journey"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/","icon":"⏲","label":"Creating triggers for n8n workflows using polling"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/","icon":"🍔","label":"How Honest Burgers Use Automation to Save $100k per year"},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Data & Storage","Productivity"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\",\"output\"]","defaults":{"name":"Google Sheets"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="},"displayName":"Google Sheets","typeVersion":5,"nodeCategories":[{"id":3,"name":"Data & Storage"},{"id":4,"name":"Productivity"}]},{"id":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":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":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":39,"icon":"fa:sync","name":"n8n-nodes-base.splitInBatches","codex":{"data":{"alias":["Loop","Concatenate","Batch","Split","Split In Batches"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Loop Over Items","color":"#007755"},"iconData":{"icon":"sync","type":"icon"},"displayName":"Loop Over Items (Split in Batches)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":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":514,"icon":"fa:pause-circle","name":"n8n-nodes-base.wait","codex":{"data":{"alias":["pause","sleep","delay","timeout"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.wait/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Wait","color":"#804050"},"iconData":{"icon":"pause-circle","type":"icon"},"displayName":"Wait","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":839,"icon":"fa:clock","name":"n8n-nodes-base.scheduleTrigger","codex":{"data":{"alias":["Time","Scheduler","Polling","Cron","Interval"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\",\"schedule\"]","defaults":{"name":"Schedule Trigger","color":"#31C49F"},"iconData":{"icon":"clock","type":"icon"},"displayName":"Schedule Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":35,"name":"Document Extraction"},{"id":49,"name":"AI Summarization"}],"image":[]}}