{"workflow":{"id":12868,"name":"Extract passport data with OpenAI OCR and generate QR codes","views":109,"recentViews":0,"totalViews":109,"createdAt":"2026-01-21T11:07:52.973Z","description":"### Overview\nThis workflow processes passport images submitted through a form, extracts structured data using OpenAI OCR, and generates QR codes with the extracted information. Results are displayed on the form completion page and sent via email.\n\nThe workflow reduces manual data entry and speeds up document processing workflows where passport information needs to be captured consistently. It works best with clear, front-facing passport images.\n\n### How it works\n1. User submits a form with one or more passport images\n2. Files are split and processed individually\n3. Each file is validated as an image and resized for OCR accuracy\n4. Image is converted to base64 and sent to OpenAI for data extraction\n5. Extracted fields are cleaned, standardized, and validated\n6. QR payload is generated from standardized data and converted to QR code image URL\n7. Results are aggregated into HTML summary\n8. Summary is displayed on form completion page and sent via email\n\n### Setup steps\n- Add OpenAI API credentials to the OCR request node\n- Connect your Gmail account for email delivery\n- Replace YOUR_EMAIL placeholder with recipient address\n- Test with 1–3 clear passport images\n\n### Customization\n- Modify OCR prompt to support other document types\n- Adjust QR payload format to match your system requirements","workflow":{"id":"eWjsQc7LACXBwmYC","meta":{"instanceId":"5b95386bd025dc78db5e606adcc8120e3c7a529e34835d8f928e7a51e0a37a58","templateCredsSetupCompleted":true},"name":"Extract passport data with OpenAI and create QR codes","tags":[],"nodes":[{"id":"ac9f02e6-b5d9-4c92-93e7-818f970ae1fd","name":"On form submission","type":"n8n-nodes-base.formTrigger","position":[-1360,368],"webhookId":"83380766-364e-4402-b035-f51e63b6390b","parameters":{"options":{},"formTitle":"Process passport images","formFields":{"values":[{"fieldType":"file","fieldLabel":"Passport images","requiredField":true}]},"formDescription":"Upload multiple passport images and generate QR codes"},"typeVersion":2.2},{"id":"1da0691b-96a2-447e-9a7f-38c22321c148","name":"Loop Over images","type":"n8n-nodes-base.splitInBatches","position":[-832,368],"parameters":{"options":{"reset":"={{ $prevNode.name == 'On form submission'}}"}},"typeVersion":3},{"id":"5e604ffc-ca95-487e-989c-f7041b5d4dfa","name":"OCR - openAI","type":"n8n-nodes-base.httpRequest","onError":"continueRegularOutput","position":[352,368],"parameters":{"url":"https://api.openai.com/v1/responses","method":"POST","options":{},"jsonBody":"={\n  \"model\": \"gpt-4.1-mini\", \n  \"input\": [\n    {\n      \"role\": \"user\",\n      \"content\": [\n        {\n          \"type\": \"input_text\", \n          \"text\": \"If the image is not a normal passport, the result will be returned as empty. If normal passport, extract all passport fields as json encode. Use key: type, surname, given_names, nationality, date_of_birth, sex, place_of_birth, date_of_issue, date_of_expiration, cmnd, issuing_authority, issuing_country, overseas_address, passport_no.\"},\n        {\n          \"type\": \"input_image\",\n          \"image_url\": \"data:image/png;base64,{{ $json.imageBase64 }}\"\n        }\n      ]\n    }\n  ]\n}\n","sendBody":true,"specifyBody":"json","authentication":"genericCredentialType","genericAuthType":"httpBearerAuth"},"retryOnFail":true,"typeVersion":4.2},{"id":"e242bd79-b027-4124-9bd5-4368c2917951","name":"If is image","type":"n8n-nodes-base.if","position":[-384,384],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"06912eb7-406c-4568-9cfa-2a695cb0f63a","operator":{"type":"string","operation":"regex"},"leftValue":"={{ $('Loop Over images').item.binary.data.fileExtension.toLowerCase() }}","rightValue":"\\.?(jpg|jpeg|png|gif|bmp|webp|svg|tiff|heic|jfif)$"}]}},"typeVersion":2.2},{"id":"5591e2c6-8e40-4d6e-b4fb-60c1c52b97d3","name":"If has result","type":"n8n-nodes-base.if","disabled":true,"position":[720,368],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"5902cd89-732a-4f32-918a-015b90002cda","operator":{"type":"string","operation":"exists","singleValue":true},"leftValue":"={{$json.fullname}}","rightValue":""}]}},"typeVersion":2.2},{"id":"a0084d12-2a31-4f49-83b7-caf290318d18","name":"Resize Image","type":"n8n-nodes-base.editImage","onError":"continueRegularOutput","position":[-144,368],"parameters":{"width":1000,"height":1000,"options":{},"operation":"resize"},"typeVersion":1},{"id":"6d73bc19-9b0c-4ab0-b3e4-e51daa7c91ea","name":"Update imageBase64","type":"n8n-nodes-base.code","onError":"continueRegularOutput","position":[96,368],"parameters":{"jsCode":"let x = $('Loop Over images').first();\nconsole.log('x...', x)\nconsole.log('input...', $input.first())\nconst binBuffer = await this.helpers.getBinaryDataBuffer(0, 'data');\nconsole.log('binBuffer...', binBuffer)\nx.json.imageBase64 = Buffer.from(binBuffer).toString('base64')\nx.binary = $input.first().binary\nreturn x"},"typeVersion":2},{"id":"83acad24-214a-4a8a-894b-5818276dd1e1","name":"Data standardization","type":"n8n-nodes-base.code","onError":"continueRegularOutput","position":[544,368],"parameters":{"jsCode":"function toTelex(str) {\n  const map = {\n    'à':'af','á':'as','ả':'ar','ã':'ax','ạ':'aj',\n    'â':'aa','ầ':'aaf','ấ':'aas','ẩ':'aar','ẫ':'aax','ậ':'aaj',\n    'ă':'aw','ằ':'awf','ắ':'aws','ẳ':'awr','ẵ':'awx','ặ':'awj',\n    'À':'Af','Á':'As','Ả':'Ar','Ã':'Ax','Ạ':'Aj',\n    'Â':'Aa','Ầ':'Aaf','Ấ':'Aas','Ẩ':'Aar','Ẫ':'Aax','Ậ':'Aaj',\n    'Ă':'Aw','Ằ':'Awf','Ắ':'Aws','Ẳ':'Awr','Ẵ':'Awx','Ặ':'Awj',\n    'è':'ef','é':'es','ẻ':'er','ẽ':'ex','ẹ':'ej',\n    'ê':'ee','ề':'eef','ế':'ees','ể':'eer','ễ':'eex','ệ':'eej',\n    'È':'Ef','É':'Es','Ẻ':'Er','Ẽ':'Ex','Ẹ':'Ej',\n    'Ê':'Ee','Ề':'Eef','Ế':'Ees','Ể':'Eer','Ễ':'Eex','Ệ':'Eej',\n    'ì':'if','í':'is','ỉ':'ir','ĩ':'ix','ị':'ij',\n    'Ì':'If','Í':'Is','Ỉ':'Ir','Ĩ':'Ix','Ị':'Ij',\n    'ò':'of','ó':'os','ỏ':'or','õ':'ox','ọ':'oj',\n    'ô':'oo','ồ':'oof','ố':'oos','ổ':'oor','ỗ':'oox','ộ':'ooj',\n    'ơ':'ow','ờ':'owf','ớ':'ows','ở':'owr','ỡ':'owx','ợ':'owj',\n    'Ò':'Of','Ó':'Os','Ỏ':'Or','Õ':'Ox','Ọ':'Oj',\n    'Ô':'Oo','Ồ':'Oof','Ố':'Oos','Ổ':'Oor','Ỗ':'Oox','Ộ':'Ooj',\n    'Ơ':'Ow','Ờ':'Owf','Ớ':'Ows','Ở':'Owr','Ỡ':'Owx','Ợ':'Owj',\n    'ù':'uf','ú':'us','ủ':'ur','ũ':'ux','ụ':'uj',\n    'ư':'uw','ừ':'uwf','ứ':'uws','ử':'uwr','ữ':'uwx','ự':'uwj',\n    'Ù':'Uf','Ú':'Us','Ủ':'Ur','Ũ':'Ux','Ụ':'Uj',\n    'Ư':'Uw','Ừ':'Uwf','Ứ':'Uws','Ử':'Uwr','Ữ':'Uwx','Ự':'Uwj',\n    'ỳ':'yf','ý':'ys','ỷ':'yr','ỹ':'yx','ỵ':'yj',\n    'Ỳ':'Yf','Ý':'Ys','Ỷ':'Yr','Ỹ':'Yx','Ỵ':'Yj',\n    'đ':'dd','Đ':'Dd'\n  };\n\n  return str.split('').map(ch => map[ch] || ch).join('');\n}\n\nfunction isNumeric(str) {\n  return /^[0-9]+$/.test(str);\n}\n\nfunction convertDate(date) {\n  if (date.split('/').length == 3) {\n    const [day, month, year] = date.split(\"/\").map(Number);\n    return new Date(year, month - 1, day);\n  }\n  return new Date(date)\n}\n\nfunction convertVNDate(date) {\n  let ngay = date.getDate()\n  if (ngay < 10) {\n    ngay = '0' + ngay\n  }\n  let thang = date.getMonth() + 1\n  if (thang < 10) {\n    thang = '0' + thang\n  }\n  let nam = date.getFullYear()\n  return ngay + '/' + thang + '/' + nam\n}\nconst objArr = []\nfor (const item of $input.all()) {\n  let output = item.json.output[0].content[0].text\n  console.log(output)\n  if (output.length == 0) {\n    objArr.push({})\n    continue\n  }\n  const output2 = output.match(/\\{[\\s\\S]*\\}/);\n  if (!output2) {\n    objArr.push({})\n    continue\n  }\n  const result = JSON.parse(output2[0])\n  if (!result.type || !result.given_names) {\n    objArr.push({})\n    continue\n  }\n\n  const vnList = ['VN', 'VNM', 'VIETNAM', 'VIET NAM']\n  if (!vnList.includes(result.issuing_country.toUpperCase())) {\n    if (!result.type || !result.given_names) {\n      objArr.push({})\n      continue\n    }\n  }\n  \n  result['date_of_birth'] = convertDate(result['date_of_birth'])\n  result['date_of_issue'] = convertDate(result['date_of_issue'])\n  result['date_of_expiration'] = convertDate(result['date_of_expiration'])\n  \n  result['ngay_sinh'] = result['date_of_birth'].getDate()\n  if (result['ngay_sinh'] < 10) {\n    result['ngay_sinh'] = '0' + result['ngay_sinh']\n  }\n  result['thang_sinh'] = result['date_of_birth'].getMonth() + 1\n  if (result['thang_sinh'] < 10) {\n    result['thang_sinh'] = '0' + result['thang_sinh']\n  }\n  result['nam_sinh'] = result['date_of_birth'].getFullYear()\n  \n  result['ngay_cap'] = result['date_of_issue'].getDate()\n  if (result['ngay_cap'] < 10) {\n    result['ngay_cap'] = '0' + result['ngay_cap']\n  }\n  result['thang_cap'] = result['date_of_issue'].getMonth() + 1\n  if (result['thang_cap'] < 10) {\n    result['thang_cap'] = '0' + result['thang_cap']\n  }\n  result['nam_cap'] = result['date_of_issue'].getFullYear()\n  \n  result['ngay_thang_nam_sinh'] = convertVNDate(result['date_of_birth'])\n  result['ngay_thang_nam_het_han'] = convertVNDate(result['date_of_expiration'])\n  result['ngay_thang_nam_cap'] = convertVNDate(result['date_of_issue'])\n  result['passport_number'] = result['passport_no']\n  result['issue_date'] = result['ngay_thang_nam_cap']\n  result['expiry_date'] = result['ngay_thang_nam_het_han']\n  result['issuing_place'] = toTelex(result['issuing_authority'])\n  result['birth_date'] = result['ngay_thang_nam_sinh']\n  result['birth_place'] = result['place_of_birth']\n  result['domestic_address'] = toTelex(result['place_of_birth'])\n  result['overseas_address'] = ''\n  result['original_nationality'] = 'Viet Nam'\n  result['occupation'] = ''\n  if (result['sex'] == 'M') {\n    result['sex'] = 'Male'\n  }\n  if (result['sex'] == 'F') {\n    result['sex'] = 'Female'\n  }\n  \n  result['sex2'] = result['sex'].toLowerCase()\n  result['fullname'] = result['surname'] + ' ' + result['given_names']\n  result['surname_only'] = result['surname']\n  result['fullname_telex'] = toTelex(result['fullname'])\n  if (!isNumeric(result['cmnd'])) {\n    result['cmnd'] = ''\n  }\n  result['passport_status'] = 'Valid'\n  if (result['date_of_expiration'] < new Date()) {\n    result['passport_status'] = 'Expired'\n  }\n  let nextYear = new Date();\n  nextYear.setFullYear(nextYear.getFullYear() + 1);\n\n  if (result['date_of_expiration'] > nextYear) {\n    result['passport_status'] = 'Lost'\n  }\n  objArr.push({\n    json: result\n  })\n}\nreturn objArr\n"},"typeVersion":2},{"id":"fce4c52a-e6ae-444a-96e6-fd4c2126a14b","name":"Send a message","type":"n8n-nodes-base.gmail","position":[-96,-160],"webhookId":"c791ed17-1a6f-4377-9c53-0863499afa3b","parameters":{"sendTo":"YOUR_EMAIL","message":"={{ $json.output }}","options":{},"subject":"=[QR] Passport processing results - {{ $now.format('yyyy-MM-dd hh-mm') }}"},"credentials":{"gmailOAuth2":{"id":"Rsxu6tC1hdqVGDRn","name":"minhlq@icts.vn"}},"typeVersion":2.1},{"id":"5b41a7d1-5710-4539-b422-c1909c4c066c","name":"Form","type":"n8n-nodes-base.form","position":[-96,16],"webhookId":"bf024954-7b71-4749-a02b-21b8c1397198","parameters":{"options":{},"operation":"completion","completionTitle":"Success!","completionMessage":"={{$json.output}}"},"typeVersion":1},{"id":"3c7b8c9b-a7a4-493a-a787-99d5c2b974be","name":"Grab image","type":"n8n-nodes-base.code","position":[-352,16],"parameters":{"jsCode":"let output = ''\nfor (const item of $input.all()) {\n  if (item.json.url) {\n    output = output + `[Passport] ${item.json.name} <br/><img src=\"${item.json.url}\"/><br/>`\n  }\n}\n\nreturn {output}"},"typeVersion":2},{"id":"416bc7b1-dca0-4c22-87b0-18d718037aa1","name":"Prepare form","type":"n8n-nodes-base.code","position":[-1104,368],"parameters":{"jsCode":"const input = items[0].binary;\nconst output = [];\n\nfor (const key in input) {\n  output.push({\n    binary: {\n      data: input[key]\n    },\n    json: {\n      fileName: input[key].fileName,\n      mimeType: input[key].mimeType\n    }\n  });\n}\n\nreturn output;\n"},"typeVersion":2},{"id":"29151a3e-aa10-4ef7-8208-6d38e9e2f215","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-432,-272],"parameters":{"color":7,"width":688,"height":448,"content":"## Result aggregation\nCombine extracted data and QR codes, then deliver via form completion page and email"},"typeVersion":1},{"id":"6ddf5763-45d9-4df5-bce3-017087435fbe","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-432,240],"parameters":{"color":7,"width":688,"height":368,"content":"## Image preprocessing\nValidate image files, resize for optimal OCR accuracy, prepare for data extraction"},"typeVersion":1},{"id":"28ff2de8-af39-42cb-8f44-ae6a0842d25f","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-1408,240],"parameters":{"color":7,"width":784,"height":368,"content":"## Form input processing\nReceive multiple image uploads from form, split into individual items for sequential processing"},"typeVersion":1},{"id":"60da4d75-335a-4375-81d2-80367b48eea4","name":"Prepare QR url","type":"n8n-nodes-base.code","position":[944,352],"parameters":{"jsCode":"const tab = String.fromCharCode(9);\nconst input = $input.first().json\nlet qr = `${input['passport_number']}${tab}${tab}${input['issue_date']}${tab}${input['expiry_date']}${tab}${tab}${tab}${input['issuing_place']}${tab}${input['fullname_telex']}${tab}${input['birth_date']}${tab}${tab}${input['sex']}${tab}${input['cmnd']}${tab}${input['birth_place']}${tab}${tab}${tab}${tab}${input['domestic_address']}${tab}${input['overseas_address']}`\nlet url = `https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=${encodeURIComponent(qr)}`\nreturn { url, name: input['fullname'] }"},"typeVersion":2},{"id":"8f5268aa-e47d-41dc-882f-8b463db889ad","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-1408,-448],"parameters":{"width":784,"height":640,"content":"## Overview\nThis workflow extracts structured passport data using OpenAI OCR and generates QR codes from the extracted information.\n\n### How it works\n1. User submits passport images via form\n2. Each image is validated and resized\n3. OpenAI extracts passport fields\n4. Data is standardized and validated\n5. QR codes are generated\n6. Results delivered via form and email\n\n### Setup\n- Add OpenAI API credentials to OCR node\n- Connect Gmail for email delivery\n- Replace YOUR_EMAIL with your address\n- Test with clear passport images\n\n### Customization\n- Modify OCR prompt for other documents\n- Adjust QR format for your system"},"typeVersion":1},{"id":"1dc541d7-61ff-4d10-8193-88debac5970c","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-1408,672],"parameters":{"color":3,"width":432,"height":96,"content":"⚠️ Privacy: Personal identity data. Limit access and configure email carefully."},"typeVersion":1},{"id":"53dbf4e2-d28f-457d-a70e-876c5fe7bb3b","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[288,240],"parameters":{"color":7,"width":608,"height":368,"content":"## Data extraction and QR generation\nSend images to OpenAI OCR, standardize extracted fields, validate results, create QR codes"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"9d7feeb2-4ebd-49b7-9af3-312f32bd9314","connections":{"Grab image":{"main":[[{"node":"Form","type":"main","index":0},{"node":"Send a message","type":"main","index":0}]]},"If is image":{"main":[[{"node":"Resize Image","type":"main","index":0}],[{"node":"Loop Over images","type":"main","index":0}]]},"OCR - openAI":{"main":[[{"node":"Data standardization","type":"main","index":0}]]},"Prepare form":{"main":[[{"node":"Loop Over images","type":"main","index":0}]]},"Resize Image":{"main":[[{"node":"Update imageBase64","type":"main","index":0}]]},"If has result":{"main":[[{"node":"Prepare QR url","type":"main","index":0}],[{"node":"Loop Over images","type":"main","index":0}]]},"Prepare QR url":{"main":[[{"node":"Loop Over images","type":"main","index":0}]]},"Loop Over images":{"main":[[{"node":"Grab image","type":"main","index":0}],[{"node":"If is image","type":"main","index":0}]]},"On form submission":{"main":[[{"node":"Prepare form","type":"main","index":0}]]},"Update imageBase64":{"main":[[{"node":"OCR - openAI","type":"main","index":0}]]},"Data standardization":{"main":[[{"node":"If has result","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":19,"nodeTypes":{"n8n-nodes-base.if":{"count":2},"n8n-nodes-base.code":{"count":5},"n8n-nodes-base.form":{"count":1},"n8n-nodes-base.gmail":{"count":1},"n8n-nodes-base.editImage":{"count":1},"n8n-nodes-base.stickyNote":{"count":6},"n8n-nodes-base.formTrigger":{"count":1},"n8n-nodes-base.httpRequest":{"count":1},"n8n-nodes-base.splitInBatches":{"count":1}}},"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":9,"icon":"fa:image","name":"n8n-nodes-base.editImage","codex":{"data":{"details":"The Edit Image node allows you to manipulate and edit images. Use this node when you want to:\n\n- Blur an image\n- Add a border to an image\n- Create a new image\n- Crop an image\n- Composite an image on top of another\n- Draw on an image\n- Get information about the image\n- Rotate an image\n- Change the size of an image\n- Shear an image along the X or Y axis\n- Add text to the image","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.editimage/"}]},"categories":["Marketing","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Files","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Edit Image","color":"#553399"},"iconData":{"icon":"image","type":"icon"},"displayName":"Edit Image","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"},{"id":27,"name":"Marketing"}]},{"id":19,"icon":"file:httprequest.svg","name":"n8n-nodes-base.httpRequest","codex":{"data":{"alias":["API","Request","URL","Build","cURL"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/","icon":"🎨","label":"Automate Designs with Bannerbear and n8n"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/","icon":"🧰","label":"How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"output\"]","defaults":{"name":"HTTP Request","color":"#0004F5"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="},"displayName":"HTTP Request","typeVersion":4,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":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":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":35,"name":"Document Extraction"},{"id":49,"name":"AI Summarization"}],"image":[]}}