This workflow corresponds to n8n.io template #16264 — we link there as the canonical source.
This workflow follows the Agent → Datatable 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 →
{
"id": "prFEYsBm2LWVYgfV",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Investor Behavior Tracker",
"tags": [],
"nodes": [
{
"id": "a65746ff-25b9-400f-805e-66d1db37d261",
"name": "Aggregate filtered news",
"type": "n8n-nodes-base.aggregate",
"position": [
-64,
-128
],
"parameters": {
"options": {},
"fieldsToAggregate": {
"fieldToAggregate": [
{
"fieldToAggregate": "description"
}
]
}
},
"typeVersion": 1
},
{
"id": "9dfd9c90-e173-4aa5-acfb-982de91909f1",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
624,
192
],
"parameters": {
"text": "=You are an expert investment behavior analyst specializing in identifying emotional patterns in investor decisions.\n\nYour task is to generate a concise, personalized email that helps a user reflect on their recent investment action. I have provided you Index fund news summary which consist of recent news about index fund, I have also provided you user's action which can be [buy/sell], its reason for action, and the index fund name\n\n---\n\n### INPUT DATA:\n\n* Index fund news summary: [ {{ $json.description }} ]\n* Action: {{ $input.last().json.action }}\n* Reason: {{ $input.last().json.reason }}\n* Index fund name: {{ $input.last().json.market_type }}\n* Id: {{ $input.last().json.id }}\n---\n\n### ANALYSIS INSTRUCTIONS:\n\n1. Identify the likely behavioral driver behind the action:\n\n * Fear \u2192 panic selling, risk avoidance\n * Greed \u2192 chasing gains, buying highs\n * News \u2192 reactive decision-making\n * Strategy \u2192 planned/rational decision\n * Gut Feeling \u2192 impulsive behavior\n\n2. Connect the action with the market context using the description.\n\n3. Subtly assess whether the decision appears:\n\n * Emotion-driven\n * Reactionary\n * Or disciplined/strategic\n\n4. Do NOT strongly judge the user. Keep the tone neutral, supportive, and reflective.\n\n---\n\n### STYLE RULES:\n\n* Avoid generic phrases\n* Avoid repeating the exact input wording\n* Use natural, human tone\n* Do NOT include disclaimers\n* Be specific but not absolute (use words like \"may\", \"can\", \"often\")\n\n---\n\n### Your Task:\n1. Use mail tool to send email.\n2. Decide email subject on your own.\n3. You have to send mail to: errorcommits@mailinator.com\n4. Try to keep email body short as you need to provide instant feedback only, which can be in one line.\n5. Send same email body message to slack channel, use slack tool, and make sure to use it only once\n---\n\n### Output format:\n[\n response : {\n \"to_email\": <email_here>,\n \"subject\": <subject here>\n \"output\": <instant feedback message here>,\n \"id\": <id which was provided>\n }\n]",
"options": {},
"promptType": "define"
},
"executeOnce": true,
"typeVersion": 3.1
},
{
"id": "12823f36-e979-4ce2-8f14-edd6c71ec88a",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1136,
64
],
"parameters": {
"color": 7,
"width": 608,
"height": 288,
"content": "## Take input from user & save\n- Action [buy/sell]\n- Reason\n- Market type\n- Save to data table"
},
"typeVersion": 1
},
{
"id": "3d2d6675-474b-434a-b4a1-f620abb2874a",
"name": "Investor Behavior Tracker Form",
"type": "n8n-nodes-base.formTrigger",
"position": [
-976,
208
],
"parameters": {
"options": {},
"formTitle": "Investor Behavior Tracker",
"formFields": {
"values": [
{
"fieldName": "action",
"fieldType": "dropdown",
"fieldLabel": "Action",
"fieldOptions": {
"values": [
{
"option": "Buy"
},
{
"option": "Sell"
}
]
},
"requiredField": true
},
{
"fieldName": "time",
"fieldType": "hiddenField",
"fieldValue": "={{ $now }}"
},
{
"fieldName": "reason",
"fieldType": "dropdown",
"fieldLabel": "Reason of Action",
"fieldOptions": {
"values": [
{
"option": "Fear"
},
{
"option": "Greed"
},
{
"option": "News insights"
},
{
"option": "Strategy"
},
{
"option": "Gut Feeling"
}
]
},
"requiredField": true
},
{
"fieldName": "market_type",
"fieldType": "dropdown",
"fieldLabel": "Market Name",
"fieldOptions": {
"values": [
{
"option": "Bombay Stock Exchange"
},
{
"option": "National Stock Exchange"
}
]
},
"requiredField": true
}
]
},
"formDescription": "Track your behavior and get insights"
},
"typeVersion": 2.4
},
{
"id": "d74eb001-739d-490f-9571-792fb9bb3f7f",
"name": "Fetch market news",
"type": "n8n-nodes-base.httpRequest",
"position": [
-512,
-128
],
"parameters": {
"url": "https://newsapi.org/v2/everything",
"options": {},
"sendQuery": true,
"authentication": "predefinedCredentialType",
"queryParameters": {
"parameters": [
{
"name": "q",
"value": "={{ $json.market_type }}"
}
]
},
"nodeCredentialType": "httpMultipleHeadersAuth"
},
"credentials": {
"httpMultipleHeadersAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.3
},
{
"id": "48cd925e-bef2-41a5-a216-4358821f2db5",
"name": "Filter required news",
"type": "n8n-nodes-base.code",
"position": [
-288,
-128
],
"parameters": {
"jsCode": "let arr = $input.first().json.articles\n// return arr.map((art) => art.description)\nreturn arr.map(art => {\n return { json: { description: art.description } };\n});"
},
"typeVersion": 2
},
{
"id": "6f3ba6a3-84b2-44dd-8c95-b824c12e797f",
"name": "Insert form data to table",
"type": "n8n-nodes-base.dataTable",
"position": [
-688,
208
],
"parameters": {
"columns": {
"value": {},
"schema": [
{
"id": "action",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "action",
"defaultMatch": false
},
{
"id": "time",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "time",
"defaultMatch": false
},
{
"id": "reason",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "reason",
"defaultMatch": false
},
{
"id": "submittedAt",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "submittedAt",
"defaultMatch": false
},
{
"id": "formMode",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "formMode",
"defaultMatch": false
}
],
"mappingMode": "autoMapInputData",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"dataTableId": {
"__rl": true,
"mode": "list",
"value": "93nvmuyP7a0Mzqy5",
"cachedResultUrl": "/projects/XkgejKSYcPusPWyB/datatables/93nvmuyP7a0Mzqy5",
"cachedResultName": "PT-Parth_Panchal_Investor_Behavior_Tracker"
}
},
"typeVersion": 1.1
},
{
"id": "d5214866-9cb8-416e-b430-1f81475d7dce",
"name": "Merge News and form data",
"type": "n8n-nodes-base.merge",
"position": [
256,
192
],
"parameters": {},
"typeVersion": 3.2
},
{
"id": "59b0d5a5-73aa-4021-b2ad-ae93e071d745",
"name": "Update row with feedback",
"type": "n8n-nodes-base.dataTable",
"position": [
1776,
192
],
"parameters": {
"columns": {
"value": {
"instant_feedback": "={{ $json.instant_feedback }}"
},
"schema": [
{
"id": "action",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "action",
"defaultMatch": false
},
{
"id": "time",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "time",
"defaultMatch": false
},
{
"id": "reason",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "reason",
"defaultMatch": false
},
{
"id": "submittedAt",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "submittedAt",
"defaultMatch": false
},
{
"id": "formMode",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "formMode",
"defaultMatch": false
},
{
"id": "instant_feedback",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "instant_feedback",
"defaultMatch": false
},
{
"id": "market_type",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "market_type",
"defaultMatch": false
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"filters": {
"conditions": [
{
"keyValue": "={{ $json.id }}"
}
]
},
"options": {},
"operation": "update",
"dataTableId": {
"__rl": true,
"mode": "list",
"value": "93nvmuyP7a0Mzqy5",
"cachedResultUrl": "/projects/XkgejKSYcPusPWyB/datatables/93nvmuyP7a0Mzqy5",
"cachedResultName": "PT-Parth_Panchal_Investor_Behavior_Tracker"
}
},
"typeVersion": 1.1
},
{
"id": "27ef050c-deff-4e2c-90d2-d22ede5b0de0",
"name": "Retrieve latest feedback",
"type": "n8n-nodes-base.code",
"position": [
1152,
192
],
"parameters": {
"jsCode": "return {'output': $input.last().json.output}"
},
"typeVersion": 2
},
{
"id": "ccef0805-9d42-42af-8ffb-fb0784dc5c2f",
"name": "Format feedback output",
"type": "n8n-nodes-base.code",
"position": [
1376,
192
],
"parameters": {
"jsCode": "const raw = $input.first().json.output;\n\nconst cleaned = raw.replace(/```json/g, '').replace(/```/g, '').trim();\n\nconst parsed = JSON.parse(cleaned);\n\nreturn parsed.map(item => ({ json: item }));"
},
"typeVersion": 2
},
{
"id": "925deb93-2c4f-4ddc-a07d-b6e968d2921b",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-576,
-256
],
"parameters": {
"color": 7,
"width": 672,
"height": 288,
"content": "## Fetch market news\n- Fetch market news and aggregate all news"
},
"typeVersion": 1
},
{
"id": "ee844d6c-60e6-4dff-b9e8-8c7d31baf279",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
176,
-16
],
"parameters": {
"color": 7,
"width": 272,
"height": 400,
"content": "## Merge Form data & news"
},
"typeVersion": 1
},
{
"id": "afb0ca9e-5e7d-43ed-a4b2-a73ee7b0f33b",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
528,
0
],
"parameters": {
"color": 7,
"width": 448,
"height": 784,
"content": "## Generate instant feedback from AI\n- Feed market news\n- User's actions"
},
"typeVersion": 1
},
{
"id": "7bd2cf1f-555a-48ea-a048-69eecb1678e8",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1056,
64
],
"parameters": {
"color": 7,
"width": 976,
"height": 288,
"content": "## Filter and Format AI response & save\n- Filter data from AI output\n- Format to valid JSON\n- Save instant feedback to data table"
},
"typeVersion": 1
},
{
"id": "1e07a7be-9a7f-49bc-88dd-f6ac755f0ebc",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1808,
64
],
"parameters": {
"width": 640,
"height": 896,
"content": "# Investor Behavior Tracker - Overview\n\n1. Capture user input (Action, Reason, Index Fund)\n2. Fetch relevant market/news context\n3. Generate AI-based behavioral insight (short, 1-line)\n4. Send instant feedback via email & slack\n5. Store input + news + AI feedback in DB\n\n## Separate workflow runs weekly:\n\n* Aggregate last 7 days data\n* Detect behavioral patterns\n* Generate and send weekly report\n\n# Investor Behavior Report Workflow\n\n- Fetch all user logs and instant feedback from the last 7 days\n- Aggregate data to detect patterns in actions, reasons, and market context\n- Identify behavioral trends (fear-driven selling, greed-driven buying, news reactions, strategy consistency)\n- Generate a concise AI-powered weekly report\n- Send email with summary, key patterns, and actionable suggestions\n\nRuns automatically every 7 days\nUses instant feedback as supporting signals, not final conclusions"
},
"typeVersion": 1
},
{
"id": "fc7a7c19-5052-46f9-aef8-dffcfe8f3e02",
"name": "Edit Fields",
"type": "n8n-nodes-base.set",
"position": [
1584,
192
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "458ca2bb-e77b-4a35-9e09-d16df0fb0579",
"name": "instant_feedback",
"type": "string",
"value": "={{ $json.response.output }}"
},
{
"id": "46ec6c64-9af1-401f-86bc-a92fffdc8cad",
"name": "id",
"type": "number",
"value": "={{ $json.response.id }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "ff3328f4-0df6-405c-b831-e9de24573e1b",
"name": "Gemini",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
592,
416
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "42acb4c2-997f-4d15-947b-4287e04d0c88",
"name": "Send Gmail",
"type": "n8n-nodes-base.gmailTool",
"position": [
656,
592
],
"parameters": {
"sendTo": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('To', ``, 'string') }}",
"message": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', ``, 'string') }}",
"options": {},
"subject": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Subject', ``, 'string') }}",
"emailType": "text"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.2
},
{
"id": "9324d5e6-bba8-41a1-98f2-ca6b30afc9fc",
"name": "Send slack alert",
"type": "n8n-nodes-base.slackTool",
"position": [
848,
592
],
"parameters": {
"text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message_Text', ``, 'string') }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": "C0AP6AD7069",
"cachedResultName": "all-group-d"
},
"otherOptions": {}
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.4
},
{
"id": "7416d04b-993c-4016-ae06-6646bc0296ae",
"name": "Execute at every weekend",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-1056,
784
],
"parameters": {
"rule": {
"interval": [
{
"field": "weeks"
}
]
}
},
"typeVersion": 1.3
},
{
"id": "dd23f832-52cf-4a43-82ad-3afff1e429c6",
"name": "Retrieve all data from data table",
"type": "n8n-nodes-base.dataTable",
"position": [
-832,
784
],
"parameters": {
"operation": "get",
"returnAll": true,
"dataTableId": {
"__rl": true,
"mode": "list",
"value": "93nvmuyP7a0Mzqy5",
"cachedResultUrl": "/projects/XkgejKSYcPusPWyB/datatables/93nvmuyP7a0Mzqy5",
"cachedResultName": "PT-Parth_Panchal_Investor_Behavior_Tracker"
}
},
"typeVersion": 1.1
},
{
"id": "16c5c98f-d5c1-4dec-a2f3-a6c0d4e576b3",
"name": "Get last 7 items",
"type": "n8n-nodes-base.limit",
"position": [
-608,
784
],
"parameters": {
"keep": "lastItems",
"maxItems": 7
},
"typeVersion": 1
},
{
"id": "c0ebb5c2-aa1b-4a2d-91b9-4a795e6f9c85",
"name": "Send a message in Slack",
"type": "n8n-nodes-base.slackTool",
"position": [
208,
976
],
"parameters": {
"text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message_Text', ``, 'string') }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": "C0AP6AD7069",
"cachedResultName": "all-group-d"
},
"otherOptions": {}
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.4
},
{
"id": "d66424d6-6c4c-4343-b837-5be3caa1e133",
"name": "Groq Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGroq",
"position": [
64,
976
],
"parameters": {
"model": "llama-3.3-70b-versatile",
"options": {}
},
"credentials": {
"groqApi": {
"name": "<your credential>"
}
},
"executeOnce": true,
"typeVersion": 1
},
{
"id": "f1395da7-7b7d-4b20-b0be-7db7302a7d91",
"name": "retrieve required fields",
"type": "n8n-nodes-base.set",
"position": [
-384,
784
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "cab191b0-3f26-44a7-9df4-d483ed75aad2",
"name": "action",
"type": "string",
"value": "={{ $json.action }}"
},
{
"id": "32ddd685-71dd-4a2d-a8af-4588d90ab702",
"name": "reason",
"type": "string",
"value": "={{ $json.reason }}"
},
{
"id": "39bb791f-9d06-450c-a416-9f8c1961b346",
"name": "instant_feedback",
"type": "string",
"value": "={{ $json.instant_feedback }}"
},
{
"id": "7a5d6562-d16f-4c22-9619-dbd8a33b1870",
"name": "market_type",
"type": "string",
"value": "={{ $json.market_type }}"
},
{
"id": "652f0e59-adbc-468a-b723-db35432ae657",
"name": "submittedAt",
"type": "string",
"value": "={{ $json.submittedAt }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "fdfdccaa-dc17-4930-b13c-85cdd3e2a5cc",
"name": "aggregate values",
"type": "n8n-nodes-base.code",
"position": [
-160,
784
],
"parameters": {
"jsCode": "let feedbacks = []\nlet actions = []\nlet reasons = []\nlet index_funds = []\nlet dates = []\n\nlet i = 0\n\nwhile(i < $input.all().length) {\n \n feedbacks[i] = $input.all()[i].json.instant_feedback\n actions[i] = $input.all()[i].json.action\n reasons[i] = $input.all()[i].json.reason\n index_funds[i] = $input.all()[i].json.market_type\n dates[i] = $input.all()[i].json.submittedAt\n \n i++\n}\n\nreturn {\n 'feedbacks': feedbacks,\n 'actions': actions,\n 'reasons': reasons,\n 'index_funds': index_funds,\n 'dates': dates\n}"
},
"typeVersion": 2
},
{
"id": "58aff244-800d-41a6-8ad3-5172d9049198",
"name": "AI Agent1",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
64,
784
],
"parameters": {
"text": "=You are an expert investment behavior analyst specializing in identifying patterns in investor decisions over time.\n\nYour task is to analyze a user's past 7 days of investment activity and generate a concise weekly behavioral report.\n\n---\n\n### INPUT DATA:\n\nYou will receive a list of user logs. Each log contains:\n\n* Action (Buy/Sell)\n* Reason (Fear, Greed, News, Strategy, Gut Feeling)\n* Index fund name/market_type\n* Instant feedback (short insight already generated)\n\nData:\n{{ JSON.stringify($input.all().map(item => item.json)) }}\n\n---\n\n### ANALYSIS INSTRUCTIONS:\n\n1. Identify behavioral patterns across all entries:\n\n * Repeated fear-based selling\n * Greed-driven buying\n * News-reactive decisions\n * Strategy-based consistency\n\n2. Detect timing tendencies if possible:\n\n * Selling during dips\n * Buying during highs\n * Frequent reaction to volatility\n\n3. Evaluate decision quality:\n\n * Emotion-driven vs strategy-driven ratio\n * Consistency vs impulsiveness\n\n4. Use instant feedback entries as supporting signals, not as final conclusions.\n\n5. Use all the feedback and generate a summary and tell user their behavior of investment like \"are they selling or buying more because of fear\", \"are they strategic\" similar to that.\n\n---\n\n### Your Task:\n\n1. Use slack tool to send message.\n2. Decide subject on your own.\n4. Try to keep body short as you need to provide instant feedback only, which can be in one line also.",
"options": {},
"promptType": "define"
},
"executeOnce": true,
"typeVersion": 3.1
},
{
"id": "b00bab29-608c-4cda-83c8-bd4e1f08a8c9",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1136,
592
],
"parameters": {
"color": 7,
"height": 368,
"content": "## Execute at every weekend"
},
"typeVersion": 1
},
{
"id": "1940cea2-6862-4529-b2bd-151519a6aa53",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-880,
592
],
"parameters": {
"color": 7,
"width": 848,
"height": 368,
"content": "## Retrieve last 7 days data\n- get all data\n- keep last 7 entries\n- format and aggregate"
},
"typeVersion": 1
},
{
"id": "0bd5ae5b-ee7a-4cdb-bbed-91e17ffcb1fa",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
16,
592
],
"parameters": {
"color": 7,
"width": 368,
"height": 544,
"content": "## Generate summary and send report on slack "
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"availableInMCP": false,
"executionOrder": "v1"
},
"versionId": "69f14a81-2740-4ad8-8702-b820c09ae483",
"connections": {
"Gemini": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "Retrieve latest feedback",
"type": "main",
"index": 0
}
]
]
},
"Send Gmail": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "Update row with feedback",
"type": "main",
"index": 0
}
]
]
},
"Groq Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent1",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Get last 7 items": {
"main": [
[
{
"node": "retrieve required fields",
"type": "main",
"index": 0
}
]
]
},
"Send slack alert": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"aggregate values": {
"main": [
[
{
"node": "AI Agent1",
"type": "main",
"index": 0
}
]
]
},
"Fetch market news": {
"main": [
[
{
"node": "Filter required news",
"type": "main",
"index": 0
}
]
]
},
"Filter required news": {
"main": [
[
{
"node": "Aggregate filtered news",
"type": "main",
"index": 0
}
]
]
},
"Format feedback output": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"Aggregate filtered news": {
"main": [
[
{
"node": "Merge News and form data",
"type": "main",
"index": 0
}
]
]
},
"Send a message in Slack": {
"ai_tool": [
[
{
"node": "AI Agent1",
"type": "ai_tool",
"index": 0
}
]
]
},
"Execute at every weekend": {
"main": [
[
{
"node": "Retrieve all data from data table",
"type": "main",
"index": 0
}
]
]
},
"Merge News and form data": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Retrieve latest feedback": {
"main": [
[
{
"node": "Format feedback output",
"type": "main",
"index": 0
}
]
]
},
"retrieve required fields": {
"main": [
[
{
"node": "aggregate values",
"type": "main",
"index": 0
}
]
]
},
"Insert form data to table": {
"main": [
[
{
"node": "Merge News and form data",
"type": "main",
"index": 1
}
]
]
},
"Investor Behavior Tracker Form": {
"main": [
[
{
"node": "Fetch market news",
"type": "main",
"index": 0
},
{
"node": "Insert form data to table",
"type": "main",
"index": 0
}
]
]
},
"Retrieve all data from data table": {
"main": [
[
{
"node": "Get last 7 items",
"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.
gmailOAuth2googlePalmApigroqApihttpMultipleHeadersAuthslackApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow captures an investor’s buy/sell action via an n8n Form, pulls related market news from NewsAPI, uses Google Gemini to generate a one-line behavioral reflection, sends it via Gmail and Slack, stores it in an n8n Data Table, and posts a weekly Slack summary using…
Source: https://n8n.io/workflows/16264/ — 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.
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
My workflow 30. Uses lmChatOpenAi, httpRequest, agent, lmChatOllama. Event-driven trigger; 52 nodes.
Episode 14: Seedance + ASMR. Uses lmChatOpenAi, agent, httpRequest, lmChatOllama. Event-driven trigger; 51 nodes.
Automates SaaS operations by consolidating user management, AI-driven support triage, analytics, and billing into one unified system. User signups flow through registration, support requests route via
This workflow automates legal policy governance for legal teams, policy managers, and compliance officers, eliminating manual document review, approval classification, and multi-channel stakeholder di