AutomationFlowsAI & RAG › Triage Contact Form Enquiries with GPT-4.1, Gmail & Telegram

Triage Contact Form Enquiries with GPT-4.1, Gmail & Telegram

Original n8n title: Triage Contact Form Enquiries with Gpt-4.1, Gmail, Telegram and Data Tables

ByLukaszB @lukaszb on n8n.io

This workflow is an AI-powered contact form triage and auto-response system built for businesses that want to handle website enquiries in a faster, cleaner, and more professional way.

Webhook trigger★★★★☆ complexityAI-powered24 nodesGmailOpenAI ChatChain LlmOutput Parser StructuredData TableTelegram
AI & RAG Trigger: Webhook Nodes: 24 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #14593 — we link there as the canonical source.

This workflow follows the Chainllm → Gmail recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "6eb12420-0461-41db-a09c-76558050c005",
      "name": "Send message to Client",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2000,
        -480
      ],
      "parameters": {
        "sendTo": "={{ $('Set data').item.json.Email }}",
        "message": "={{ $json.output.body }}",
        "options": {
          "appendAttribution": false
        },
        "subject": "={{ $('Personalized auto respond').item.json.output.subject }}",
        "emailType": "text"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "31052dc5-c710-4e0e-ac06-3706a049ea60",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1552,
        -272
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini",
          "cachedResultName": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "095428d8-1f9a-4558-b036-a70ae1ac2b80",
      "name": "Personalized auto respond",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        1600,
        -480
      ],
      "parameters": {
        "text": "=Write auto respoind eamil to this person\n\nNEW MESSAGE FROM WEBSITE:\nFROM: {{ $('Set data').item.json['Full Name'] }}\nMESSAGE: {{ $('Set data').item.json.Message }}",
        "messages": {
          "messageValues": [
            {
              "message": "=You are a professional email assistant responsible for writing high-quality confirmation emails after a website form submission.\n\nYour task is to write a polite, professional, warm, well-written confirmation email that reassures the sender that their message has been successfully received.\n\nThis is not a sales email.\nThis is not a support reply.\nThis is not a follow-up email.\nThis is only a confirmation that the form submission was received correctly.\n\nYou will receive company information that describes the business, its tone, positioning, and preferred communication style.\nYou must use that company information to make the email feel aligned with the brand.\nDo not ignore the company information.\nDo not write a generic template if the company information provides enough context.\n\nCOMPANY INFORMATION:\n{{ $('Set data').item.json['Our Company Information'] }}\n\nGOAL OF THE EMAIL\n\nThe email must:\n- confirm that the message was successfully received\n- sound professional, calm, warm, and reassuring\n- feel like it was written by a real company\n- make the sender feel acknowledged and respected\n- optionally mention that the message will be reviewed\n- avoid sounding robotic, stiff, lazy, or overly casual\n\nWRITING STYLE\n\nWrite in a style that is:\n- professional\n- polished\n- courteous\n- warm\n- concise\n- human\n- natural\n\nThe email should feel like a proper business confirmation email from a serious company.\n\nDo NOT write like:\n- a chatbot\n- a cheap automated autoresponder\n- a marketing email\n- a sales rep\n- a casual text message\n\nAVOID THESE TYPES OF PHRASING\n\nAvoid dry and generic phrasing such as:\n- we received your message\n- everything came through correctly\n- we will review it shortly\n- thanks for reaching out\n- your message has been received and is now in our system\n\nThese phrases are too generic unless rewritten in a more refined and natural way.\n\nINSTEAD, prefer language that feels more thoughtful and professional, such as:\n- thank you for contacting us\n- this is to confirm that your message has been successfully submitted\n- we have safely received your enquiry\n- your message has been forwarded for review\n- our team will review your message as soon as possible\n\nEMAIL REQUIREMENTS\n\n- Write a clear subject line\n- Write a proper email body\n- Use the sender\u2019s name if available\n- Keep the email relatively short, but not cold or abrupt\n- 1 short greeting paragraph\n- 1 short confirmation / reassurance paragraph\n- optional sign-off aligned with the company tone\n- The result should be suitable for a real business website\n\nIMPORTANT RULES\n\n- Do not sell anything\n- Do not promote services\n- Do not suggest a call\n- Do not include links unless explicitly provided in the company information and clearly appropriate\n- Do not ask unnecessary questions\n- Do not use emojis\n- Do not use buzzwords\n- Do not make the message sound artificial\n- Do not output placeholders\n- Do not mention internal systems, tickets, pipelines, inboxes, or automation\n- Do not sound lazy or minimalist in a bad way\n\nTONE CALIBRATION\n\nThe email should feel similar to what a well-run modern company would send:\n- respectful\n- composed\n- premium\n- trustworthy\n- well written\n\nIt should not feel overexcited, promotional, or overly formal.\nAim for a balanced, modern business tone.\n\nOUTPUT FORMAT\n\nReturn exactly in this format:\n\nsubject: <subject line>\nbody: <full email body>\n\nDo not return JSON.\nDo not return markdown.\nDo not add explanations.\nDo not add quotation marks around the whole response."
            }
          ]
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.6
    },
    {
      "id": "ac9e9f3b-8684-4973-814e-4b345d56a68b",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1792,
        -288
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"subject\": \"Subject in message language\",\n  \"body\": \"HTML formatted message body\"\n}\n"
      },
      "typeVersion": 1.2
    },
    {
      "id": "a0f1c340-ef83-4712-8d13-3f3fb3932ded",
      "name": "Insert row",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        976,
        -480
      ],
      "parameters": {
        "columns": {
          "value": {
            "Type": "Valid",
            "Email": "={{ $json.Email }}",
            "Phone": "={{ $json.Phone }}",
            "Message": "={{ $json.Message }}",
            "Full_Name": "={{ $json['Full Name'] }}"
          },
          "schema": [
            {
              "id": "Full_Name",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Full_Name",
              "defaultMatch": false
            },
            {
              "id": "Phone",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Phone",
              "defaultMatch": false
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false
            },
            {
              "id": "Message",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Message",
              "defaultMatch": false
            },
            {
              "id": "Type",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Type",
              "defaultMatch": false
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "dataTableId": {
          "__rl": true,
          "mode": "list",
          "value": "JQqiXAi5ti1Jo4WD",
          "cachedResultUrl": "/projects/FZSx9Ud5YHLde6lE/datatables/JQqiXAi5ti1Jo4WD",
          "cachedResultName": "Form"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "8be48566-8ce3-42dd-a5c7-d81da48f2f6c",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        288,
        192
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-nano",
          "cachedResultName": "gpt-4.1-nano"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "61efca79-1434-4317-86e6-3c18ca46444f",
      "name": "Switch",
      "type": "n8n-nodes-base.switch",
      "position": [
        640,
        0
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Valid",
              "conditions": {
                "options": {
                  "version": 3,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "498fb105-85e1-440f-b2a6-1cc4d536cdb3",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.text }}",
                    "rightValue": "real"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Outreach",
              "conditions": {
                "options": {
                  "version": 3,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "8c1fe819-ee37-49a7-a3a2-0a7d0da1a685",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.text }}",
                    "rightValue": "seller"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "SPAM",
              "conditions": {
                "options": {
                  "version": 3,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "21cfdd0c-c198-44c4-a8a8-31523063bca7",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.text }}",
                    "rightValue": "joke"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.4
    },
    {
      "id": "07adf0af-706c-4efe-8c26-a0b3a15856ee",
      "name": "SPAM Email Detected",
      "type": "n8n-nodes-base.set",
      "position": [
        976,
        624
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3.4
    },
    {
      "id": "862ff0b8-4ec5-4222-8cb0-63bf0bede6b4",
      "name": "Send a notification",
      "type": "n8n-nodes-base.gmail",
      "disabled": true,
      "position": [
        1232,
        -304
      ],
      "parameters": {
        "message": "=New message from Form:\nName: {{ $('Set data').item.json['Full Name'] }}\nEmail: {{ $('Set data').item.json.Email }}\nPhone: {{ $('Set data').item.json.Phone }}\nMessage: {{ $('Set data').item.json.Message }}",
        "options": {},
        "subject": "New message",
        "emailType": "text"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "61b4df6b-227b-4c78-bcf4-193eebdb5c17",
      "name": "Set data",
      "type": "n8n-nodes-base.set",
      "position": [
        32,
        16
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "4c83cc7d-e33d-4d2b-a9f6-90ce9fc8bc98",
              "name": "Full Name",
              "type": "string",
              "value": ""
            },
            {
              "id": "6247614e-a5e8-4176-b019-b92230154304",
              "name": "Email",
              "type": "string",
              "value": ""
            },
            {
              "id": "65115461-8786-4500-a0ba-df24ee20b069",
              "name": "Phone",
              "type": "string",
              "value": ""
            },
            {
              "id": "e9fb208b-07a2-4167-8de8-2f2b3d56f3d7",
              "name": "Message",
              "type": "string",
              "value": ""
            },
            {
              "id": "be9f1c54-b06c-4ffb-a4cc-983372e1795c",
              "name": "Our Company Information",
              "type": "string",
              "value": "We are XYZ the best company....."
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "a63d9913-a82d-4bc9-893e-ea45189cec07",
      "name": "Analyze intend",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        288,
        16
      ],
      "parameters": {
        "text": "=Analyze this form submission and classify it:\n\nName: {{ $json['Full Name'] }}\nEmail: {{ $json.Email }}\nMessage: {{ $json.Message }}",
        "batching": {},
        "messages": {
          "messageValues": [
            {
              "message": "You are a strict form submission classification engine used in an automated workflow.  Your task is to classify a single form submission into exactly one category:  real seller joke  You must classify carefully, strictly, and consistently.  DEFINITIONS  real A genuine, meaningful message with clear intent from a person who wants something real: - asking a question - requesting help - requesting a quote - describing a project - reporting a problem - wanting to buy or use a service - asking about pricing, timeline, or implementation  The message must contain clear intent, context, or purpose.  seller A message where the sender is trying to sell, pitch, promote, recruit, or offer something: - service offers - SEO offers - marketing offers - lead generation - outreach messages - agency pitches - software demos - partnership proposals where they are pushing their solution  Key rule: If THEY want YOU to buy \u2192 seller   If THEY want to buy from YOU \u2192 real  joke Any message that is not serious or not meaningful: - test messages - placeholder text - meaningless content - random words - gibberish - spam - very short messages without intent - fake or unserious submissions  Important: \"joke\" also includes low-quality, empty, or non-useful form submissions.  STRICT DECISION LOGIC  Step 1: If the message is trying to sell or promote something \u2192 seller  Step 2: If the message is meaningless, vague, empty, test-like, random, or has no real intent \u2192 joke  Step 3: Only if the message shows clear, meaningful intent \u2192 real  STRICT RULES  - Do not assume good intent from weak messages - Do not classify something as real if it has no clear purpose - Very short or generic messages are usually joke - Name and email do NOT make a message real - Be strict and critical  SHORT MESSAGE RULES  Classify as joke if the message is like: - test - text - hi - hello - yo - asd - 123 - checking - ok - lorem ipsum - message - sample - demo  Unless there is clear intent, short messages are not real.  REAL SHORT EXAMPLES (allowed): - need a quote for chatbot - can you help with n8n - interested in your service - need automation for my business  SELLER EXAMPLES: - we offer SEO services for your company - we help businesses grow with AI outreach - let's book a call to show you our solution - we provide developers for hire  REAL EXAMPLES: - can you build automation for my shopify store - i need help with chatbot implementation - can you send pricing for your service - my system is not working, can you fix it  JOKE EXAMPLES: - test - text - hello - asd - 123 - lorem ipsum - random words - empty or meaningless messages  EDGE CASES  - \"i need help\" \u2192 real - \"we help companies scale with AI\" \u2192 seller - \"text\" \u2192 joke - \"hello\" \u2192 joke - \"need pricing\" \u2192 real - \"free traffic for your site\" \u2192 seller - \"asd asd\" \u2192 joke  OUTPUT RULES  - Return ONLY one word - No JSON - No explanation - No punctuation - No extra spaces - No additional text - No uppercase  Allowed outputs: real seller joke"
            }
          ]
        },
        "promptType": "define"
      },
      "typeVersion": 1.9
    },
    {
      "id": "ae78a361-6f7a-46d5-a691-151d31a6b1c4",
      "name": "Insert row2",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        960,
        128
      ],
      "parameters": {
        "columns": {
          "value": {
            "Type": "Seller",
            "Email": "={{ $json.Email }}",
            "Phone": "={{ $json.Phone }}",
            "Message": "={{ $json.Message }}",
            "Full_Name": "={{ $json['Full Name'] }}"
          },
          "schema": [
            {
              "id": "Full_Name",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Full_Name",
              "defaultMatch": false
            },
            {
              "id": "Phone",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Phone",
              "defaultMatch": false
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false
            },
            {
              "id": "Message",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Message",
              "defaultMatch": false
            },
            {
              "id": "Type",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Type",
              "defaultMatch": false
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "dataTableId": {
          "__rl": true,
          "mode": "list",
          "value": "JQqiXAi5ti1Jo4WD",
          "cachedResultUrl": "/projects/FZSx9Ud5YHLde6lE/datatables/JQqiXAi5ti1Jo4WD",
          "cachedResultName": "Form"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "e19534d9-77a1-4dad-a46b-114c180e06df",
      "name": "Send a text message",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1232,
        -480
      ],
      "parameters": {
        "text": "=New message from Website:\nName: {{ $('Set data').item.json['Full Name'] }}\nEmail: {{ $('Set data').item.json.Email }}\nPhone: {{ $('Set data').item.json.Phone }}\nMessage: {{ $('Set data').item.json.Message }}",
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "d0792f19-d513-43fc-94aa-758fe7e747d2",
      "name": "Send a notification1",
      "type": "n8n-nodes-base.gmail",
      "disabled": true,
      "position": [
        1184,
        288
      ],
      "parameters": {
        "message": "=New message from Form, this was selling pitch:\nName: {{ $('Set data').item.json['Full Name'] }}\nEmail: {{ $('Set data').item.json.Email }}\nPhone: {{ $('Set data').item.json.Phone }}\nMessage: {{ $('Set data').item.json.Message }}",
        "options": {},
        "subject": "New message from Seller",
        "emailType": "text"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "f9c7293b-a519-4e7c-9669-b3e67e133727",
      "name": "Send a text message1",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1184,
        128
      ],
      "parameters": {
        "text": "=New message from Form, this was selling pitch:\nName: {{ $('Set data').item.json['Full Name'] }}\nEmail: {{ $('Set data').item.json.Email }}\nPhone: {{ $('Set data').item.json.Phone }}\nMessage: {{ $('Set data').item.json.Message }}",
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "1ca2e719-ad4d-4969-972b-40e1183b5106",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -256,
        16
      ],
      "parameters": {
        "path": "dfc7f035-b32a-436e-804e-361f9cd6a389",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 2.1
    },
    {
      "id": "dbeb7aa3-1136-460e-bc72-f52b9fcc3356",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        832,
        -736
      ],
      "parameters": {
        "color": 7,
        "width": 1392,
        "height": 624,
        "content": "## Valid enquiry processing\n\nSaves the lead to the DataTable, notifies the team via Telegram, generates a brand-aligned confirmation email with GPT-4.1-mini, and sends it to the sender."
      },
      "typeVersion": 1
    },
    {
      "id": "4dbca305-eaa8-4007-b5fb-032d5fb2df6d",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        832,
        -80
      ],
      "parameters": {
        "color": 7,
        "width": 1392,
        "height": 512,
        "content": "## Seller and outreach handling\n\nSaves the submission to the DataTable with a Seller label and notifies the team via Telegram. No reply is sent to the sender."
      },
      "typeVersion": 1
    },
    {
      "id": "4bd65318-de01-444d-87bd-538f8e09b975",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        832,
        448
      ],
      "parameters": {
        "color": 7,
        "width": 1376,
        "height": 384,
        "content": "## Spam and low-quality submissions\n\nMarks the submission as spam and stops processing. No notification or reply is triggered."
      },
      "typeVersion": 1
    },
    {
      "id": "e973303e-0e6a-4300-8187-8e2201fe6882",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -400,
        -352
      ],
      "parameters": {
        "color": 7,
        "width": 1168,
        "height": 688,
        "content": "## Data intake and classification\n\nReceives the form submission, normalizes the fields, and uses GPT-4.1-nano to classify the message as real, seller, or spam. Switch routes it into the correct branch."
      },
      "typeVersion": 1
    },
    {
      "id": "07db133b-af6f-436d-b297-f77415b80c68",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1424,
        -352
      ],
      "parameters": {
        "width": 976,
        "height": 688,
        "content": "## Form submission triage and auto-response\n\n### How it works\n\n1. Webhook receives incoming POST requests from the website contact form.\n2. Set data normalizes the submission fields and injects company information for use by the AI.\n3. Analyze intend uses GPT-4.1-nano to classify the message as real, seller, or joke.\n4. Switch routes the submission into one of three branches based on the classification result.\n5. Valid enquiries are saved to the DataTable, the team is notified via Telegram, and a personalized confirmation email is generated by GPT-4.1-mini and sent back to the sender.\n6. Seller submissions are saved separately and the team is notified via Telegram. No reply is sent to the sender.\n7. Spam and joke submissions are marked and discarded. No notification or reply is triggered.\n\n### Setup\n\n- [ ] Connect the Webhook node to your website contact form and set the correct POST endpoint.\n- [ ] In Set data, fill in your company name, tone, and description in the Our Company Information field.\n- [ ] Connect your OpenAI API credential to both OpenAI Chat Model nodes.\n- [ ] Connect your Telegram Bot credential and set the correct Chat ID in both Telegram nodes.\n- [ ] Connect your Gmail OAuth2 credential to Send message to Client and verify the sender address.\n- [ ] Optionally enable Send a notification nodes for email-based internal alerts.\n\n### Customization\n\nEdit the classification prompt in Analyze intend to adjust what counts as real, seller, or spam. Edit the system prompt in Personalized auto respond to change the tone or format of the confirmation email."
      },
      "typeVersion": 1
    },
    {
      "id": "d22e0b8f-9089-4fdd-bfed-87492e4dd08a",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -32,
        -64
      ],
      "parameters": {
        "color": 3,
        "height": 272,
        "content": "warning"
      },
      "typeVersion": 1
    },
    {
      "id": "1874c2cc-322b-4a45-9e59-31057c5c5c08",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1168,
        -576
      ],
      "parameters": {
        "color": 3,
        "height": 272,
        "content": "warning"
      },
      "typeVersion": 1
    },
    {
      "id": "579153e2-802d-4ab3-8ccd-460b8e110df2",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1104,
        32
      ],
      "parameters": {
        "color": 3,
        "height": 272,
        "content": "warning"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Switch": {
      "main": [
        [
          {
            "node": "Insert row",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Insert row2",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "SPAM Email Detected",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook": {
      "main": [
        [
          {
            "node": "Set data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set data": {
      "main": [
        [
          {
            "node": "Analyze intend",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Insert row": {
      "main": [
        [
          {
            "node": "Send a text message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Insert row2": {
      "main": [
        [
          {
            "node": "Send a text message1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Analyze intend": {
      "main": [
        [
          {
            "node": "Switch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Personalized auto respond",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Analyze intend",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Send a notification": {
      "main": [
        []
      ]
    },
    "Send a text message": {
      "main": [
        [
          {
            "node": "Personalized auto respond",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send message to Client": {
      "main": [
        []
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Personalized auto respond",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Personalized auto respond": {
      "main": [
        [
          {
            "node": "Send message to Client",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow is an AI-powered contact form triage and auto-response system built for businesses that want to handle website enquiries in a faster, cleaner, and more professional way.

Source: https://n8n.io/workflows/14593/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

leads. Uses supabase, gmail, formTrigger, httpRequest. Webhook trigger; 62 nodes.

Supabase, Gmail, Form Trigger +13
AI & RAG

This workflow automates document processing using LlamaParse to extract and analyze text from various file formats. It intelligently processes documents, extracts structured data, and delivers actiona

Gmail, Gmail Trigger, HTTP Request +6
AI & RAG

This workflow automates enterprise resource planning (ERP) operations across Engineering, Finance, HR, and Admin departments for operations managers, ERP administrators, and business process owners wh

Agent, Gmail, Slack +6
AI & RAG

🔍🛠️Perplexity Researcher to HTML Web Page. Uses stickyNote, lmChatOpenAi, outputParserStructured, respondToWebhook. Webhook trigger; 47 nodes.

OpenAI Chat, Output Parser Structured, Telegram +5
AI & RAG

Transform simple queries into comprehensive, well-structured content with this n8n workflow that leverages Perplexity AI for research and GPT-4 for content transformation. Create professional blog pos

OpenAI Chat, Output Parser Structured, Telegram +5