Huashu Design
alchaincyf · Skill
Turns a one-line request in your AI agent into a finished design: a launch animation, a clickable app prototype, an editable slide deck, an infographic or a se…
An n8n workflow that sorts the first reply of a lemlist lead with OpenAI. A positive reply opens a HubSpot deal and posts to Slack, an out of office reply adds a task, and an unsubscribe removes the lead.
Lemlist replies sorted by AI and sent to HubSpot and Slack is an n8n workflow in the Business category, listed by Mindket. It is free. This is version 1, last updated on . Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.
A lemlist reply
It starts when a lead replies to a lemlist campaign for the first time. It receives:
The lead is handled in lemlist, HubSpot and Slack according to the kind of reply
What you need before you start.
Sales email campaigns
Sends each lead’s first reply to n8n, and takes the interested and unsubscribe updates back.
Needslemlist API key
Language model
Runs gpt-5.6-terra to sort the reply into a category.
NeedsOpenAI API key
CRM
Holds the contact, the deal and the follow-up task.
NeedsHubSpot OAuth2 credential and a deal stage
Team chat
Receives the messages about interested leads and other replies.
NeedsSlack OAuth2 credential and a channel
Checked by Mindket on 13 Nov 2026
This n8n workflow reacts to the first reply a lead sends to a lemlist campaign. An OpenAI model reads the reply and sorts it as interested, out of office, unsubscribe or other. A positive reply marks the lead as interested in lemlist, opens a HubSpot deal and posts a Slack message. An out of office reply adds a HubSpot task for a later follow-up. An unsubscribe takes the lead out of the campaign. Anything else goes to Slack. Thirteen nodes do the work.
Sales teams that send cold email campaigns from lemlist and use HubSpot and Slack, and want each first reply handled before anyone reads it. Skip it if you cannot check the first sorted replies, because a mistaken unsubscribe removes a lead from the campaign.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Software sales | Sales development teams | Open a deal the moment a lead says yes | A rep sees a Slack message with a deal link after a lead writes “sounds good, send details”. |
| Recruiting | Outbound recruiters | Follow up on out of office replies without losing them | A recruiter gets a task to write again after a candidate’s out of office reply. |
| Marketing agencies | Agency account teams | Take people who ask to stop out of a campaign at once | An agency removes a lead when the reply says “please stop emailing me”. |
| B2B services | Consultants | See every first reply in one channel | A consultant reads the Slack channel for the replies that need a human answer. |
You need some n8n and four accounts: lemlist, OpenAI, HubSpot and Slack, plus a deal stage to pick.
An n8n with a public address, so lemlist can post replies to it, plus accounts at lemlist, OpenAI, HubSpot and Slack.
Download saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Keep the four accounts at hand, because each group of nodes needs one.
| Need | Detail |
|---|---|
| n8n | On n8n Cloud or on a server of your own, with a public address |
| lemlist | An API key and a campaign that sends email |
| OpenAI | An API key |
| HubSpot | An account with a deal pipeline and an OAuth2 credential |
| Slack | A channel and an OAuth2 credential |
workflow.json.Lemlist Lead Replied, Lemlist Unsubscribe and lemlist Mark as interested.OpenAI Chat Model.HubSpot Get contact ID, HubSpot Get contact ID1, HubSpot Create Deal and follow up task.Slack and Slack1. In both, replace Your channel name with your channel.HubSpot Create Deal, choose the deal stage that replaces YOUR_DEAL_STAGE_ID.Slack, replace YOUR_HUBSPOT_PORTAL_ID with your HubSpot account number.There is nothing to run by hand. Publish it, and each lead’s first reply starts a run. To watch one campaign only, set it in the options of the trigger. Check the first results in Slack and HubSpot against what the leads wrote.
| To change | Where |
|---|---|
| The categories | The system message in Classify reply with OpenAI and the rules in Switch |
| The deal | The name and the stage in HubSpot Create Deal |
| The messages | Slack and Slack1 |
| The task | The subject of follow up task |
| The model | OpenAI Chat Model |
A lead answers the first email with “Sounds interesting, can you send pricing?”.
OpenAI sorts the reply as interested. lemlist marks the lead as interested, HubSpot gets the contact and a new deal, and Slack shows a message with the deal link. A lead who answers “I am out of office until Monday” gets a HubSpot task instead. Read the first sorted replies yourself before you trust the sorting.
If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. This one listens for a reply, asks a model to sort it, and then splits into four lines. Try it with a test lead you own first.
For experts. The Switch compares exact text, so the model’s answer must match one of three names, and a mismatch takes the last line.
| Node | What it does | What to know |
|---|---|---|
Lemlist Lead Replied | Fires on a lead’s first reply | No campaign is set, so it watches every campaign of the team |
Classify reply with OpenAI | Sorts the reply text into four categories | It replaces a legacy text node that used a retired model |
Merge | Puts the category over the reply text | The category takes the field text |
Switch | Sends the item down one of four lines | It compares exact text |
HubSpot Get contact ID | Finds or creates the contact by email | It also updates the names when the contact exists |
One model was retired, the sorting needs exact words and both vendors’ older APIs are in use.
gpt-3.5-turbo-instruct. OpenAI’s deprecations page, read on 12 November 2026, lists it for shutdown on 28 September 2026, with gpt-5.6-terra as the replacement. That model does not take completion requests, so Mindket’s copy uses a Basic LLM Chain with an OpenAI Chat Model set to gpt-5.6-terra. The old limit of 6 tokens and the temperature of 0 are not carried overInterested, Out of Office, Unsubscribe or Other. An answer that matches none goes to the last line/unsubscribes routes on 1 November 2026, which this workflow does not useSlack uses HubSpot’s EU address, so change it if your account is elsewhereAn n8n workflow that reads the first reply a lead sends to a lemlist campaign and sorts it with an OpenAI model. A
positive reply marks the lead as interested in lemlist, makes a HubSpot deal and posts a Slack message. An out of office
reply makes a HubSpot follow-up task. An unsubscribe takes the lead out of the campaign. Anything else goes to Slack.
workflow.json: the workflow as n8n exports it, 13 nodes and no sticky note. It holds no credential.README.md: these notes.gpt-3.5-turbo-instruct. OpenAI shut that model down on 28 September 2026, and its replacement does not takeClassify reply with OpenAI, a Basic LLM Chain, with an OpenAI Chat Model setgpt-5.6-terra. The old limit of 6 tokens and the temperature of 0 are not carried over. A system message asks forSwitch compares exact text and expects Interested,Out of Office and Unsubscribe. The prompt now uses those spellings, and Other for the rest.lemlist Mark as interested had a typed YOUR_CAMPAIGN_ID in its address. It now takes the campaign from the reply,Lemlist Unsubscribe does.HubSpot Create Deal held its author's deal stage ID, and Slack held its author's HubSpot account number in the link.YOUR_DEAL_STAGE_ID and YOUR_HUBSPOT_PORTAL_ID.Lemlist Lead Replied and the deal node is `HubSpot Createworkflow.json.Lemlist Lead Replied, Lemlist Unsubscribe andlemlist Mark as interested.OpenAI Chat Model.HubSpot Get contact ID, HubSpot Get contact ID1,HubSpot Create Deal and follow up task.Slack and Slack1. In both, replace Your channel name with your channel.HubSpot Create Deal, choose the deal stage that replaces YOUR_DEAL_STAGE_ID.Slack, replace YOUR_HUBSPOT_PORTAL_ID with your HubSpot account number. It follows /contacts/ in your HubSpotapp-eu1, so change that part if your account lives elsewhere.Lemlist Lead Replied. Without it, every campaign of your team isLemlist Lead Replied fires on the first reply of a lead, because its Is First option is on.Classify reply with OpenAI reads the reply text with the line breaks removed and answers with a category.Merge puts the category in the text field, over the reply text, and keeps the lead's other fields.Switch sends the item down one of four lines. Unsubscribe, Interested and Out of Office match exactly. AnythingLemlist Unsubscribe removes the lead from the campaign.lemlist Mark as interested flags the lead in lemlist. At the same time HubSpot Get contact ID finds orHubSpot Create Deal opens a deal and links it to that contact, andSlack posts a message with a link to the deal.HubSpot Get contact ID1 finds or creates the contact and follow up task adds a HubSpot task for it.Slack1 posts that a lead replied, with a link to the campaign report in lemlist.Classify reply with OpenAI and the rules in Switch. Keep the spellings equal.HubSpot Create Deal.Slack and Slack1.follow up task.OpenAI Chat Model.Lemlist Lead Replied.Slack1. A wrong answer ingpt-5.6-terra is the replacement that OpenAI's deprecations page names for gpt-3.5-turbo-instruct./unsubscribes routes stop on 1 November 2026, and this workflow does not use them.HubSpot Get contact ID and its twin create the contact when the email is new, or update its names when it exists.NOTICE.md 630 B README.md 6 KB workflow.json 9 KB
alchaincyf · Skill
Turns a one-line request in your AI agent into a finished design: a launch animation, a clickable app prototype, an editable slide deck, an infographic or a se…
op7418 · Skill
Skill that makes single-file HTML slide decks, slide illustrations and platform covers in two visual styles, with a presenter mode for rehearsal. For speakers…
alirezarezvani · Skill
Adds 411 ready-made skills for Claude Code and other coding agents, grouped by role from engineering and product to marketing, finance and compliance. Installs…
perplexity-ai · Kit
Picks the best option for a decision from text and images, such as which team should handle a request, with a probability for each choice, for developers who b…
numind · Kit
Reads documents as text or images and fills a JSON template with the fields you ask for, or converts the pages to Markdown. A 4B model for teams that process s…
nace-ai · Kit
Scores yes or no, multiple choice and rating questions about a document in one pass, with a probability for every option. An 8B decision model from Nace.AI tha…