Triage Lemlist replies and hand them off to HubSpot and Slack

The moment a Lemlist reply lands, sort it into interested, not interested, out of office, or unclear, then push a clean handoff into HubSpot and Slack.

Agentic Task
LemlistHubSpotSlack BotSalesOperationsLead EnrichmentNotifications & AlertsData Sync
PromptCreate

Build an agent workflow that triages Lemlist replies and hands them off cleanly to HubSpot and my sales team.

Trigger: a webhook from Lemlist on the emailsReplied event. Lemlist supports outgoing hooks at /hooks. The payload includes the lead's email, the campaign id, the reply body, and the timestamp.

When the webhook fires, the agent should:

1. Pull the lead's campaign context with the Lemlist Get Lead by Email operation so the agent knows which campaign the reply came from and who the campaign owner is.

2. Classify the reply body into exactly one of four buckets: interested, not interested or unsubscribe, out of office or later, or unclear. Keep the classifier tight. Do not rewrite or summarize the reply text beyond the short Slack summary described below.

3. Take the action for the matching bucket.

Interested: Find the contact in HubSpot by email using Search Contacts. If they do not exist, call HubSpot Create Contact with the lead's email, first name, last name, and company. Then call HubSpot Create Deal in a configured pipeline and stage with the reply pasted into the description and associate it to the contact. Then call HubSpot Create Task with a 24-hour due date, assigned to the campaign owner, associated to the contact and deal. Then call Slackbot Send a Message to a #sales-replies channel with a short summary (max three lines) that includes the lead name, company, the classification, and a link to the HubSpot deal. Finally call Lemlist Pause Lead across all campaigns so no other running sequence double-messages the same person.

Not interested or unsubscribe: Call Lemlist Delete or Unsubscribe Lead. Then call HubSpot Create Note on the contact recording the reason the lead gave (e.g. 'not a fit right now', 'wrong person', 'already using a competitor').

Out of office or later: Call Lemlist Pause Lead for the lead. Create a HubSpot Task dated to the return date the reply mentions. If no return date is present, default to seven days out. Associate the task to the contact.

Unclear: Do not touch Lemlist. Call Slackbot Send a Message to the #sales-replies channel with the raw reply body and a note asking a human to triage.

Inputs to expose in the workflow settings: the Slack channel name (default #sales-replies), the HubSpot pipeline id and stage id that new interested deals should land in, and an optional default owner if the campaign owner cannot be mapped to a HubSpot user.

Keep the Slack summary to at most three lines. Never rewrite the customer's own words when quoting them. Only take one action per bucket per webhook so a duplicate delivery does not create duplicate deals.

Additional information

What does this prompt do?
  • Reads every incoming Lemlist reply the moment it arrives and sorts it into one of four buckets: interested, not interested or unsubscribe, out of office or later, or unclear.
  • For interested replies, creates or updates the HubSpot contact, opens a deal in your chosen pipeline, assigns a 24-hour follow-up task to the campaign owner, and pings your sales channel in Slack with a short summary and a link to the deal.
  • For not interested or unsubscribe replies, quietly removes the lead from Lemlist and drops a note on the HubSpot contact recording the reason.
  • For out of office replies, pauses the lead in Lemlist and creates a HubSpot task dated to the return date the reply mentions, defaulting to seven days out.
  • For unclear replies, leaves Lemlist alone and posts the reply into Slack so a human can triage it in one click.
What do I need to use this?
  • A Lemlist account with an outgoing webhook you can point at this workflow
  • A HubSpot login with permission to create contacts, deals, tasks, and notes, plus the pipeline and stage you want new replies to land in
  • A Slack workspace and the channel name you want reply alerts to post into
How can I customize it?
  • Change the Slack channel, or split alerts by campaign so different reps see different threads.
  • Swap the HubSpot pipeline, stage, and deal name template to match how your team tracks new opportunities.
  • Tune the classifier language so replies specific to your industry (pricing questions, referrals, competitor mentions) route the way you want.

Frequently asked questions

Does this work if my team uses HubSpot Free?
Yes. Creating contacts, deals, tasks, and notes is available on every HubSpot tier, including Free. You will need to pick a pipeline and stage that exist in your account.
What happens if the same person replies twice?
The workflow looks the contact up by email before creating anything, so the second reply updates the existing HubSpot contact and posts a fresh Slack summary instead of duplicating records.
Can I keep Lemlist untouched and only route replies to HubSpot and Slack?
Yes. Ask the agent to skip the Lemlist pause, unsubscribe, and delete steps and it will treat Lemlist as read-only.
How does it decide between interested and unclear?
Interested is reserved for replies that clearly want to keep the conversation going. Anything vague, off-topic, or asking a question the classifier is not confident about gets routed to Slack as unclear so a human can decide.
Will it stop other Lemlist sequences from double-messaging someone who replied?
Yes. On an interested reply the workflow pauses the lead across all campaigns so no other sequence keeps emailing them while your rep follows up.

Stop losing hot Lemlist replies to a messy inbox.

Connect Lemlist, HubSpot, and Slack once, and every reply lands in the right place with a clean handoff to your rep.