Triage Instantly cold email replies into HubSpot and Slack

By General Input

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.

Integrations

  • Instantly
  • HubSpot
  • Slack Bot

Type

Agentic Task

Categories

  • Sales

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.

Related prompts

Explore more prompts
A brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasoniMessage campaign console with pre-flight checks and delivery boardLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsA searchable RFP answer library your bid team drafts fromLinkedIn Ads budget pacing dashboard for every client account