This workflow corresponds to n8n.io template #8468 — we link there as the canonical source.
This workflow follows the Agent → HubSpot 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": "",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "27 - Smart Follow-Up Engine",
"tags": [],
"nodes": [
{
"id": "7eefaae3-a1a5-480d-b5f6-12dd6e29079a",
"name": "\ud83d\udcdd Set Sample Data",
"type": "n8n-nodes-base.set",
"position": [
20,
0
],
"parameters": {
"values": {
"string": [
{
"name": "contact_name",
"value": "John Doe"
},
{
"name": "context",
"value": "had a product demo yesterday and showed strong interest in our enterprise features"
},
{
"name": "Email",
"value": "user@example.com"
}
]
},
"options": {}
},
"typeVersion": 2
},
{
"id": "e095c44e-2662-4f1a-913b-f30d66ef199a",
"name": "\ud83d\udcac Slack Reminder",
"type": "n8n-nodes-base.slack",
"position": [
836,
-200
],
"parameters": {
"text": "=\ud83d\udcde Follow-up Reminder\n\n**Contact:** {{ $('\ud83d\udcdd Set Sample Data').item.json.contact_name }}\n**Context:** {{ $('\ud83d\udcdd Set Sample Data').item.json.context }}\n\n**Suggested Message:**\n{{ $json.output }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": "YOUR_SLACK_CHANNEL_ID",
"cachedResultName": "general"
},
"otherOptions": {}
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "69316064-2c3b-480a-83ce-4a71d8266b1c",
"name": "\ud83e\udd16 Generate Follow-up Message",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
460,
0
],
"parameters": {
"text": "=Generate a short, professional follow-up message for {{ $json.properties.firstname }} {{ $json.properties.lastname }}, who {{ $('\ud83d\udcdd Set Sample Data').item.json.context }}.\n\nThe tone should be friendly, personalized, and reference the previous interaction.\n\nClearly suggest relevant next steps (e.g., scheduling a call, sharing resources, or continuing the discussion).\n\nKeep it under 150 words.\n\nAt the end of the message, include this signature block exactly as written (no placeholders):\n\nBest regards, \n[Your Name] \n[Your Title] | [Your Company] \n\ud83d\udce7 [your.email@company.com]\n\nReturn only the final message, fully ready to send, with no extra notes or placeholders.",
"options": {},
"promptType": "define"
},
"typeVersion": 2
},
{
"id": "084edea7-d5d0-43d8-942a-4bdd97cfc739",
"name": "\ud83d\udd17 HubSpot Contact Lookup",
"type": "n8n-nodes-base.hubspot",
"position": [
240,
-100
],
"parameters": {
"operation": "search",
"returnAll": true,
"authentication": "appToken",
"filterGroupsUi": {
"filterGroupsValues": [
{
"filtersUi": {
"filterValues": [
{
"value": "={{ $json.Email }}",
"propertyName": "email|string"
}
]
}
}
]
},
"additionalFields": {}
},
"credentials": {
"hubspotAppToken": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "4b7440f8-585e-48f8-afee-4733ed368b52",
"name": "\ud83e\udd16 AI Language Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
548,
220
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "f9059d28-3467-4c03-b201-19582cd2b1ac",
"name": "\ud83d\udccb Monday Contact Fetch",
"type": "n8n-nodes-base.mondayCom",
"disabled": true,
"position": [
240,
100
],
"parameters": {
"boardId": "YOUR_MONDAY_BOARD_ID",
"operation": "get"
},
"credentials": {
"mondayComApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "08f85001-7652-4e37-ba34-dfbb59825552",
"name": "\ud83d\udcac Telegram Reminder",
"type": "n8n-nodes-base.telegram",
"position": [
836,
0
],
"parameters": {
"text": "={{ $json.output }}",
"chatId": "YOUR_TELEGRAM_CHAT_ID",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "6c0ac7d9-8abe-4551-8de6-091b09cd7159",
"name": "\ud83d\udcac Teams Reminder",
"type": "n8n-nodes-base.microsoftTeams",
"position": [
836,
200
],
"parameters": {
"teamId": {
"__rl": true,
"mode": "id",
"value": "YOUR_TEAMS_ID"
},
"message": "={{ $json.output }}",
"options": {},
"resource": "channelMessage",
"channelId": {
"__rl": true,
"mode": "id",
"value": "YOUR_TEAMS_CHANNEL_ID"
}
},
"credentials": {
"microsoftTeamsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "6b267854-a2bf-4ce6-8244-415ee4aad6de",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-280,
-340
],
"parameters": {
"color": 3,
"width": 440,
"height": 700,
"content": "### \ud83d\udcf9 Input & Context Setup\n\n*The workflow begins with a Schedule Trigger and a Set Sample Data node.\n\nThis stage is responsible for defining the contact's name, email, and context of the last interaction (e.g., demo, interest in features).\n\nThese details act as the base input for HubSpot search and AI generation.*"
},
"typeVersion": 1
},
{
"id": "c234e7c1-afa6-4611-bc78-551906a21ffa",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
180,
-340
],
"parameters": {
"color": 2,
"width": 220,
"height": 700,
"content": "### \ud83d\udcf9 Contact Enrichment (HubSpot & CRM)\n\n*The HubSpot Contact Lookup node searches CRM records by email.\n\n(Optional/Disabled) Monday.com Contact Fetch could be used.*"
},
"typeVersion": 1
},
{
"id": "14774cbd-54aa-4c19-af32-f96c3c74343d",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
420,
-340
],
"parameters": {
"color": 4,
"width": 320,
"height": 700,
"content": "### \ud83d\udcf9 AI Follow-Up Message Generation\n\n*AI Language Model (OpenAI) provides the underlying model.\n\nGenerate Follow-Up Message node creates a short, professional, and personalized sales follow-up email.\n\nThe AI references past interactions (from context) and includes a predefined signature block for consistency.*"
},
"typeVersion": 1
},
{
"id": "6c868150-c30c-4ad8-aaa6-9ac07139b773",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
760,
-340
],
"parameters": {
"color": 5,
"width": 300,
"height": 700,
"content": "### \ud83d\udcf9 Multi-Channel Communication\n\n*The generated message is shared via Slack, Telegram, and Teams, ensuring cross-platform visibility and no missed follow-ups*"
},
"typeVersion": 1
},
{
"id": "0ea76191-a7e0-46b4-8af6-ac3583f9bc8e",
"name": "\ud83d\udd50 Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-200,
0
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1.2
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "",
"connections": {
"\ud83d\udcac Slack Reminder": {
"main": [
[]
]
},
"\ud83d\udcdd Set Sample Data": {
"main": [
[
{
"node": "\ud83d\udd17 HubSpot Contact Lookup",
"type": "main",
"index": 0
},
{
"node": "\ud83d\udccb Monday Contact Fetch",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udd50 Schedule Trigger": {
"main": [
[
{
"node": "\ud83d\udcdd Set Sample Data",
"type": "main",
"index": 0
}
]
]
},
"\ud83e\udd16 AI Language Model": {
"ai_languageModel": [
[
{
"node": "\ud83e\udd16 Generate Follow-up Message",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"\ud83d\udccb Monday Contact Fetch": {
"main": [
[
{
"node": "\ud83e\udd16 Generate Follow-up Message",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udd17 HubSpot Contact Lookup": {
"main": [
[
{
"node": "\ud83e\udd16 Generate Follow-up Message",
"type": "main",
"index": 0
}
]
]
},
"\ud83e\udd16 Generate Follow-up Message": {
"main": [
[
{
"node": "\ud83d\udcac Slack Reminder",
"type": "main",
"index": 0
},
{
"node": "\ud83d\udcac Telegram Reminder",
"type": "main",
"index": 0
},
{
"node": "\ud83d\udcac Teams Reminder",
"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.
hubspotAppTokenmicrosoftTeamsOAuth2ApimondayComApiopenAiApislackApitelegramApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow automatically generates personalized follow-up messages for leads or customers after key interactions (e.g., demos, sales calls). It enriches contact details from HubSpot (or optionally Monday.com), uses AI to draft a professional follow-up email, and distributes…
Source: https://n8n.io/workflows/8468/ — 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 n8n workflow automates the daily generation of comprehensive analytics reports from multiple websites, processes them using OpenAI's powerful language models, and then delivers the insights direc
This n8n workflow is designed for content creators, digital marketers, and social media managers who want to automate their entire content creation and publishing process across multiple platforms. It
Decodo is a powerful public data access platform offering managed web scraping APIs and proxy infrastructure to collect structured web data at scale. It handles proxies, anti-bot protection, JavaScrip
This workflow is designed for Google Ads advertisers, PPC managers, and marketing teams who want to automatically monitor and optimize their search term performance. It's particularly valuable for tho
This workflow is designed for social media managers, content creators, digital marketers, and entrepreneurs who want to automate the entire lifecycle of creating and publishing short-form video conten