Triage Instantly cold email replies into HubSpot and Slack

When a prospect replies to a cold email, sort it by intent, log it to HubSpot, and ping the right rep in Slack so nothing slips.

Agentic Task
InstantlyHubSpotSlack BotSalesNotifications & AlertsLead EnrichmentFeedback Triage

Build an agent workflow that runs whenever Instantly fires a reply_received webhook for one of my cold email campaigns. The trigger is a webhook receiving the Instantly reply_received payload, which includes reply_text, reply_subject, lead_email, campaign_id, campaign_name, and the Instantly Unibox URL for that thread.

When the agent fires, it should do the following, in order:

1. Read the reply text (and subject if useful) and classify it into exactly one of these intent labels: Interested, Wants More Info, Objection, Out of Office, Wrong Person, or Not Interested. Be conservative: when in doubt between Interested and Wants More Info, pick Wants More Info.

2. Update the lead in Instantly (Update Lead) so the lead's interest_status matches the classification. Mapping: Interested -> 1, Wants More Info -> 1 (keep active with a custom variable noting the sub-intent), Out of Office -> 0, Wrong Person -> -2, Not Interested -> -1, Objection -> -1 unless the reply hints at room to negotiate. Also set a custom variable on the lead called latest_intent with the label and another called latest_reply_snippet with the first 240 characters of the reply.

3. Upsert the contact in HubSpot keyed on lead_email (Batch Upsert Contacts). Set or create properties for instantly_intent, instantly_last_reply, instantly_last_reply_at, and instantly_campaign. If a contact already exists and we have its id, also call Update Contact to refresh the same fields so the CRM always reflects the latest signal.

4. For any positive or follow-up classification (Interested, Wants More Info, or Objection), create a HubSpot Task (Create Task) associated with the contact. Subject: 'Reply from {lead_email}: {intent}'. Body: one line explaining why this needs attention (pulled from the reply), the campaign name, and a clickable link to the Instantly Unibox thread. Due date: today. Priority: HIGH for Interested, MEDIUM for Wants More Info, LOW for Objection. Owner: the campaign owner on the Instantly side, mapped to the HubSpot owner with the same email.

5. Post a Slack message (Send a Message) to a configurable sales channel (default #cold-email-replies). The message should include: the intent label as a header, the lead's email and company (if known), a 1-2 line snippet of the reply, the campaign name, and the Instantly Unibox URL as a link so the rep can jump straight into the thread. Skip the Slack message entirely when the classification is Not Interested or Out of Office, so the channel only surfaces replies a human actually needs to look at.

Other behavior:

- If a step fails, log the error and continue with the remaining steps rather than aborting the run.

- Dedupe on the Instantly reply id so the same webhook firing twice never double-posts to Slack or double-creates a task.

- Do not draft or send an outbound response from this workflow. Reply drafting is handled separately by Instantly's own reply agent; this workflow is purely classification, CRM logging, and human notification.

Additional information

What does this prompt do?
  • Reads every new reply on your Instantly campaigns and tags it as Interested, Wants More Info, Objection, Out of Office, Wrong Person, or Not Interested.
  • Updates the lead's interest status in Instantly so your campaign dashboard reflects how each conversation is going.
  • Logs the intent label and a snippet of the reply on the contact in HubSpot, and creates a follow-up task for the campaign owner whenever it looks like a real opportunity.
  • Posts a clean Slack alert with the reply snippet, the prospect's company, and a one-click link back to the Instantly Unibox, skipping out-of-office and clearly negative replies so the channel stays high signal.
What do I need to use this?
  • An Instantly account on the Growth plan or higher with at least one campaign that is actively sending.
  • A HubSpot account where you can create or update contacts and tasks.
  • A Slack workspace and a channel where the sales team should be pinged on hot replies.
How can I customize it?
  • Change the intent labels. Add categories like Booked a Meeting or Pricing Question, or split Objection by reason.
  • Pick which classifications deserve a Slack ping, a HubSpot task, or both. Many teams only alert on Interested and Wants More Info.
  • Route different campaigns to different Slack channels and different task owners, so each rep only sees their own replies.

Frequently asked questions

Does this replace Instantly's built-in AI reply agent?
No. Instantly's reply agent drafts outbound responses. This workflow is the layer underneath it: classifying replies, updating your CRM, and pinging Slack so a human knows when to step in.
Does this work with multiple campaigns at once?
Yes. The webhook fires for every reply across every campaign you've connected, and the workflow tags each reply with the campaign name so you can route different campaigns to different Slack channels or task owners.
What happens with out-of-office auto-replies?
The agent classifies them as Out of Office, updates the lead in Instantly so it pauses the sequence appropriately, and skips the Slack ping. The reply is still logged on the HubSpot contact for context.
Do I need a paid HubSpot plan?
Any HubSpot tier that lets you create contacts and tasks will work, including Starter. You do not need Sales Hub Pro.
How fast does the Slack alert arrive after a reply lands?
Within seconds. The workflow is triggered by Instantly's real-time webhook, not a polling schedule, so the moment Instantly sees the reply, the classification and notifications kick off.

Stop digging through your Unibox every morning.

Connect Instantly, HubSpot, and Slack once, and let every cold email reply route itself in real time.