{ "meta": { "instanceId": "workflow-5e5f9cf5", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:44.541473", "updatedAt": "2025-09-29T07:07:44.541485", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production" }, "nodes": [ { "id": "e12611f4-37d2-48f9-8a60-ddcf4ff34cfc", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [ -480, 380 ], "parameters": { "color": 7, "width": 1118.3459011229047, "height": 775.3931210698682, "content": "### Sub-workflow: Custom tool\nThe agent above can call this workflow. It checks if the user has supplied an email address. If they haven't it prompts them to provide one. If they have, it messages a customer support channel for help." }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "72dbee3e-fe3b-4354-9b02-2fe52af23035", "name": "Sticky Note2", "type": "n8n-nodes-base.stickyNote", "position": [ -480, -180 ], "parameters": { "color": 7, "width": 927.5, "height": 486.5625, "content": "### Main workflow: AI agent using custom tool" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "a1c9660d-84b1-418a-bbb3-88d79cdd79d3", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [ 80, 60 ], "parameters": { "color": 5, "width": 197.45572294791873, "height": 179.21380662202682, "content": "**This tool calls the sub-workflow below**" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "b4ffb76d-c44f-46d6-b2d9-4e5d551adee1", "name": "Sticky Note5", "type": "n8n-nodes-base.stickyNote", "position": [ -280, 40 ], "parameters": { "color": 2, "width": 150, "height": 213.44323866265472, "content": "**Set your credentials**" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "8a9187f1-3cf9-479f-aa7f-5581880394d0", "name": "Sticky Note4", "type": "n8n-nodes-base.stickyNote", "position": [ 40, 540 ], "parameters": { "color": 2, "width": 178.0499248677781, "height": 250.57252651663197, "content": "**Set your credentials and Slack details**" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "3f72d117-e07a-4af4-aa1b-92ce04bf0b3c", "name": "Sticky Note3", "type": "n8n-nodes-base.stickyNote", "position": [ -640, -120 ], "parameters": { "color": 4, "width": 185.9375, "height": 214.8397420554627, "content": "## Try it out\n\nSelect **Chat** at the bottom and enter:\n\n_Hi! Please respond to this as if you don't know the answer to my query._" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "b85eff07-ee3c-4aeb-871e-b25a131a7afb", "name": "Sticky Note6", "type": "n8n-nodes-base.stickyNote", "position": [ 360, 900 ], "parameters": { "height": 145, "content": "## Next steps\n\nLearn more about [Advanced AI in n8n]({{ $env.WEBHOOK_URL }}" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "feb1e50d-5044-4ea6-8719-72e176581e27", "name": "When chat message received", "type": "n8n-nodes-base.noOp", "position": [ -400, -120 ], "webhookId": "e0e69202-32e8-41b5-963b-50905dd93e88", "parameters": { "options": {} }, "typeVersion": 1.1, "notes": "This chatTrigger node performs automated tasks as part of the workflow." }, { "id": "6af81471-7cd4-4517-9677-b634b59620b4", "name": "OpenAI Chat Model", "type": "n8n-nodes-base.noOp", "position": [ -240, 120 ], "parameters": { "model": { "__rl": true, "mode": "list", "value": "gpt-4o-mini" }, "options": {} }, "credentials": { "openAiApi": { "id": "8gccIjcuf3gvaoEr", "name": "OpenAi account" } }, "typeVersion": 1.2, "notes": "This lmChatOpenAi node performs automated tasks as part of the workflow." }, { "id": "37604c8d-5c70-4a81-a1d0-eafe42ce612d", "name": "Simple Memory", "type": "n8n-nodes-base.noOp", "position": [ -60, 120 ], "parameters": {}, "typeVersion": 1.3, "notes": "This memoryBufferWindow node performs automated tasks as part of the workflow." }, { "id": "fd404bb5-0703-4d08-8b9b-4a8b01fd2bff", "name": "When Executed by Another Workflow", "type": "n8n-nodes-base.executeWorkflowTrigger", "position": [ -380, 740 ], "parameters": { "workflowInputs": { "values": [ { "name": "chatInput" } ] } }, "typeVersion": 1.1, "notes": "This executeWorkflowTrigger node performs automated tasks as part of the workflow." }, { "id": "a807ca29-65bf-4d97-b89f-5ce16cd05347", "name": "Check if user has provided email", "type": "n8n-nodes-base.if", "position": [ -200, 740 ], "parameters": { "options": {}, "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "and", "conditions": [ { "id": "e6dce436-5e85-4722-a7e4-0ceb940a5477", "operator": { "type": "string", "operation": "regex" }, "leftValue": "={{ $('When Executed by Another Workflow').item.json.chatInput }}", "rightValue": "=/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\\.[a-zA-Z0-9_-]+)/gi" } ] } }, "typeVersion": 2.2, "notes": "This if node performs automated tasks as part of the workflow." }, { "id": "b9c552ce-4c58-48dd-b168-5e277de89954", "name": "Message Slack for help", "type": "n8n-nodes-base.slack", "position": [ 80, 620 ], "webhookId": "c54bea4c-bdb6-4f42-9f82-525857df5a9a", "parameters": { "text": "={{ \"A user had a question the bot couldn't answer. Here's their message: \" + $('When Executed by Another Workflow').first().json.chatInput }}", "select": "channel", "channelId": { "__rl": true, "mode": "name", "value": "#general" }, "otherOptions": {} }, "credentials": { "slackApi": { "id": "VfK3js0YdqBdQLGP", "name": "Slack account" } }, "typeVersion": 2.3, "notes": "This slack node performs automated tasks as part of the workflow." }, { "id": "644a05fc-ac7e-4ea9-ab03-3b6fbf7a3654", "name": "Confirm that we've messaged a human", "type": "n8n-nodes-base.code", "position": [ 300, 620 ], "parameters": { "jsCode": "const response = {\"response\": \"Thank you for getting in touch. I've messaged a human to help.\"}\nreturn response;" }, "typeVersion": 2, "notes": "This code node performs automated tasks as part of the workflow." }, { "id": "38e81aa5-30b3-48f9-88e8-1039f607f3e7", "name": "Prompt the user to provide an email", "type": "n8n-nodes-base.code", "position": [ 80, 860 ], "parameters": { "jsCode": "const response = {\"response\":\"I'm sorry I don't know the answer. Please repeat your question and include your email address so I can request help.\"};\nreturn response;" }, "typeVersion": 2, "notes": "This code node performs automated tasks as part of the workflow." }, { "id": "61ddb25a-f7f2-4691-94d5-3f32c183ec46", "name": "Not sure?", "type": "n8n-nodes-base.noOp", "position": [ 140, 120 ], "parameters": { "name": "dont_know_tool", "workflowId": { "__rl": true, "mode": "id", "value": "={{ $workflow.id }}" }, "description": "Use this tool if you don't know the answer to the user's question, or if you're not very confident about your answer.", "workflowInputs": { "value": { "chatInput": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('chatInput', ``, 'string') }}" }, "schema": [ { "id": "chatInput", "type": "string", "display": true, "removed": false, "required": false, "displayName": "chatInput", "defaultMatch": false, "canBeUsedToMatch": true } ], "mappingMode": "defineBelow", "matchingColumns": [], "attemptToConvertTypes": false, "convertFieldsToString": false } }, "typeVersion": 2, "notes": "This toolWorkflow node performs automated tasks as part of the workflow." }, { "id": "395349d1-1715-4550-a0c8-1388d17b4386", "name": "AI Agent", "type": "n8n-nodes-base.noOp", "position": [ -180, -120 ], "parameters": { "options": {} }, "typeVersion": 1.8, "notes": "This agent node performs automated tasks as part of the workflow." }, { "id": "error-45e33ec2", "name": "Error Handler", "type": "n8n-nodes-base.stopAndError", "typeVersion": 1, "position": [ 1000, 400 ], "parameters": { "message": "Workflow execution error", "options": {} } } ], "pinData": {}, "connections": { "6af81471-7cd4-4517-9677-b634b59620b4": { "main": [ [ { "node": "error-handler-6af81471-7cd4-4517-9677-b634b59620b4-523a0c4f", "type": "main", "index": 0 } ] ] }, "b9c552ce-4c58-48dd-b168-5e277de89954": { "main": [ [ { "node": "error-handler-b9c552ce-4c58-48dd-b168-5e277de89954-5ca68ee8", "type": "main", "index": 0 } ] ] } }, "name": "Stickynote Workflow", "settings": { "executionOrder": "v1", "saveManualExecutions": true, "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000 }, "description": "Automated workflow: Stickynote Workflow. This workflow integrates 11 different services: stickyNote, code, agent, stopAndError, lmChatOpenAi. It contains 19 nodes and follows best practices for error handling and security.", "tags": [ "automation", "n8n", "production-ready", "excellent", "optimized" ], "notes": "Excellent quality workflow: Stickynote Workflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation." }