{"workflow":{"id":13703,"name":"Register users and authenticate with magic links using Google Sheets","views":16,"recentViews":0,"totalViews":16,"createdAt":"2026-02-25T11:52:10.585Z","description":"This workflow implements a lightweight authentication system for n8n web portals using Google Sheets as a simple user and session store. It supports email-based registration, username and password login, one-click magic link authentication, and cookie-based session management.\n\nHow it works\n1. Users register with an email address through a form.\n2. The workflow generates a password and a one-time authentication token.\n3. User credentials and token are stored in Google Sheets.\n4. An email is sent with login credentials and a magic link.\n5. Users can log in with username and password or click the magic link.\n6. The /auth endpoint validates the token, creates a session id (sid), sets it as an HttpOnly cookie, and invalidates the token.\n7. The /profile endpoint reads the sid cookie, verifies the session in Google Sheets, and displays a protected profile page.\n\nSet up steps\n- Create a Google Sheet with columns: username, password, role, token, sid.\n- Replace YOUR_SPREADSHEET_ID with your Google Sheet ID in all Google Sheets nodes.\n- Replace YOUR_DOMAIN with your n8n instance domain in redirect URLs and email links.\n- Configure Gmail or SMTP credentials in the email node.\n- Ensure your n8n instance is served over HTTPS so Secure cookies function correctly.\n\nThis template is suitable for small internal portals, admin dashboards, or proof-of-concept authentication systems built entirely within n8n.","workflow":{"id":"oYwnHDD0m2EAdXpi","meta":{"instanceId":"5b95386bd025dc78db5e606adcc8120e3c7a529e34835d8f928e7a51e0a37a58"},"name":"Register users and authenticate with magic links using Google Sheets","tags":[],"nodes":[{"id":"dcaa8a9d-abdd-41a8-a359-868318d7f661","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[160,608],"parameters":{"color":7,"width":1904,"height":384,"content":"## 1. Login\nValidate username and password against Google Sheets, then reuse or issue a new token and redirect to the auth endpoint."},"typeVersion":1},{"id":"44324518-59de-4068-b49d-da5b9cabcf66","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[160,224],"parameters":{"color":7,"width":1232,"height":288,"content":"## 0. Register\nCollect an email address via form, generate credentials and a one-time token, save the user to Google Sheets, and send an onboarding email with the login link."},"typeVersion":1},{"id":"2472b7c4-cd6e-4194-8d12-59c4249ea7f3","name":"Append or update row in sheet","type":"n8n-nodes-base.googleSheets","position":[688,320],"parameters":{"columns":{"value":{"role":"Property Manager","token":"YOUR_CREDENTIAL_HERE","password":"YOUR_CREDENTIAL_HERE","username":"={{ $json.email }}"},"schema":[{"id":"username","type":"string","display":true,"removed":false,"required":false,"displayName":"username","defaultMatch":false,"canBeUsedToMatch":true},{"id":"role","type":"string","display":true,"required":false,"displayName":"role","defaultMatch":false,"canBeUsedToMatch":true},{"id":"password","type":"string","display":true,"required":false,"displayName":"password","defaultMatch":false,"canBeUsedToMatch":true},{"id":"token","type":"string","display":true,"required":false,"displayName":"token","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["username"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"appendOrUpdate","sheetName":{"__rl":true,"mode":"name","value":"Sheet2"},"documentId":{"__rl":true,"mode":"url","value":"https://docs.google.com/spreadsheets/d/YOUR_SPREADSHEET_ID"}},"typeVersion":4.7},{"id":"d7f38863-74ee-4bb9-bb4d-2fd445594eea","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[160,1072],"parameters":{"color":7,"width":1696,"height":400,"content":"## 2. Auth\nValidate the one-time token via Google Sheets, generate a session id (sid), set an HttpOnly cookie, clear the token, and redirect to the profile page."},"typeVersion":1},{"id":"891d65a6-0b6c-474d-b029-d4702c8e4174","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[160,1552],"parameters":{"color":7,"width":1424,"height":416,"content":"## 3. Profile\nRead the sid cookie, look up the active session in Google Sheets, and render a profile page — or redirect to login if the session is invalid."},"typeVersion":1},{"id":"fee598fe-64d8-469e-be7d-745bd2be40e4","name":"Prepare sid","type":"n8n-nodes-base.code","position":[1248,1088],"parameters":{"jsCode":"function makeSid(len = 48) {\n  const alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\";\n  let out = \"\";\n  // Mix time + random to reduce collisions\n  let seed = Date.now().toString(36) + \"-\" + Math.random().toString(36).slice(2);\n\n  out += seed.replace(/[^a-z0-9-]/gi, \"\").slice(0, 12);\n\n  while (out.length < len) {\n    out += alphabet[Math.floor(Math.random() * alphabet.length)];\n  }\n  return out.slice(0, len);\n}\n\nconst sid = makeSid(64);\n\nreturn { json: { sid } };\n"},"typeVersion":2},{"id":"f8747e29-893d-4e5d-916c-bb56975eb881","name":"Generate token","type":"n8n-nodes-base.code","position":[1328,816],"parameters":{"mode":"runOnceForEachItem","jsCode":"function makeToken(len = 32) {\n  let out = '';\n  while (out.length < len) {\n    out += Math.random().toString(36).slice(2); // Strip the leading \"0.\"\n  }\n  return out.slice(0, len);\n}\nconst token = makeToken()\nreturn {token};"},"typeVersion":2},{"id":"fd48786d-6e97-4361-bce0-40dc80596ba2","name":"If has token in DB","type":"n8n-nodes-base.if","position":[976,640],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"df0d0deb-4db8-4ef7-9bd0-c79ab6fb4f35","operator":{"type":"string","operation":"notEmpty","singleValue":true},"leftValue":"={{ $('Check username/password').item.json.token }}","rightValue":""}]}},"typeVersion":2.2},{"id":"43b3e0a0-c749-4b08-8cc1-0e84fe357bed","name":"If has token","type":"n8n-nodes-base.if","position":[464,1200],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"51cff10a-dac2-4480-a177-3b6166e4fbdf","operator":{"type":"string","operation":"notEmpty","singleValue":true},"leftValue":"={{ $('Auth').item.json.query.token }}","rightValue":""}]}},"typeVersion":2.2},{"id":"18b1b20d-06cb-44c5-b295-2966ff15c84f","name":"Search by token","type":"n8n-nodes-base.googleSheets","position":[736,1184],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"={{ $('Auth').item.json.query.token || '' }}","lookupColumn":"token"}]},"sheetName":{"__rl":true,"mode":"name","value":"Sheet2"},"documentId":{"__rl":true,"mode":"url","value":"https://docs.google.com/spreadsheets/d/YOUR_SPREADSHEET_ID"}},"typeVersion":4.7,"alwaysOutputData":true},{"id":"dc27c8ff-75d6-4448-afb2-512d21cb08bf","name":"On form register","type":"n8n-nodes-base.formTrigger","position":[224,320],"webhookId":"eff757ba-8869-4106-b386-8c3b21baa912","parameters":{"options":{"path":"register"},"formTitle":"Register with your email","formFields":{"values":[{"fieldLabel":"Email","requiredField":true}]},"formDescription":"Password will be sent to your email"},"typeVersion":2.2},{"id":"135c6108-45ec-45e6-b1e2-317e40a9004f","name":"Create password and token","type":"n8n-nodes-base.code","position":[448,320],"parameters":{"mode":"runOnceForEachItem","jsCode":"function generatePassword(length = 12) {\n  const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\n  let out = '';\n  for (let i = 0; i < length; i++) {\n    const idx = Math.floor(Math.random() * chars.length);\n    out += chars[idx];\n  }\n  return out;\n}\nfunction makeToken(len = 32) {\n  let out = '';\n  while (out.length < len) {\n    out += Math.random().toString(36).slice(2); // Strip the leading \"0.\"\n  }\n  return out.slice(0, len);\n}\nconst email = $json.Email\nconst password = generatePassword()\nconst token = makeToken()\nreturn {email, password, token};"},"typeVersion":2},{"id":"fec2646b-dd15-4e8c-ad07-9fa7de065c9a","name":"Send username/password","type":"n8n-nodes-base.gmail","position":[928,320],"webhookId":"f66d080e-d94a-4244-99aa-fc2ebcbbece3","parameters":{"sendTo":"={{ $('Create password and token').item.json.email }}","message":"=Link to login: https://YOUR_DOMAIN/webhook/auth?token={{ $('Create password and token').item.json.token }}\n<br/>\nUsername: {{ $('Create password and token').item.json.email }}\n<br/>\nPassword: {{ $('Create password and token').item.json.password }}","options":{},"subject":"=Your login credentials"},"typeVersion":2.1},{"id":"f3241140-939d-4871-8bf3-25dc9c69b653","name":"Notice register success","type":"n8n-nodes-base.form","position":[1184,320],"webhookId":"9a192624-7617-44d3-a3c2-80e2c1839422","parameters":{"options":{},"operation":"completion","completionTitle":"Registration successful","completionMessage":"=<p><strong>✅ Please check email {{ $('Create password and token').item.json.email }} to get your login credentials</strong></p>\n<p>\n  After that, you can login here:<br>\n  <a href=\"https://YOUR_DOMAIN/form/login\" target=\"_blank\" rel=\"noopener noreferrer\">\n    https://YOUR_DOMAIN/form/login\n  </a>\n</p>"},"typeVersion":1},{"id":"3da0b92c-edad-43e2-bcf1-e7bca316d7e9","name":"On form login","type":"n8n-nodes-base.formTrigger","position":[224,736],"webhookId":"f738ecda-fe2c-4892-8fd6-382ec06f45fd","parameters":{"options":{"path":"login"},"formTitle":"Login","formFields":{"values":[{"fieldLabel":"username","requiredField":true},{"fieldType":"password","fieldLabel":"password","requiredField":true}]}},"typeVersion":2.2},{"id":"caceffd3-862e-4ffc-817e-ed1300546caa","name":"Check username/password","type":"n8n-nodes-base.googleSheets","position":[480,736],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"={{ $json.username }}","lookupColumn":"username"},{"lookupValue":"={{ $json.password }}","lookupColumn":"password"}]},"sheetName":{"__rl":true,"mode":"name","value":"Sheet2"},"documentId":{"__rl":true,"mode":"url","value":"https://docs.google.com/spreadsheets/d/YOUR_SPREADSHEET_ID"}},"typeVersion":4.7,"alwaysOutputData":true},{"id":"91c227fd-ecbb-4d9f-a608-4606453a0e93","name":"If login success","type":"n8n-nodes-base.if","position":[720,736],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"455881ad-941f-4257-9427-1e48e7bc2974","operator":{"type":"object","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json }}","rightValue":""}]}},"typeVersion":2.2},{"id":"cedd4efe-c0e3-447b-a368-f4da51b0e004","name":"Redirect to login form","type":"n8n-nodes-base.form","position":[992,816],"webhookId":"9a192624-7617-44d3-a3c2-80e2c1839422","parameters":{"options":{},"operation":"completion","redirectUrl":"=https://YOUR_DOMAIN/form/login","respondWith":"redirect"},"typeVersion":1},{"id":"6c2905c0-67d1-4c29-8ee5-3676d6ab1255","name":"Redirect to auth url","type":"n8n-nodes-base.form","position":[1312,624],"webhookId":"9a192624-7617-44d3-a3c2-80e2c1839422","parameters":{"options":{},"operation":"completion","redirectUrl":"=https://YOUR_DOMAIN/webhook/auth?token={{ $json.token }}","respondWith":"redirect"},"typeVersion":1},{"id":"52426a88-2b8f-4839-b608-8c28e8cef5b1","name":"Add token to DB","type":"n8n-nodes-base.googleSheets","position":[1568,816],"parameters":{"columns":{"value":{"token":"YOUR_CREDENTIAL_HERE","username":"={{ $('Check username/password').item.json.username }}"},"schema":[{"id":"username","type":"string","display":true,"removed":false,"required":false,"displayName":"username","defaultMatch":false,"canBeUsedToMatch":true},{"id":"role","type":"string","display":true,"removed":true,"required":false,"displayName":"role","defaultMatch":false,"canBeUsedToMatch":true},{"id":"password","type":"string","display":true,"removed":true,"required":false,"displayName":"password","defaultMatch":false,"canBeUsedToMatch":true},{"id":"token","type":"string","display":true,"required":false,"displayName":"token","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["username"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"appendOrUpdate","sheetName":{"__rl":true,"mode":"name","value":"Sheet2"},"documentId":{"__rl":true,"mode":"url","value":"https://docs.google.com/spreadsheets/d/YOUR_SPREADSHEET_ID"}},"typeVersion":4.7},{"id":"1a3c065f-b882-4088-9c34-5ebbb4fb787a","name":"Redirect to auth with new token","type":"n8n-nodes-base.form","position":[1840,816],"webhookId":"9a192624-7617-44d3-a3c2-80e2c1839422","parameters":{"options":{},"operation":"completion","redirectUrl":"=https://YOUR_DOMAIN/webhook/auth?token={{ $('Generate token').item.json.token }}","respondWith":"redirect"},"typeVersion":1},{"id":"b4e2aebf-3f52-4234-ae86-f7c29f2a226d","name":"Auth","type":"n8n-nodes-base.webhook","position":[208,1200],"webhookId":"6f7a23ce-b823-4dcb-af08-c7e91114292b","parameters":{"path":"auth","options":{},"responseMode":"responseNode"},"typeVersion":2.1},{"id":"340dcc3d-797c-44ca-a5ab-830687fbfffa","name":"Invalid token","type":"n8n-nodes-base.respondToWebhook","position":[736,1344],"parameters":{"options":{},"respondWith":"text","responseBody":"Invalid token"},"typeVersion":1.4},{"id":"6119d68b-76d0-40ce-8ac1-df2253ca1a81","name":"If token valid","type":"n8n-nodes-base.if","position":[976,1184],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"a29fd91f-24e3-4302-9735-25419166511b","operator":{"type":"string","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json.username }}","rightValue":""}]}},"executeOnce":true,"typeVersion":2.2},{"id":"d3588bf0-be76-4e85-9ac4-ce11de129b25","name":"Redirect to login form1","type":"n8n-nodes-base.respondToWebhook","position":[1248,1280],"parameters":{"options":{},"redirectURL":"={{ 'https://' + $('Auth').item.json.headers.host }}/form/login","respondWith":"redirect"},"typeVersion":1.4},{"id":"4d02d506-b001-45b8-afab-32ac76d29896","name":"Update sid","type":"n8n-nodes-base.googleSheets","position":[1600,1088],"parameters":{"columns":{"value":{"sid":"={{ $json.sid }}","token":"","username":"={{ $('Search by token').item.json.username }}"},"schema":[{"id":"username","type":"string","display":true,"removed":false,"required":false,"displayName":"username","defaultMatch":false,"canBeUsedToMatch":true},{"id":"role","type":"string","display":true,"removed":true,"required":false,"displayName":"role","defaultMatch":false,"canBeUsedToMatch":true},{"id":"password","type":"string","display":true,"removed":true,"required":false,"displayName":"password","defaultMatch":false,"canBeUsedToMatch":true},{"id":"token","type":"string","display":true,"removed":false,"required":false,"displayName":"token","defaultMatch":false,"canBeUsedToMatch":true},{"id":"sid","type":"string","display":true,"removed":false,"required":false,"displayName":"sid","defaultMatch":false,"canBeUsedToMatch":true},{"id":"row_number","type":"number","display":true,"removed":true,"readOnly":true,"required":false,"displayName":"row_number","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["username"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"name","value":"Sheet2"},"documentId":{"__rl":true,"mode":"url","value":"https://docs.google.com/spreadsheets/d/YOUR_SPREADSHEET_ID"}},"typeVersion":4.7},{"id":"0960c383-12b3-4176-8501-3b85d9453256","name":"Redirect to profile and set cookies","type":"n8n-nodes-base.respondToWebhook","position":[1600,1280],"parameters":{"options":{"responseCode":302,"responseHeaders":{"entries":[{"name":"Set-Cookie","value":"=sid={{$json.sid}}; Path=/; HttpOnly; Secure; SameSite=Lax; Max-Age=604800"},{"name":"Location","value":"/webhook/profile"}]}},"respondWith":"text","responseBody":"={{ $json.sid }}"},"typeVersion":1.4},{"id":"ed4908f3-50f0-4150-adbc-ca5b706a94e3","name":"Profile","type":"n8n-nodes-base.webhook","position":[224,1712],"webhookId":"6f7a23ce-b823-4dcb-af08-c7e91114292b","parameters":{"path":"profile","options":{},"responseMode":"responseNode"},"typeVersion":2.1},{"id":"2d514f17-01f8-4410-a759-50289488502f","name":"Check sid cookies header","type":"n8n-nodes-base.code","position":[448,1712],"parameters":{"mode":"runOnceForEachItem","jsCode":"function getCookie(headers, name) {\n  const raw = (headers.cookie || headers.Cookie || \"\");\n  if (!raw) return null;\n\n  const parts = raw.split(\";\").map(s => s.trim());\n  for (const p of parts) {\n    const eq = p.indexOf(\"=\");\n    if (eq === -1) continue;\n    const k = p.slice(0, eq).trim();\n    const v = p.slice(eq + 1).trim();\n    if (k === name) return decodeURIComponent(v);\n  }\n  return null;\n}\n\nconst headers = $json.headers || {};\nconst sid = getCookie(headers, \"sid\");\n\nreturn {\n  json: {\n    sid,\n    hasCookieHeader: !!(headers.cookie || headers.Cookie),\n  }\n};\n"},"typeVersion":2},{"id":"9d062264-f2c0-4659-b68f-714b03389ac4","name":"Search sid","type":"n8n-nodes-base.googleSheets","position":[672,1712],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"={{ $json.sid || '' }}","lookupColumn":"sid"}]},"sheetName":{"__rl":true,"mode":"name","value":"Sheet2"},"documentId":{"__rl":true,"mode":"url","value":"https://docs.google.com/spreadsheets/d/YOUR_SPREADSHEET_ID"}},"typeVersion":4.7,"alwaysOutputData":true},{"id":"d7dd2d42-a6bf-4adb-9571-1736cdb11703","name":"If has data with sid","type":"n8n-nodes-base.if","position":[880,1712],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"a29fd91f-24e3-4302-9735-25419166511b","operator":{"type":"string","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json.username }}","rightValue":""}]}},"executeOnce":true,"typeVersion":2.2},{"id":"89d72c2d-0f9a-4e63-a1e0-7245cdafad39","name":"Redirect to login","type":"n8n-nodes-base.respondToWebhook","position":[1168,1808],"parameters":{"options":{},"redirectURL":"={{ 'https://' + $('Profile').item.json.headers.host }}/form/login","respondWith":"redirect"},"typeVersion":1.4},{"id":"e13952a5-dc41-4429-a0ba-bb918e18e41f","name":"Prepare html","type":"n8n-nodes-base.code","position":[1168,1568],"parameters":{"jsCode":"const html = `Hello ${$input.first().json.username}`;\n\nreturn { json: { html } };\n"},"typeVersion":2},{"id":"bbb5e14a-e5f1-4eff-acb0-e02203922a70","name":"Show profile page","type":"n8n-nodes-base.respondToWebhook","position":[1392,1568],"parameters":{"options":{},"respondWith":"text","responseBody":"={{ $json.html }}"},"typeVersion":1.4},{"id":"9496073d-aaa6-4d65-a2d5-a4ee7cd3c85c","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-896,576],"parameters":{"width":880,"height":720,"content":"## Overview\nThis workflow provides a lightweight authentication flow for n8n web portals using Google Sheets as a simple user/session store and email delivery for onboarding. It supports register, username/password login, one-click magic link auth, and a cookie-based profile page.\n\n### How it works\n1. User registers with an email address via a form\n2. n8n generates a username, password, and a one-time auth token\n3. User data is stored in Google Sheets\n4. n8n sends an email containing credentials + a one-click login link (`/auth?token=...`)\n5. User can log in with username/password or click the magic link\n6. `/auth` validates the token, creates a session id (sid), sets it as an HttpOnly cookie, and invalidates the token\n7. `/profile` reads the sid cookie, validates the session in Google Sheets, and displays user info to confirm login\n\n### Setup\n- Configure Gmail credentials in the Send email node\n- Create a Google Sheet with columns: username, password, role, token, sid\n- Add your Google Sheets URL (replace YOUR_SPREADSHEET_ID)\n- Replace YOUR_DOMAIN with your n8n instance domain in all nodes\n- Ensure your n8n instance is served over HTTPS so Secure cookies work\n\n### Customization\n- Adjust token expiry (e.g., 10-15 minutes) and one-time use behavior\n- Change session cookie settings (name, Max-Age, SameSite)\n- Customize the registration email content\n- Replace the Profile HTML with your own portal UI\n- Add a /logout endpoint to revoke sessions\n- Add rate-limiting at reverse proxy (Nginx/Traefik/Cloudflare)\n"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"b1b52d4f-9d40-40ce-b044-44d951a1bfb7","connections":{"Auth":{"main":[[{"node":"If has token","type":"main","index":0}]]},"Profile":{"main":[[{"node":"Check sid cookies header","type":"main","index":0}]]},"Search sid":{"main":[[{"node":"If has data with sid","type":"main","index":0}]]},"Prepare sid":{"main":[[{"node":"Redirect to profile and set cookies","type":"main","index":0},{"node":"Update sid","type":"main","index":0}]]},"If has token":{"main":[[{"node":"Search by token","type":"main","index":0}],[{"node":"Invalid token","type":"main","index":0}]]},"Prepare html":{"main":[[{"node":"Show profile page","type":"main","index":0}]]},"On form login":{"main":[[{"node":"Check username/password","type":"main","index":0}]]},"Generate token":{"main":[[{"node":"Add token to DB","type":"main","index":0}]]},"If token valid":{"main":[[{"node":"Prepare sid","type":"main","index":0}],[{"node":"Redirect to login form1","type":"main","index":0}]]},"Add token to DB":{"main":[[{"node":"Redirect to auth with new token","type":"main","index":0}]]},"Search by token":{"main":[[{"node":"If token valid","type":"main","index":0}]]},"If login success":{"main":[[{"node":"If has token in DB","type":"main","index":0}],[{"node":"Redirect to login form","type":"main","index":0}]]},"On form register":{"main":[[{"node":"Create password and token","type":"main","index":0}]]},"If has token in DB":{"main":[[{"node":"Redirect to auth url","type":"main","index":0}],[{"node":"Generate token","type":"main","index":0}]]},"If has data with sid":{"main":[[{"node":"Prepare html","type":"main","index":0}],[{"node":"Redirect to login","type":"main","index":0}]]},"Send username/password":{"main":[[{"node":"Notice register success","type":"main","index":0}]]},"Check username/password":{"main":[[{"node":"If login success","type":"main","index":0}]]},"Check sid cookies header":{"main":[[{"node":"Search sid","type":"main","index":0}]]},"Create password and token":{"main":[[{"node":"Append or update row in sheet","type":"main","index":0}]]},"Append or update row in sheet":{"main":[[{"node":"Send username/password","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":35,"nodeTypes":{"n8n-nodes-base.if":{"count":5},"n8n-nodes-base.code":{"count":5},"n8n-nodes-base.form":{"count":4},"n8n-nodes-base.gmail":{"count":1},"n8n-nodes-base.webhook":{"count":2},"n8n-nodes-base.stickyNote":{"count":5},"n8n-nodes-base.formTrigger":{"count":2},"n8n-nodes-base.googleSheets":{"count":6},"n8n-nodes-base.respondToWebhook":{"count":5}}},"status":"published","readyToDemo":null,"user":{"name":"ICTS Automation","username":"ictsautomation","bio":"ICTS Automation provides business process automation for SMEs, helping companies reduce manual work, minimize errors, and boost productivity. We design and deploy workflow automation solutions using tools like n8n, Microsoft Power Automate, and custom AI bots that fit your existing systems.\n\nOur goal is to help small and medium businesses simplify operations, save time, and focus on growth instead of repetitive tasks.","verified":false,"links":["https://automation.icts.io/"],"avatar":"https://gravatar.com/avatar/ee0c4df36cdcdfe5cfb207f50e6bdcbbe0b4ad76595e1586e0fe54629dd8dde3?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":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":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":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":535,"icon":"file:webhook.svg","name":"n8n-nodes-base.respondToWebhook","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.respondtowebhook/"}]},"categories":["Core Nodes","Utility"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"transform\"]","defaults":{"name":"Respond to Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Respond to Webhook","typeVersion":2,"nodeCategories":[{"id":7,"name":"Utility"},{"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":1225,"icon":"file:form.svg","name":"n8n-nodes-base.formTrigger","codex":{"data":{"alias":["table","submit","post"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.formtrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Other Trigger Nodes"]}}},"group":"[\"trigger\"]","defaults":{"name":"On form submission"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NiIgaGVpZ2h0PSI0MCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwQjdCQyIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzQuOTc4IDM3LjczMmExLjU2IDEuNTYgMCAwIDEtMS41NjIgMS41NjNINi4yNmExLjU2IDEuNTYgMCAwIDEtMS41NjMtMS41NjNWOS42MDdjMC0uNDA1LjE1Ny0uNzk0LjQzOC0xLjA4Nmw2LjMwNC02LjUzMXY1LjM0NEg4LjIxM2ExLjE3MiAxLjE3MiAwIDEgMCAwIDIuMzQzaDQuNDNhMS4xNyAxLjE3IDAgMCAwIDEuMTcxLTEuMTcxVi4yMzJoMTkuNjAyYTEuNTYgMS41NiAwIDAgMSAxLjU2MiAxLjU2M3YxMC4zMjdsLTIuODYgMi44Ni04LjI1MiA4LjI3NmE0MTMuMDA2IDQxMy4wMDYgMCAwIDEtMS42NTQgMS42NjJsLS4zMzcuMzM3YTIgMiAwIDAgMC0uNTU3IDEuMDhMMjAuMyAzMS45MjJjLS4xMDguNjM4LS4yMTUgMS4wNzkuMjExIDEuNDE4LjQwMy4zMi45LjE3NCAxLjU0LjA2Nmw1LjQwOC0uOTI4YTIgMiAwIDAgMCAxLjA4LS41NTZsNi40NC02LjQyOXptLTI0LjAzLTIxLjI2NWExLjE4IDEuMTggMCAwIDAgMS4xNzEgMS4xNzJoMTMuMTYzYTEuMTcyIDEuMTcyIDAgMSAwIDAtMi4zNDRIMTIuMTE5YTEuMTcgMS4xNyAwIDAgMC0xLjE3MiAxLjE3Mm03LjI5NCAxNC43NjZhMS4xNyAxLjE3IDAgMCAwLTEuMTcyLTEuMTcySDEyLjEyYTEuMTcyIDEuMTcyIDAgMSAwIDAgMi4zNDNoNC45NTFhMS4xNyAxLjE3IDAgMCAwIDEuMTcyLTEuMTcybS44Ni03LjM5MWExLjE3IDEuMTcgMCAwIDAtMS4xNzItMS4xNzJoLTUuODExYTEuMTcyIDEuMTcyIDAgMSAwIDAgMi4zNDNoNS44MWExLjE2NCAxLjE2NCAwIDAgMCAxLjE3My0xLjE3MSIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iIzAwQjdCQyIgZD0ibTMzLjUzMiAxNi4zOTcgNC4yODktNC4yODkgMy43NTggMy43MSAxLjYxNy0xLjYxNiAyLjI1OCAyLjI1N2MuMjE4LjIxOC4zNC41MTMuMzQzLjgyLS4wMDIuMzExLS4xMjUuNjA4LS4zNDQuODNsLTYuODA0IDYuNzk2YTEuMTMgMS4xMyAwIDAgMS0uODI4LjM0MyAxLjE1IDEuMTUgMCAwIDEtLjgyOC0uMzQzIDEuMTggMS4xOCAwIDAgMSAwLTEuNjU3bDUuOTc2LTUuOTY4LTEuMzEyLTEuMzEzLTEuMzgzIDEuNDE0LTEzLjE0OSAxMy4xMjUtNC42MTcuNzgyLjc4Mi00LjYxNy4zMzYtLjMzNyAyLjU2MiAyLjU1NWExLjEgMS4xIDAgMCAwIC44MjguMzQ0Yy4zMTIuMDA1LjYxMi0uMTIuODI4LS4zNDRhMS4xOCAxLjE4IDAgMCAwIDAtMS42NTZsLTIuNTYyLTIuNTYyek00NC43MzYgMTIuMjRjMCAuNDE0LS4xNjMuODEtLjQ1NCAxLjEwMmwtLjkyMi45MTQtMy44NTItMy44MjguOTMtLjkzYTEuNTYzIDEuNTYzIDAgMCAxIDIuMjAzIDBsMS42NCAxLjY0MWMuMjkxLjI5My40NTUuNjkuNDU1IDEuMTAyIi8+PC9zdmc+"},"displayName":"n8n Form Trigger","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1274,"icon":"file:form.svg","name":"n8n-nodes-base.form","codex":{"data":{"alias":["_Form","form","table","submit","post","page","step","stage","multi"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.form/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Form"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NiIgaGVpZ2h0PSI0MCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwQjdCQyIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzQuOTc4IDM3LjczMmExLjU2IDEuNTYgMCAwIDEtMS41NjIgMS41NjNINi4yNmExLjU2IDEuNTYgMCAwIDEtMS41NjMtMS41NjNWOS42MDdjMC0uNDA1LjE1Ny0uNzk0LjQzOC0xLjA4Nmw2LjMwNC02LjUzMXY1LjM0NEg4LjIxM2ExLjE3MiAxLjE3MiAwIDEgMCAwIDIuMzQzaDQuNDNhMS4xNyAxLjE3IDAgMCAwIDEuMTcxLTEuMTcxVi4yMzJoMTkuNjAyYTEuNTYgMS41NiAwIDAgMSAxLjU2MiAxLjU2M3YxMC4zMjdsLTIuODYgMi44Ni04LjI1MiA4LjI3NmE0MTMuMDA2IDQxMy4wMDYgMCAwIDEtMS42NTQgMS42NjJsLS4zMzcuMzM3YTIgMiAwIDAgMC0uNTU3IDEuMDhMMjAuMyAzMS45MjJjLS4xMDguNjM4LS4yMTUgMS4wNzkuMjExIDEuNDE4LjQwMy4zMi45LjE3NCAxLjU0LjA2Nmw1LjQwOC0uOTI4YTIgMiAwIDAgMCAxLjA4LS41NTZsNi40NC02LjQyOXptLTI0LjAzLTIxLjI2NWExLjE4IDEuMTggMCAwIDAgMS4xNzEgMS4xNzJoMTMuMTYzYTEuMTcyIDEuMTcyIDAgMSAwIDAtMi4zNDRIMTIuMTE5YTEuMTcgMS4xNyAwIDAgMC0xLjE3MiAxLjE3Mm03LjI5NCAxNC43NjZhMS4xNyAxLjE3IDAgMCAwLTEuMTcyLTEuMTcySDEyLjEyYTEuMTcyIDEuMTcyIDAgMSAwIDAgMi4zNDNoNC45NTFhMS4xNyAxLjE3IDAgMCAwIDEuMTcyLTEuMTcybS44Ni03LjM5MWExLjE3IDEuMTcgMCAwIDAtMS4xNzItMS4xNzJoLTUuODExYTEuMTcyIDEuMTcyIDAgMSAwIDAgMi4zNDNoNS44MWExLjE2NCAxLjE2NCAwIDAgMCAxLjE3My0xLjE3MSIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iIzAwQjdCQyIgZD0ibTMzLjUzMiAxNi4zOTcgNC4yODktNC4yODkgMy43NTggMy43MSAxLjYxNy0xLjYxNiAyLjI1OCAyLjI1N2MuMjE4LjIxOC4zNC41MTMuMzQzLjgyLS4wMDIuMzExLS4xMjUuNjA4LS4zNDQuODNsLTYuODA0IDYuNzk2YTEuMTMgMS4xMyAwIDAgMS0uODI4LjM0MyAxLjE1IDEuMTUgMCAwIDEtLjgyOC0uMzQzIDEuMTggMS4xOCAwIDAgMSAwLTEuNjU3bDUuOTc2LTUuOTY4LTEuMzEyLTEuMzEzLTEuMzgzIDEuNDE0LTEzLjE0OSAxMy4xMjUtNC42MTcuNzgyLjc4Mi00LjYxNy4zMzYtLjMzNyAyLjU2MiAyLjU1NWExLjEgMS4xIDAgMCAwIC44MjguMzQ0Yy4zMTIuMDA1LjYxMi0uMTIuODI4LS4zNDRhMS4xOCAxLjE4IDAgMCAwIDAtMS42NTZsLTIuNTYyLTIuNTYyek00NC43MzYgMTIuMjRjMCAuNDE0LS4xNjMuODEtLjQ1NCAxLjEwMmwtLjkyMi45MTQtMy44NTItMy44MjguOTMtLjkzYTEuNTYzIDEuNTYzIDAgMCAxIDIuMjAzIDBsMS42NCAxLjY0MWMuMjkxLjI5My40NTUuNjkuNDU1IDEuMTAyIi8+PC9zdmc+"},"displayName":"n8n Form","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":45,"name":"Miscellaneous"}],"image":[]}}