AutomationFlowsAI & RAG › Analyze Form Feedback with Gpt-4 & Sync Tasks to Monday, Clickup & Hubspot

Analyze Form Feedback with Gpt-4 & Sync Tasks to Monday, Clickup & Hubspot

ByAvkash Kakdiya @itechnotion on n8n.io

This workflow automates customer feedback management by capturing reviews through a form, analyzing them with AI for sentiment and insights, and then creating structured tasks across Monday.com, ClickUp, and HubSpot. It ensures that customer concerns are categorized,…

Event trigger★★★★☆ complexityAI-powered13 nodesForm TriggerOpenAIAgentOpenAI ChatMonday.comClickUpHubSpot
AI & RAG Trigger: Event Nodes: 13 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the Agent → Form Trigger 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
{
  "id": "sewE6RsPSzHTD82d",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "16 - InsightMark: AI-Powered Review",
  "tags": [
    {
      "id": "2V3HXFbv2wqNGm6s",
      "name": "Dev",
      "createdAt": "2025-06-17T05:42:41.949Z",
      "updatedAt": "2025-06-17T05:42:41.949Z"
    }
  ],
  "nodes": [
    {
      "id": "ab9f0698-cf91-4bde-bae9-f7b4f0beeea7",
      "name": "\ud83e\uddea Code",
      "type": "n8n-nodes-base.code",
      "position": [
        -1680,
        -40
      ],
      "parameters": {
        "jsCode": "const raw = $input.first().json;\n\nreturn {\n  review_text: raw.Message,\n  customer_name: raw.Name,\n  rating: parseInt(raw.Rating),\n  product_service: raw[\"Product Service\"],\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "35d329e3-d4fb-4c54-a8e4-b4525f02789d",
      "name": "\ud83d\udcdd On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -1900,
        -40
      ],
      "parameters": {
        "options": {},
        "formTitle": "Feedback Form",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Name",
              "placeholder": "Your Name",
              "requiredField": true
            },
            {
              "fieldType": "textarea",
              "fieldLabel": "Message",
              "placeholder": "Feedback",
              "requiredField": true
            },
            {
              "fieldType": "dropdown",
              "fieldLabel": "Rating",
              "fieldOptions": {
                "values": [
                  {
                    "option": "1"
                  },
                  {
                    "option": "2"
                  },
                  {
                    "option": "3"
                  },
                  {
                    "option": "4"
                  },
                  {
                    "option": "5"
                  }
                ]
              },
              "requiredField": true
            },
            {
              "fieldType": "textarea",
              "fieldLabel": "Product Service",
              "requiredField": true
            }
          ]
        },
        "formDescription": "Please Let us know about your concerns"
      },
      "typeVersion": 2.2
    },
    {
      "id": "dc7bd1ea-c3d3-48b5-8294-24fcfe958947",
      "name": "\ud83e\udde0 OpenAI Analysis",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "notes": "AI ANALYSIS: Uses OpenAI GPT-4 to analyze sentiment, categorize feedback, and determine required actions. Adjust temperature for more/less creative responses.",
      "position": [
        -1460,
        -40
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini",
          "cachedResultName": "GPT-4O-MINI"
        },
        "options": {
          "temperature": 0.3
        },
        "messages": {
          "values": [
            {
              "role": "system",
              "content": "You are an expert customer feedback analyzer. Analyze the provided customer review and return a JSON response with the following structure:\n\n{\n  \"sentiment\": \"positive/negative/neutral\",\n  \"sentiment_score\": 0.85,\n  \"category\": \"YOUR_AWS_SECRET_KEY_HERE\",\n  \"priority\": \"high/medium/low\",\n  \"department\": \"customer_support/product_team/marketing/sales\",\n  \"action_required\": true/false,\n  \"key_insights\": [\"insight1\", \"insight2\"],\n  \"suggested_response_tone\": \"apologetic/grateful/informative\",\n  \"keywords\": [\"keyword1\", \"keyword2\"],\n  \"summary\": \"Brief summary of the review\"\n}\n\nBe accurate and consistent in your analysis."
            },
            {
              "content": "=Please analyze this customer review:\n\nReview: {{ $json.review_text }}\nCustomer: {{ $json.customer_name }}\nRating: {{ $json.rating }}/5\nProduct/Service: {{ $json.product_service }}"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "c41226f7-9ccc-4852-bccd-b64f7e09aff5",
      "name": "\ud83e\uddee Data Processing",
      "type": "n8n-nodes-base.code",
      "notes": "DATA PROCESSING: Parses AI response, prepares task data, and sets routing flags. Modify the create_*_task flags to enable/disable integrations.",
      "position": [
        -1084,
        -40
      ],
      "parameters": {
        "jsCode": "const aiInput = $input.first().json;\n\n// Extract original form data (passed through from previous nodes)\nconst formData = {\n  review_text: $('\ud83e\uddea Code').first().json.review_text,\n  customer_name: $('\ud83e\uddea Code').first().json.customer_name,\n  rating: $('\ud83e\uddea Code').first().json.rating,\n  product_service: $('\ud83e\uddea Code').first().json.product_service,\n  review_date: new Date().toISOString()\n};\n\n// Parse AI response - it should be a JSON string\nlet aiResponse = {};\ntry {\n  if (typeof aiInput.response === 'string') {\n    aiResponse = JSON.parse(aiInput.response);\n  } else if (aiInput.response && typeof aiInput.response === 'object') {\n    aiResponse = aiInput.response;\n  } else {\n    aiResponse = aiInput;\n  }\n} catch (error) {\n  console.error('Failed to parse AI response:', error);\n  aiResponse = {\n    sentiment: 'neutral',\n    sentiment_score: 0.5,\n    category: 'unspecified',\n    priority: 'medium',\n    department: 'customer_support',\n    action_required: true,\n    key_insights: ['Failed to analyze review'],\n    suggested_response_tone: 'informative',\n    keywords: [],\n    summary: 'Analysis failed'\n  };\n}\n\n// Safety fallback\nconst sentiment = aiResponse.sentiment ?? 'neutral';\n\n// Construct final processed output (data only)\nconst processedData = {\n  // Original data\n  review_text: formData.review_text,\n  customer_name: formData.customer_name,\n  rating: formData.rating,\n  product_service: formData.product_service,\n  review_date: formData.review_date,\n\n  // Enriched data\n  sentiment,\n  sentiment_score: aiResponse.sentiment_score ?? 0.5,\n  category: aiResponse.category ?? 'unspecified',\n  priority: aiResponse.priority ?? 'medium',\n  department: aiResponse.department ?? 'customer_support',\n  action_required: aiResponse.action_required ?? true,\n  key_insights: aiResponse.key_insights ?? [],\n  suggested_response_tone: aiResponse.suggested_response_tone ?? 'informative',\n  keywords: aiResponse.keywords ?? [],\n  summary: aiResponse.summary ?? '',\n\n  // Computed metadata\n  task_title: `Review Response: ${sentiment.toUpperCase()} - ${formData.customer_name}`,\n  task_description: `Customer Review Analysis\n\nCustomer: ${formData.customer_name}\nRating: ${formData.rating}/5\nSentiment: ${sentiment} (${aiResponse.sentiment_score ?? 'N/A'})\nCategory: ${aiResponse.category ?? 'unspecified'}\nPriority: ${aiResponse.priority ?? 'medium'}\n\nReview: \"${formData.review_text}\"\n\nKey Insights:\n${(aiResponse.key_insights ?? []).map(i => `\u2022 ${i}`).join('\\n')}\n\nSuggested Response Tone: ${aiResponse.suggested_response_tone ?? 'informative'}\n\nKeywords: ${(aiResponse.keywords ?? []).join(', ')}`,\n\n  // Due date logic\n  due_date:\n    (aiResponse.priority ?? 'medium') === 'high'\n      ? new Date(Date.now() + 1 * 24 * 60 * 60 * 1000).toISOString()\n      : (aiResponse.priority ?? 'medium') === 'medium'\n      ? new Date(Date.now() + 3 * 24 * 60 * 60 * 1000).toISOString()\n      : new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString()\n};\n\nreturn processedData;"
      },
      "typeVersion": 2
    },
    {
      "id": "cadef244-c319-4166-936a-6fb2943bdb75",
      "name": "\ud83d\udd75\ufe0f\u200d\u2642\ufe0f AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -864,
        -40
      ],
      "parameters": {
        "text": "=Create a structured task using the following customer review analysis. The output must be in valid JSON format and contain fields that are friendly for Monday.com, HubSpot, and ClickUp.\n\nRequirements:\nOutput only a JSON object.\n\nUse a clear, professional tone.\n\nEnsure the task is actionable, with proper metadata, title, description, and priority.\n\nInclude customer insights, sentiment analysis, and due date.\n\nUser Provided Data:\n{\n  \"review_text\": \"{{ $json.review_text }}\",\n  \"customer_name\": \"{{ $json.customer_name }}\",\n  \"rating\": \"{{ $json.rating }}\",\n  \"product_service\": \"{{ $json.product_service }}\",\n  \"review_date\": \"{{ $json.review_date }}\",\n  \"sentiment\": \"{{ $json.sentiment }}\",\n  \"sentiment_score\": {{ $json.sentiment_score }},\n  \"category\": \"{{ $json.category }}\",\n  \"priority\": \"{{ $json.priority }}\",\n  \"department\": \"{{ $json.department }}\",\n  \"action_required\": {{ $json.action_required }},\n  \"due_date\": \"{{ $json.due_date }}\",\n  \"task_title\": \"{{ $json.task_title }}\",\n  \"task_description\": `{{ $json.task_description }}`\n}\n\nOutput format (example structure):\n\n{\n  \"title\": \"Review Response: POSITIVE - John Doe\",\n  \"description\": \"Clear, professional task description with insights and action items.\",\n  \"priority\": \"High\",\n  \"due_date\": \"2025-08-08\",\n  \"metadata\": {\n    \"customer_name\": \"John Doe\",\n    \"rating\": 5,\n    \"product_service\": \"Product X\",\n    \"review_date\": \"2025-08-05\",\n    \"sentiment\": \"positive\",\n    \"sentiment_score\": 0.95,\n    \"category\": \"delivery\",\n    \"department\": \"customer_support\",\n    \"action_required\": true\n  }\n}\n\nMake sure:\n\nThe order is exactly maintained as above.\n\nNo additional fields are included.\n\nNo surrounding commentary or formatting is added.\n\nReturn the result as a pure JSON object (no markdown, no explanations, no code block formatting like ```json).\n\nOutput is only the JSON object.",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 2
    },
    {
      "id": "c35348dd-0830-465a-ac90-d65cebb7de98",
      "name": "\ud83d\udcac OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -776,
        180
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "93e07162-0348-49f4-88bc-73aab6d34584",
      "name": "\ud83d\uddd3\ufe0f Create Monday.com Item",
      "type": "n8n-nodes-base.mondayCom",
      "notes": "MONDAY.COM INTEGRATION: Creates item in Monday.com board. Update BOARD_ID and column IDs to match your board structure.",
      "position": [
        -488,
        -240
      ],
      "parameters": {
        "name": "=Feedback",
        "boardId": "2054150933",
        "groupId": "group_mktjh98q",
        "resource": "boardItem",
        "additionalFields": {
          "columnValues": "={{ $json.output }}"
        }
      },
      "credentials": {
        "mondayComApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "e934b992-6063-4178-a3e3-71e78bc087fa",
      "name": "\u2705 Create ClickUp Task",
      "type": "n8n-nodes-base.clickUp",
      "notes": "CLICKUP INTEGRATION: Creates task in ClickUp with priority mapping and keyword tagging. Update LIST_ID with your ClickUp list.",
      "position": [
        -488,
        -40
      ],
      "parameters": {
        "list": "901610042700",
        "name": "=Feedback",
        "team": "90161084725",
        "space": "90164686646",
        "folder": "90166023626",
        "authentication": "oAuth2",
        "additionalFields": {
          "customFieldsJson": "={{ $json.output }}"
        }
      },
      "credentials": {
        "clickUpOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "386f2bf4-948e-4032-b4f4-2ea46a30d401",
      "name": "\ud83d\udccc Create HubSpot Task",
      "type": "n8n-nodes-base.hubspot",
      "notes": "HUBSPOT INTEGRATION: Creates task in HubSpot CRM with priority mapping and due date. Requires HubSpot API key in credentials.",
      "position": [
        -488,
        160
      ],
      "parameters": {
        "type": "task",
        "metadata": {
          "body": "={{ $json.output }}"
        },
        "resource": "engagement",
        "authentication": "appToken",
        "additionalFields": {}
      },
      "credentials": {
        "hubspotAppToken": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "4e46e5a1-e1ab-40c6-bbe4-67e6f072b3d4",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1940,
        -360
      ],
      "parameters": {
        "width": 440,
        "height": 700,
        "content": "## Nodes Covered: On form submission, Code\n\n\ud83d\udcdd Note:\n\nFORM CAPTURE & PRE-PROCESSING\n\n*Captures user feedback via a dynamic form and extracts the input fields (Name, Message, Rating, and Product Service). Passes clean, structured data to the AI for further analysis. This is the entry point for customer sentiment workflows.*"
      },
      "typeVersion": 1
    },
    {
      "id": "f60c29cf-8f8d-4451-aa75-846a01a8ec7d",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1480,
        -360
      ],
      "parameters": {
        "color": 5,
        "width": 540,
        "height": 700,
        "content": "## Nodes Covered: OpenAI Analysis, Data Processing\n\n\ud83e\udde0 Note:\n\nAI-DRIVEN FEEDBACK INTELLIGENCE\n\n*Uses GPT-4 to analyze the customer review for sentiment, category, department, priority, and more. Then formats this output with due dates, task descriptions, and metadata. Ensures consistency and fallback handling for failed AI responses.*"
      },
      "typeVersion": 1
    },
    {
      "id": "7ab41f5f-ca38-4fcc-aa8d-e14844dc7c71",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -920,
        -360
      ],
      "parameters": {
        "color": 3,
        "width": 340,
        "height": 700,
        "content": "## Nodes Covered: AI Agent, OpenAI Chat Model\n\n\ud83d\udcca Note:\n\nSTRUCTURED OUTPUT FOR TASK SYSTEMS\n\n*Transforms enriched AI response into a clean, JSON-only object ready to be pushed into Monday.com, ClickUp, and HubSpot. Maintains strict field order, tone, and formatting. Acts as a bridge between data processing and task integrations.*"
      },
      "typeVersion": 1
    },
    {
      "id": "3ec93f97-6d95-42fa-b4fc-242d31827a63",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -560,
        -540
      ],
      "parameters": {
        "color": 4,
        "width": 440,
        "height": 880,
        "content": "## Nodes Covered: Create Monday.com Item, Create ClickUp Task, Create HubSpot Task\n\n\ud83d\udcec Note:\n\nMULTI-PLATFORM TASK CREATION\n\n*Automatically sends analyzed feedback to Monday.com, ClickUp, and HubSpot with consistent metadata, due dates, and formatting. Integrations are toggleable as needed.*"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "da2bc46c-abcc-4537-bd0c-ea048e7e42e3",
  "connections": {
    "\ud83e\uddea Code": {
      "main": [
        [
          {
            "node": "\ud83e\udde0 OpenAI Analysis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83e\udde0 OpenAI Analysis": {
      "main": [
        [
          {
            "node": "\ud83e\uddee Data Processing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83e\uddee Data Processing": {
      "main": [
        [
          {
            "node": "\ud83d\udd75\ufe0f\u200d\u2642\ufe0f AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\udcac OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "\ud83d\udd75\ufe0f\u200d\u2642\ufe0f AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "\u2705 Create ClickUp Task": {
      "main": [
        []
      ]
    },
    "\ud83d\udcdd On form submission": {
      "main": [
        [
          {
            "node": "\ud83e\uddea Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\udccc Create HubSpot Task": {
      "main": [
        []
      ]
    },
    "\ud83d\udd75\ufe0f\u200d\u2642\ufe0f AI Agent": {
      "main": [
        [
          {
            "node": "\ud83d\uddd3\ufe0f Create Monday.com Item",
            "type": "main",
            "index": 0
          },
          {
            "node": "\u2705 Create ClickUp Task",
            "type": "main",
            "index": 0
          },
          {
            "node": "\ud83d\udccc Create HubSpot Task",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\uddd3\ufe0f Create Monday.com Item": {
      "main": [
        []
      ]
    }
  }
}

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 automates customer feedback management by capturing reviews through a form, analyzing them with AI for sentiment and insights, and then creating structured tasks across Monday.com, ClickUp, and HubSpot. It ensures that customer concerns are categorized,…

Source: https://n8n.io/workflows/7721/ — 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

🎯 Create viral TikToks, Shorts, Reels, podcasts, and ASMR videos in minutes — all on autopilot.

OpenAI, HTTP Request, Form Trigger +7
AI & RAG

🧠 Automate end-to-end SEO blog creation and WordPress publishing using a GPT-5 multi-agent workflow with real-time research, metadata generation, and optional featured images.

Output Parser Structured, HTTP Request, OpenAI +10
AI & RAG

This is an automated blog post generation system that: Researches topics using AI agents and web search tools Writes complete blog posts with proper SEO structure Generates custom images for each post

Output Parser Structured, Google Gemini Chat, HTTP Request Tool +11
AI & RAG

📄 Documentation: Notion Guide

Telegram Trigger, HTTP Request, Agent +8
AI & RAG

This template enables natural-language-driven automation using Bright Data's MCP tools, triggered directly by new leads in HubSpot. It dynamically extracts and executes the right tool based on lead co

Google Sheets Trigger, Output Parser Structured, Output Parser Autofixing +7