{"workflow":{"id":12656,"name":"Log farm machinery operations from a webhook into Google Sheets","views":7,"recentViews":0,"totalViews":7,"createdAt":"2026-01-12T10:59:03.035Z","description":"## TEMPLATE DESCRIPTION\n\nEliminate manual farm operations logging and gain real-time visibility into machinery performance, fuel consumption, and equipment breakdowns. \n\nThis webhook-based workflow automatically captures operational data from your web interface and organizes it across three structured Google Sheets—giving you audit-ready records without the 30-60 minutes of daily paperwork.\n\n![image.png](fileId:3909)\n![image.png](fileId:3910)\n\n## Who's it for\n\nFarm operations managers running 200-2000 acre operations who need enterprise-grade operational tracking without enterprise software costs. \n\nPerfect for teams struggling with incomplete manual logs, delayed maintenance alerts, or unclear fuel waste patterns.\n\n\n\n## How it works\n\nThe webhook receives JSON data from your web UI capturing operator details, timestamps, fuel usage, breakdown incidents, and field work completion. Data is automatically parsed and routed to three separate Google Sheets: daily operations log, fuel consumption tracking, and equipment maintenance records. Each entry is timestamped and validated for completeness.\n\n## ⚙️ How to set up\n\n📥 Import the workflow JSON into your n8n instance. \n \n🔗 Configure the webhook URL and add your Google Sheets credentials.  \n\n📊 Create three Google Sheets with the provided column headers (`main_logs`, `fuel`, `breakdowns`), then update the workflow with your Sheet IDs. \n \n🚀 Deploy the webhook and integrate the URL into your existing web form or data collection UI. \n \n⏱️ Setup takes less than 30 minutes.\n\n\n🔐 **Security note**: Store Google Sheets credentials securely using n8n's credential system. Never expose webhook URLs publicly without authentication.\n\n## 📋 Requirements\n\n- 🧩 Active n8n instance (cloud or self-hosted)  \n- 🟢 Google account with Sheets API access  \n- 📲 Web form or mobile app that can POST JSON data to a webhook URL  \n- 📊 Three Google Sheets for operations, fuel, and maintenance data  \n\n## 🛠️ How to customize the workflow\n\n🧩 Modify the JSON parsing nodes to match your specific data structure.  \n\n🚨 Add conditional routing for priority alerts, for example critical breakdowns trigger Slack notifications.  \n\n📦 Integrate additional sheets for inventory tracking or employee time logs.\n  \n📈 Add data validation rules or calculated columns in Google Sheets for automatic fuel efficiency metrics and maintenance forecasting.\n\n\n## 🚜 Want this working in your operation?\n\nThis template gives you the core engine.\nWhat most farms need is a version tuned to their machines, their operators, and their reporting requirements.\n\nIf you want this set up, customized, or fully implemented for your operation, I can:\n\nConnect this to your existing web or mobile capture system\n\nMap your machines, operators, and fields\n\nAdd automatic alerts for breakdowns, fuel abuse, or missed logs\n\nCreate clean, management-ready reports from the data\n\nMake sure it runs reliably day after day with no babysitting\n\nThis is built for real farms running real equipment, not demo data.\n\n📧 Email: vaughnai2023@gmail.com\n\n🔗 LinkedIn: https://www.linkedin.com/in/vaughnbotha/","workflow":{"meta":{"instanceId":"cd895a9f6c2651ad7fd857e15b6c33cb345eeb79c98c7027b52c0557880d7a7e","templateCredsSetupCompleted":true},"nodes":[{"id":"ff5e8a30-7c98-4a57-912d-d237d93e9b77","name":"Webhook Trigger","type":"n8n-nodes-base.webhook","notes":"Receives farm operations data from HTML form. Copy the production webhook URL and use it in your web form.","position":[-848,-384],"webhookId":"0294e3ee-b155-48ec-b5af-2804f85e1f65","parameters":{"path":"farm-operations-logger","options":{},"httpMethod":"POST","responseMode":"lastNode"},"typeVersion":2.1},{"id":"d4beaa47-e36f-4181-afe9-614c69cc6afb","name":"Capture Breakdowns","type":"n8n-nodes-base.googleSheets","notes":"Writes breakdown/downtime records to the 'breakdowns' sheet","position":[80,-352],"parameters":{"columns":{"value":{"id":"={{ $json.id }}","type":"={{ $json.type }}","notes":"={{ $json.breakdown.notes }}","end time":"={{ $json.endTime }}","start time":"={{ $json.startTime }}","total downtime":"={{ $json.totalDowntime }}"},"schema":[{"id":"id","type":"string","display":true,"required":false,"displayName":"id","defaultMatch":true,"canBeUsedToMatch":true},{"id":"type","type":"string","display":true,"required":false,"displayName":"type","defaultMatch":false,"canBeUsedToMatch":true},{"id":"start time","type":"string","display":true,"required":false,"displayName":"start time","defaultMatch":false,"canBeUsedToMatch":true},{"id":"end time","type":"string","display":true,"required":false,"displayName":"end time","defaultMatch":false,"canBeUsedToMatch":true},{"id":"total downtime","type":"string","display":true,"required":false,"displayName":"total downtime","defaultMatch":false,"canBeUsedToMatch":true},{"id":"notes","type":"string","display":true,"removed":false,"required":false,"displayName":"notes","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["id"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"name","value":"breakdowns"},"documentId":{"__rl":true,"mode":"id","value":"YOUR_SPREADSHEET_ID_HERE"}},"credentials":{"googleSheetsOAuth2Api":{"id":"sgJ2s1Lz5U4R9RTy","name":"Google Sheets account"}},"typeVersion":4.7},{"id":"8ff6382c-b471-4fbf-8339-e8c921f5f7a6","name":"Main Log Capture Node","type":"n8n-nodes-base.googleSheets","notes":"Writes complete operation record to the 'main_logs' sheet","position":[80,-128],"parameters":{"columns":{"value":{"id":"={{ $json.body.id }}","date":"={{ $json.body.date }}","field":"={{ $json.body.field }}","end time":"={{ $json.body.endTime }}","operator":"={{ $json.body.operator }}","machinery":"={{ $json.body.machinery }}","operation":"={{ $json.body.operation }}","timestamp":"={{ $json.body.timestamp }}","breakdowns":"={{ $json.body.breakdowns }}","start time":"={{ $json.body.startTime }}","supervisor":"={{ $json.body.supervisor }}","total hours":"={{ $json.body.totalHours }}","value/units":"={{ $json.body.operationOutput.value }} {{ $json.body.operationOutput.unit }}","fuel entries":"={{ $json.body.fuelEntries }}"},"schema":[{"id":"id","type":"string","display":true,"removed":false,"required":false,"displayName":"id","defaultMatch":true,"canBeUsedToMatch":true},{"id":"timestamp","type":"string","display":true,"removed":false,"required":false,"displayName":"timestamp","defaultMatch":false,"canBeUsedToMatch":true},{"id":"date","type":"string","display":true,"removed":false,"required":false,"displayName":"date","defaultMatch":false,"canBeUsedToMatch":true},{"id":"operator","type":"string","display":true,"removed":false,"required":false,"displayName":"operator","defaultMatch":false,"canBeUsedToMatch":true},{"id":"supervisor","type":"string","display":true,"removed":false,"required":false,"displayName":"supervisor","defaultMatch":false,"canBeUsedToMatch":true},{"id":"start time","type":"string","display":true,"removed":false,"required":false,"displayName":"start time","defaultMatch":false,"canBeUsedToMatch":true},{"id":"end time","type":"string","display":true,"removed":false,"required":false,"displayName":"end time","defaultMatch":false,"canBeUsedToMatch":true},{"id":"total hours","type":"string","display":true,"removed":false,"required":false,"displayName":"total hours","defaultMatch":false,"canBeUsedToMatch":true},{"id":"machinery","type":"string","display":true,"removed":false,"required":false,"displayName":"machinery","defaultMatch":false,"canBeUsedToMatch":true},{"id":"field","type":"string","display":true,"removed":false,"required":false,"displayName":"field","defaultMatch":false,"canBeUsedToMatch":true},{"id":"operation","type":"string","display":true,"removed":false,"required":false,"displayName":"operation","defaultMatch":false,"canBeUsedToMatch":true},{"id":"value/units","type":"string","display":true,"removed":false,"required":false,"displayName":"value/units","defaultMatch":false,"canBeUsedToMatch":true},{"id":"fuel entries","type":"string","display":true,"removed":false,"required":false,"displayName":"fuel entries","defaultMatch":false,"canBeUsedToMatch":true},{"id":"breakdowns","type":"string","display":true,"removed":false,"required":false,"displayName":"breakdowns","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["id"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"name","value":"main_logs"},"documentId":{"__rl":true,"mode":"id","value":"YOUR_SPREADSHEET_ID_HERE"}},"credentials":{"googleSheetsOAuth2Api":{"id":"sgJ2s1Lz5U4R9RTy","name":"Google Sheets account"}},"typeVersion":4.7},{"id":"429281d7-9104-4b5f-9e55-75edab9b0f69","name":"Fuel Capture Log","type":"n8n-nodes-base.googleSheets","notes":"Writes fuel consumption data to the 'fuel' sheet","position":[64,-576],"parameters":{"columns":{"value":{"id":"={{ $json.id }}","litre":"={{ $('Workflow Configuration').item.json.body.fuelEntries[0].litres }}","mach-end":"={{ $('Workflow Configuration').item.json.body.fuelEntries[0].machineryHoursEnd }}","supplier":"={{ $('Workflow Configuration').item.json.body.fuelEntries[0].supplier }}","attendant":"={{ $('Workflow Configuration').item.json.body.fuelEntries[0].attendant }}","mach-start":"={{ $('Workflow Configuration').item.json.body.fuelEntries[0].machineryHoursStart }}"},"schema":[{"id":"id","type":"string","display":true,"required":false,"displayName":"id","defaultMatch":true,"canBeUsedToMatch":true},{"id":"mach-start","type":"string","display":true,"removed":false,"required":false,"displayName":"mach-start","defaultMatch":false,"canBeUsedToMatch":true},{"id":"mach-end","type":"string","display":true,"removed":false,"required":false,"displayName":"mach-end","defaultMatch":false,"canBeUsedToMatch":true},{"id":"litre","type":"string","display":true,"removed":false,"required":false,"displayName":"litre","defaultMatch":false,"canBeUsedToMatch":true},{"id":"attendant","type":"string","display":true,"removed":false,"required":false,"displayName":"attendant","defaultMatch":false,"canBeUsedToMatch":true},{"id":"supplier","type":"string","display":true,"removed":false,"required":false,"displayName":"supplier","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["id"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"name","value":"fuel"},"documentId":{"__rl":true,"mode":"id","value":"YOUR_SPREADSHEET_ID_HERE"}},"credentials":{"googleSheetsOAuth2Api":{"id":"sgJ2s1Lz5U4R9RTy","name":"Google Sheets account"}},"typeVersion":4.7},{"id":"1593e048-49bb-43cd-a40d-22532aad6799","name":"Expand Fuel Entries","type":"n8n-nodes-base.code","notes":"Transforms fuel entries array into individual items for separate sheet rows","position":[-272,-576],"parameters":{"jsCode":"// Loop through fuelEntries array and create one item per fuel entry with the log ID\nconst items = [];\n\nfor (const item of $input.all()) {\n  const logId = item.json.body.id;\n  const fuelEntries = item.json.body.fuelEntries || [];\n  \n  for (const fuelEntry of fuelEntries) {\n    items.push({\n      json: {\n        id: logId,\n        machineryHours: fuelEntry.machineryHours,\n        litres: fuelEntry.litres,\n        attendant: fuelEntry.attendant\n      }\n    });\n  }\n}\n\nreturn items;"},"typeVersion":2},{"id":"2895c5b3-8746-44ae-a689-13de76e98428","name":"Expand Breakdowns","type":"n8n-nodes-base.code","notes":"Transforms breakdowns array into individual items for separate sheet rows","position":[-240,-352],"parameters":{"jsCode":"// Loop through breakdowns array and create one item per breakdown with the log ID\nconst items = [];\n\nfor (const item of $input.all()) {\n  const logId = item.json.body.id;\n  const breakdowns = item.json.body.breakdowns || [];\n  \n  for (const breakdown of breakdowns) {\n    items.push({\n      json: {\n        id: logId,\n        breakdown: breakdown,\n        type: breakdown.type,\n        startTime: breakdown.startTime,\n        endTime: breakdown.endTime,\n        totalDowntime: breakdown.totalDowntime\n      }\n    });\n  }\n}\n\nreturn items;"},"typeVersion":2},{"id":"8580fa54-9d40-49d7-9ef6-a40a211889ef","name":"Workflow Configuration","type":"n8n-nodes-base.set","notes":"IMPORTANT: Replace YOUR_SPREADSHEET_ID_HERE with your actual Google Sheets ID","position":[-592,-384],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"spreadsheetId","type":"string","value":"YOUR_SPREADSHEET_ID_HERE"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"1a5e1949-86e1-4a43-bbb3-7767e276694a","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-1552,-848],"parameters":{"width":544,"height":688,"content":"## OPERATOR-SPECIFIC FARM OPERATIONS LOGGER\n\nCaptures detailed farm machinery operations data via webhook and logs to three Google Sheets tabs: main operations, fuel consumption, and equipment breakdowns.\n\nSETUP CHECKLIST:\n□ Create Google Sheet with 3 tabs: main_logs, fuel, breakdowns\n□ Add column headers to each tab (see documentation)\n□ Import workflow into n8n\n□ Set up Google Sheets OAuth2 credentials\n□ Update spreadsheet ID in Workflow Configuration node\n□ Update Document field in all 3 Google Sheets nodes\n□ Test webhook with sample payload\n□ Activate workflow\n□ Update data collection app with Production URL\n\nWEBHOOK PATH: GET THIS FROM WEBHOOK TRIGGER\nMETHOD: POST\nCONTENT-TYPE: application/json"},"typeVersion":1},{"id":"913f580c-0727-4030-8ef4-3a441167c2e5","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-928,-848],"parameters":{"color":7,"height":624,"content":"## WEBHOOK TRIGGER\nReceives POST requests from data collection app\nPath: farm-operations-logger\nAccepts JSON payload with operation details\n→ Passes to Workflow Configuration"},"typeVersion":1},{"id":"563bf9f7-510b-4875-b2ae-e27a0c9eb869","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-656,-848],"parameters":{"color":7,"width":224,"height":624,"content":"## WORKFLOW CONFIGURATION\nCentral node that:\n- Stores spreadsheet ID for reference\n- Splits data flow to 3 branches:\n  1. Main log (direct)\n  2. Fuel entries (via expansion)\n  3. Breakdowns (via expansion)\n→ Update spreadsheetId value here!"},"typeVersion":1},{"id":"e4e692a0-dede-40e9-b847-25cc48f0828b","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-336,-848],"parameters":{"color":7,"height":256,"content":"## EXPAND FUEL ENTRIES\nCode node that loops through fuelEntries array\nCreates one item per fuel entry with log ID\nHandles multiple fuel fills per operation\n→ Each fuel entry becomes separate row"},"typeVersion":1},{"id":"733d329c-30a1-4597-8a4a-4937bc05871c","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[272,-592],"parameters":{"color":7,"width":400,"content":"## FUEL CAPTURE LOG\nWrites to \"fuel\" sheet tab\nColumns: id, mach-start, mach-end, litre, attendant, supplier\n⚠️ Update Document to your spreadsheet\n⚠️ Ensure \"fuel\" tab exists"},"typeVersion":1},{"id":"fb48e538-cd6c-4dac-88d4-b37998e47b34","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[288,-144],"parameters":{"color":7,"width":400,"height":224,"content":"## MAIN LOG CAPTURE NODE\nWrites to \"main_logs\" sheet tab\nCaptures primary operation data:\n- Operator, machinery, field, operation\n- Start/end times, total hours\n- Operation output (value/units)\n⚠️ Update Document to your spreadsheet\n⚠️ Ensure \"main_logs\" tab exists"},"typeVersion":1},{"id":"9fbc3803-56fd-4025-9680-dea97dde81d1","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[-448,-176],"parameters":{"color":7,"width":320,"height":208,"content":"## EXPAND BREAKDOWNS\nCode node that loops through breakdowns array\nCreates one item per breakdown with log ID\nIncludes: type, start/end times, downtime, notes\n→ Each breakdown becomes separate row"},"typeVersion":1},{"id":"77e1ba97-4211-43e9-b8d5-5a30893b03cd","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[272,-368],"parameters":{"color":7,"width":400,"content":"## CAPTURE BREAKDOWNS\nWrites to \"breakdowns\" sheet tab\nColumns: id, type, start time, end time, total downtime, notes\n⚠️ Update Document to your spreadsheet\n⚠️ Ensure \"breakdowns\" tab exists"},"typeVersion":1}],"pinData":{},"connections":{"Webhook Trigger":{"main":[[{"node":"Workflow Configuration","type":"main","index":0}]]},"Expand Breakdowns":{"main":[[{"node":"Capture Breakdowns","type":"main","index":0}]]},"Expand Fuel Entries":{"main":[[{"node":"Fuel Capture Log","type":"main","index":0}]]},"Workflow Configuration":{"main":[[{"node":"Main Log Capture Node","type":"main","index":0},{"node":"Expand Fuel Entries","type":"main","index":0},{"node":"Expand Breakdowns","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":15,"nodeTypes":{"n8n-nodes-base.set":{"count":1},"n8n-nodes-base.code":{"count":2},"n8n-nodes-base.webhook":{"count":1},"n8n-nodes-base.stickyNote":{"count":8},"n8n-nodes-base.googleSheets":{"count":3}}},"status":"published","readyToDemo":null,"user":{"name":"vaughn959","username":"vaughnai2023","bio":"I build n8n automations for farms and field teams, turning daily logs into clean dashboards, alerts, and reports. Practical workflows, simple UIs, and reliable data pipelines (Sheets, Supabase, WhatsApp, email). Book a call via my link.","verified":false,"links":["https://www.linkedin.com/in/vaughnbotha/"],"avatar":"https://gravatar.com/avatar/59af25d9ec9fc9d58ab4b9a4a0fcccf09d163d2dbb2bff2617f8127aeff368f3?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":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":47,"icon":"file:webhook.svg","name":"n8n-nodes-base.webhook","codex":{"data":{"alias":["HTTP","API","Build","WH"],"resources":{"generic":[{"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/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"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/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/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/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/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/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/creating-custom-incident-response-workflows-with-n8n/","label":"How to automate every step of an incident response workflow"},{"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/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-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"trigger\"]","defaults":{"name":"Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Webhook","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"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"}]}],"categories":[{"id":35,"name":"Document Extraction"}],"image":[{"id":3909,"url":"https://n8niostorageaccount.blob.core.windows.net/n8nio-strapi-blobs-prod/assets/image_e2fab3b5b3.png"},{"id":3910,"url":"https://n8niostorageaccount.blob.core.windows.net/n8nio-strapi-blobs-prod/assets/image_262f4e4cc6.png"}]}}