AutomationFlowsAI & RAG › Automate Sales Follow-ups with Gpt-4o-mini, Hubspot, Slack, Teams & Telegram

Automate Sales Follow-ups with Gpt-4o-mini, Hubspot, Slack, Teams & Telegram

ByAvkash Kakdiya @itechnotion on n8n.io

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…

Cron / scheduled trigger★★★★☆ complexityAI-powered13 nodesSlackAgentHubSpotOpenAI ChatMonday.comTelegramMicrosoft Teams
AI & RAG Trigger: Cron / scheduled Nodes: 13 Complexity: ★★★★☆ AI nodes: yes Added:

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 →

Download .json
{
  "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.

Pro

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 →

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

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

Memory Buffer Window, Google Analytics, Agent +6
AI & RAG

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

Google Sheets, WordPress, Edit Image +13
AI & RAG

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

OpenAI Chat, Agent, Slack +5
AI & RAG

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

Slack, HTTP Request, Agent +11
AI & RAG

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

Tool Think, Output Parser Structured, Google Sheets +6