This workflow corresponds to n8n.io template #3706 — we link there as the canonical source.
This workflow follows the Agent → Chainsummarization 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 →
{
"nodes": [
{
"id": "d681d557-cb02-4fb1-9871-bfae504992ca",
"name": "HubSpot",
"type": "n8n-nodes-base.hubspot",
"notes": "Add meeting notes in the contact form",
"position": [
260,
40
],
"parameters": {
"type": "meeting",
"metadata": {
"body": "={{ $('Summarization').item.json.response.text }}",
"title": "New meeting"
},
"resource": "engagement",
"authentication": "oAuth2",
"additionalFields": {
"associations": {
"contactIds": "={{ $json.properties.hs_object_id }}"
}
}
},
"credentials": {
"hubspotOAuth2Api": {
"name": "<your credential>"
}
},
"notesInFlow": true,
"typeVersion": 2.1
},
{
"id": "e4849449-3464-4deb-a9be-07b3d0bb2d56",
"name": "HubSpot1",
"type": "n8n-nodes-base.hubspot",
"notes": "Search for the id",
"position": [
20,
40
],
"parameters": {
"operation": "search",
"authentication": "oAuth2",
"filterGroupsUi": {
"filterGroupsValues": [
{
"filtersUi": {
"filterValues": [
{
"value": "={{ $('Enter Client Transcript').item.json['client email'] }}",
"propertyName": "email|string"
}
]
}
}
]
},
"additionalFields": {}
},
"credentials": {
"hubspotOAuth2Api": {
"name": "<your credential>"
}
},
"notesInFlow": true,
"typeVersion": 2.1
},
{
"id": "16ac22b7-62fd-429c-b766-5ffe503a3231",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-60,
-80
],
"parameters": {
"color": 4,
"width": 540,
"height": 280,
"content": "## Save the data to Hubspot\n- Search for the client ID based on his email\n- Upload the summarized conversation as meeting notes"
},
"typeVersion": 1
},
{
"id": "4f51bfc1-8270-4e04-b395-f4ceed9129a4",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-60,
220
],
"parameters": {
"color": 4,
"width": 540,
"height": 520,
"content": "## Router agent\nMakes decisions with the help of an LLM \n- Analyzes the content\n- Decides which part of the transcript is relevant to the different departments\n- Sends the emails to the departments\n"
},
"typeVersion": 1
},
{
"id": "96142f55-cbb4-47e9-a44e-b4f783eeeeb5",
"name": "Router Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"notes": "Route the client feedback topics to the relevant department ",
"position": [
20,
420
],
"parameters": {
"text": "={{ $('Enter Client Transcript').item.json['client conversation'] }}",
"options": {
"systemMessage": "=You are provided with some client-company conversation and should decide who has to be informed about the feedback. Always only inform one person. Those are your options: \n- It's about a product, send an email to {{ $('Define routing emails here').item.json['Product Email'] }}\n- It's about an invoicing problem, send an email to {{ $('Define routing emails here').item.json['Administrative Email'] }}\n- It's \u00a0related to a problem with the product, send an email to {{ $('Define routing emails here').item.json['Support Email'] }}\n- It's commercial related, send an email to {{ $('Define routing emails here').item.json['Commercial Email'] }}\n\nAdd the email of the person (\"{{ $('Enter Client Transcript').item.json['client email'] }}\") at the beginning of the text preceded by \"FROM CLIENT: \"\nUse the Mailjet tool to inform each of the most related department. Provide mailjet with a subject, an email, and the email body formated as html which is the client conversation itself."
},
"promptType": "define"
},
"notesInFlow": true,
"typeVersion": 1.8
},
{
"id": "0485667e-befa-4b69-998f-26e1b8a9f67f",
"name": "Summarization",
"type": "@n8n/n8n-nodes-langchain.chainSummarization",
"notes": "The transcript is summarized",
"position": [
-360,
200
],
"parameters": {
"options": {
"summarizationMethodAndPrompts": {
"values": {
"prompt": "=Summarize the following Converstaion in 2-3 sentences:\n\n\" {{ $json['client conversation'] }}\"\n\nJust output the summarized conversation and nothing else. Use the same language as the input",
"summarizationMethod": "stuff"
}
}
}
},
"notesInFlow": true,
"typeVersion": 2,
"alwaysOutputData": false
},
{
"id": "bb2826b5-18ec-4df7-990d-7fe99df759c8",
"name": "Enter Client Transcript",
"type": "n8n-nodes-base.formTrigger",
"notes": "The transcript can come from fireflies or Team etc.",
"position": [
-800,
200
],
"parameters": {
"options": {
"appendAttribution": false
},
"formTitle": "Automate Client issue",
"formFields": {
"values": [
{
"fieldType": "email",
"fieldLabel": "client email",
"requiredField": true
},
{
"fieldType": "textarea",
"fieldLabel": "client conversation",
"requiredField": true
}
]
}
},
"notesInFlow": true,
"typeVersion": 2.2
},
{
"id": "4ec42125-16dd-4c05-8816-3f3d986335ac",
"name": "Form",
"type": "n8n-nodes-base.form",
"position": [
360,
420
],
"parameters": {
"options": {},
"operation": "completion",
"completionTitle": "Ouput",
"completionMessage": "={{ $json.output }}"
},
"typeVersion": 1
},
{
"id": "5bdd3903-06f3-4c21-bc57-7127cfc6e433",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-272,
420
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "1abb54f8-0f65-4280-8b35-4dc7c3b1bb07",
"name": "Define routing emails here",
"type": "n8n-nodes-base.set",
"position": [
-580,
200
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "099d5326-3452-47b8-9dc0-acc0e6fd951e",
"name": "Support Email",
"type": "string",
"value": "user@example.com"
},
{
"id": "4ed84290-dbf7-47f7-8693-4f95e0c2fd7e",
"name": "Administrative Email",
"type": "string",
"value": "user@example.com"
},
{
"id": "c39edf1f-b8e0-48ca-929c-294bbac52837",
"name": "Product Email",
"type": "string",
"value": "user@example.com"
},
{
"id": "614d4a5c-c9f2-4d82-bfcb-cfdcc8a4b07d",
"name": "Commercial Email",
"type": "string",
"value": "user@example.com"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "c2d345e2-ce32-4337-91d5-ae8bf54e3d25",
"name": "Gmail",
"type": "n8n-nodes-base.gmailTool",
"position": [
180,
640
],
"parameters": {
"sendTo": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('To', ``, 'string') }}",
"message": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', ``, 'string') }}",
"options": {
"appendAttribution": false
},
"subject": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Subject', ``, 'string') }}"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "11210b0c-c33d-4c40-b20c-a8d3a1761863",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-660,
100
],
"parameters": {
"color": 4,
"width": 260,
"height": 260,
"content": "## Set the emails HERE\nFor each responsible in your company."
},
"typeVersion": 1
},
{
"id": "0d2e217d-5c3a-4fdb-a60e-091a50de553b",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-860,
-120
],
"parameters": {
"width": 460,
"height": 200,
"content": "## Contact me\n- If you need any modification to this workflow\n- if you need some help with this workflow\n- Or if you need any workflow in n8n, Make, or Langchain / Langgraph\n\nWrite to me: [thomas@pollup.net](mailto:thomas@pollup.net)"
},
"typeVersion": 1
},
{
"id": "e7e40c88-374b-49d4-8c66-b8543a9376ea",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-860,
100
],
"parameters": {
"color": 4,
"width": 180,
"height": 260,
"content": "## Starting form\n"
},
"typeVersion": 1
}
],
"connections": {
"Gmail": {
"ai_tool": [
[
{
"node": "Router Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"HubSpot1": {
"main": [
[
{
"node": "HubSpot",
"type": "main",
"index": 0
}
]
]
},
"Router Agent": {
"main": [
[
{
"node": "Form",
"type": "main",
"index": 0
}
]
]
},
"Summarization": {
"main": [
[
{
"node": "Router Agent",
"type": "main",
"index": 0
},
{
"node": "HubSpot1",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Summarization",
"type": "ai_languageModel",
"index": 0
},
{
"node": "Router Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Enter Client Transcript": {
"main": [
[
{
"node": "Define routing emails here",
"type": "main",
"index": 0
}
]
]
},
"Define routing emails here": {
"main": [
[
{
"node": "Summarization",
"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.
gmailOAuth2hubspotOAuth2ApiopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow is designed for Customer Satisfaction Managers (CSM), sales professionals, and operations managers who need to automate the analysis of client transcripts, save summarized notes to HubSpot, and route relevant feedback to the appropriate departments via email.
Source: https://n8n.io/workflows/3706/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Form Stickynote. Uses hubspot, stickyNote, agent, chainSummarization. Event-driven trigger; 14 nodes.
Job Applying Agent. Uses formTrigger, agent, lmChatOpenAi, gmailTool. Event-driven trigger; 15 nodes.
This workflow serves as a comprehensive "Workflow Nodes SEO & Documentation Generator". It uses AI to analyze, rename, and document n8n workflows, offering a streamlined way to optimize workflow reada
📄 Documentation: Notion Guide
Get a 360 Social media presence report for a person