{"nodes":[{"id":"8141ffad-df2a-403b-a869-799c036f9733","name":"Gmail trigger","type":"n8n-nodes-base.gmailTrigger","position":[-600,580],"parameters":{"simple":false,"filters":{},"options":{},"pollTimes":{"item":[{"mode":"everyMinute"}]}},"credentials":{"gmailOAuth2":{"id":"uBcIMfsTtKjexw7I","name":"Gmail (workfloowstutorial@gmail.com)"}},"typeVersion":1,"notes":"This gmailTrigger node performs automated tasks as part of the workflow."},{"id":"6d9aa398-e2de-4fd0-b939-2a12d0c9fe14","name":"Get message content","type":"n8n-nodes-base.gmail","position":[-340,580],"parameters":{"simple":false,"options":{},"messageId":"={{ $json.id }}","operation":"get"},"credentials":{"gmailOAuth2":{"id":"uBcIMfsTtKjexw7I","name":"Gmail (workfloowstutorial@gmail.com)"}},"typeVersion":2.1,"notes":"This gmail node performs automated tasks as part of the workflow."},{"id":"cd86bc09-8c7f-4c85-9cb3-6dbd42420672","name":"Set label values","type":"n8n-nodes-base.set","position":[300,580],"parameters":{"fields":{"values":[{"name":"labels","type":"arrayValue","arrayValue":"={{ $json.labels }}"}]},"options":{}},"typeVersion":3.2,"notes":"This set node performs automated tasks as part of the workflow."},{"id":"329435a6-51d1-416e-9aa9-5fe9a8dce74f","name":"Get all labels","type":"n8n-nodes-base.gmail","position":[580,460],"parameters":{"resource":"label","returnAll":true},"credentials":{"gmailOAuth2":{"id":"uBcIMfsTtKjexw7I","name":"Gmail (workfloowstutorial@gmail.com)"}},"typeVersion":2.1,"notes":"This gmail node performs automated tasks as part of the workflow."},{"id":"7ae2dd15-472d-4a4b-b036-f80ebd7e3c28","name":"Split out assigned labels","type":"n8n-nodes-base.splitOut","position":[580,700],"parameters":{"options":{},"fieldToSplitOut":"labels"},"typeVersion":1,"notes":"This splitOut node performs automated tasks as part of the workflow."},{"id":"744c7afa-75b1-4b3b-8ccb-e2106c01f387","name":"Merge corresponding labels","type":"n8n-nodes-base.merge","position":[860,580],"parameters":{"mode":"combine","options":{},"mergeByFields":{"values":[{"field1":"name","field2":"labels"}]},"outputDataFrom":"input1"},"typeVersion":2.1,"notes":"This merge node performs automated tasks as part of the workflow."},{"id":"e47424dc-f43e-41a9-b1e5-ab3e08cbf395","name":"Aggregate label IDs","type":"n8n-nodes-base.aggregate","position":[1120,580],"parameters":{"options":{},"fieldsToAggregate":{"fieldToAggregate":[{"renameField":true,"outputFieldName":"label_ids","fieldToAggregate":"id"}]}},"typeVersion":1,"notes":"This aggregate node performs automated tasks as part of the workflow."},{"id":"22ba8297-8efc-463e-8ae0-385fd94a205f","name":"Add labels to message","type":"n8n-nodes-base.gmail","position":[1340,580],"parameters":{"labelIds":"={{ $json.label_ids }}","messageId":"={{ $('Gmail trigger').item.json[\"id\"] }}","operation":"addLabels"},"credentials":{"gmailOAuth2":{"id":"uBcIMfsTtKjexw7I","name":"Gmail (workfloowstutorial@gmail.com)"}},"typeVersion":2.1,"notes":"This gmail node performs automated tasks as part of the workflow."},{"id":"7ebb1aad-00ad-43fa-9e07-e5f324864a74","name":"Assign labels for message","type":"n8n-nodes-base.noOp","position":[-80,580],"parameters":{"prompt":"={{ $json.text }}","messages":{"messageValues":[{"message":"Your task is to categorize the message according to the following labels.\n\nPartnership - email about sponsored content, cooperation etc.\nInquiry - email about products, services.\nNotification - email that doesn't require response. \n\nOne email can have more than one label. Return only label names in JSON format, nothing else. Do not make things up. "}]}},"typeVersion":1,"notes":"This chainLlm node performs automated tasks as part of the workflow."},{"id":"2f82db6a-422c-4697-a629-cc782d88209d","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-1100,400],"parameters":{"color":4,"width":420.4803040774015,"height":240.57943708322733,"content":"## Add AI labels to Gmail messages\nWith this workflow you can automatically set labels for your Gmail message according to its content. \n\nIn this workflow available are 3 labels: \"Partnership\", \"Inquiry\" and \"Notification\". Feel free to adjust labels according to your needs. \n\n**Please remember to set label names both in your Gmail account and workflow.**"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"4a10fb2b-aebb-4735-bbdb-7f07f1136d95","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-1100,660],"parameters":{"width":421.0932411886662,"height":257.42916378714597,"content":"## ⚠️ Note\n\n1. Complete video guide for this workflow is available [on my YouTube]({{ $env.WEBHOOK_URL }} \n2. Remember to add your credentials and configure nodes (covered in the video guide).\n3. If you like this workflow, please subscribe to [my YouTube channel]({{ $env.WEBHOOK_URL }} and/or [my newsletter]({{ $env.WEBHOOK_URL }}\n\n**Thank you for your support!**"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"76e62351-d502-4377-9df2-fe92df00fe03","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-660,400],"parameters":{"width":238.4602598584674,"height":348.5873725349161,"content":"### Gmail Trigger\nReceive data from Gmail about new incoming message. \n\n⚠️ Set polling interval according to your needs."},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"c10702db-211f-4638-bcf0-fbbe18251cb7","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[60,780],"parameters":{"width":241.53974014153226,"height":319.3323098457962,"content":"###\n\n\n\n\n\n\n\n\n\n\n### JSON schema\nEdit JSON schema and label names according to your needs.\n\n⚠️ **Label names in system prompt and JSON schema should be the same.**"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"cb6e3573-3d4d-4313-a97e-86a017438399","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[800,420],"parameters":{"width":226.14233872620645,"height":347.0476323933831,"content":"### Merge labels\nCombine labels retrieved from Gmail account and assigned by AI together."},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"8cfb4341-98e6-4944-b26c-15e39184f468","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[1060,420],"parameters":{"width":452.48413953150185,"height":347.0476323933831,"content":"### Aggregarte labels and add to message\nCreate array of label IDs and add to the desired email message in Gmail."},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"bb9766e8-0b72-47f8-9a8e-0b291609e814","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[-400,400],"parameters":{"width":238.4602598584674,"height":348.5873725349161,"content":"### Get message content\nBased on Gmail message ID retrieve body content of the email and pass it to AI chain."},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"48630cbd-8336-4577-928e-37341f09ef9b","name":"Sticky Note8","type":"n8n-nodes-base.stickyNote","position":[-140,400],"parameters":{"width":378.57661273793565,"height":348.5873725349161,"content":"### Assign labels\nLet the AI decide which labels suit the best content of the message.\n\n⚠️ **Remember to edit system prompt** - modify label names and instructions according to your needs."},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"60a9d75e-1564-4b1d-b3f2-acc2e3bf2411","name":"JSON Parser","type":"n8n-nodes-base.noOp","position":[140,800],"parameters":{"jsonSchema":"{\n \"type\": \"object\",\n \"properties\": {\n \"labels\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\"Inquiry\", \"Partnership\", \"Notification\"]\n }\n }\n },\n \"required\": [\"labels\"]\n}\n"},"typeVersion":1,"notes":"This outputParserStructured node performs automated tasks as part of the workflow."},{"id":"2bdf3fed-8a7f-411a-bad4-266bfea5cede","name":"OpenAI Chat","type":"n8n-nodes-base.noOp","position":[-120,800],"parameters":{"model":"gpt-4-turbo-preview","options":{"temperature":0,"responseFormat":"json_object"}},"credentials":{"openAiApi":{"id":"jazew1WAaSRrjcHp","name":"OpenAI (workfloows@gmail.com)"}},"typeVersion":1,"notes":"This lmChatOpenAi node performs automated tasks as part of the workflow."},{"id":"error-f8d22ce7","name":"Error Handler","type":"n8n-nodes-base.stopAndError","typeVersion":1,"position":[1000,400],"parameters":{"message":"Workflow execution error","options":{}}}],"active":false,"settings":{"executionOrder":"v1","saveManualExecutions":true,"callerPolicy":"workflowsFromSameOwner","errorWorkflow":null,"timezone":"UTC","executionTimeout":3600,"maxExecutions":1000,"retryOnFail":true,"retryCount":3,"retryDelay":1000},"connections":{"OpenAI Chat":{"main":[[]]}},"name":"Gmailtrigger Workflow","description":"Automated workflow: Gmailtrigger Workflow. This workflow integrates 11 different services: stickyNote, gmailTrigger, splitOut, chainLlm, merge. It contains 20 nodes and follows best practices for error handling and security.","meta":{"instanceId":"workflow-81561a30","versionId":"1.0.0","createdAt":"2025-09-29T07:07:42.004155","updatedAt":"2025-09-29T07:07:42.004183","owner":"n8n-user","license":"MIT","category":"automation","status":"active","priority":"high","environment":"production"},"notes":"Excellent quality workflow: Gmailtrigger Workflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}