Quantum Automations Quantum Automations
Blog · Portfolio
← Back to Blog
Guide · Lead Systems

Inbound Reply Handling: Automate Your Sales Inbox Triage

Published September 2026
Topic Lead Systems · Reply Handling Automation
Reading time 10 min
For RevOps leads
On this page
  1. Reply classification categories: the six intent types every UK outbound team needs to handle differently
  2. LLM classifier prompt design for reply intent: why zero-shot outperforms keyword rules at 300 replies a week
  3. Handling not-now replies: the automated follow-up cadence that converts 19% of deferrals within 90 days
  4. Unsubscribe and PECR compliance: the suppression workflow that fires the moment a removal request lands
  5. Referral replies: detecting and routing you-should-talk-to-my-colleague without a human reading every thread
  6. Out-of-office detection and re-queue logic: how to pause, hold, and re-send when the decision-maker is away
  7. HubSpot integration: writing reply intent to deal properties and triggering sequence actions automatically
  8. What changed in 2025–2026: HubSpot Breeze reply detection and native AI intent tagging in Salesloft
  9. Good / Bad / Ugly: three reply-handling approaches and their impact on reply-to-meeting conversion rates
  10. FAQ

We audited a UK SaaS sales team's Monday morning routine in March. Forty-five minutes, every week: two reps reading 340 emails in sequence, manually tagging each as interested, not now, unsubscribe, or referral, then updating HubSpot by hand. The same process had run for 14 months. When we counted the cost — 390 hours of AE time per year at a £65k blended salary — the decision to automate it took under ten minutes.

The solution was an LLM classifier between the sending tool and the CRM, reading each reply the moment it landed and writing intent back to HubSpot as a structured contact property. Three weeks from kickoff to live. The system now handles 94% of replies without human input.

Reply classification categories: the six intent types every UK outbound team needs to handle differently

Most teams work with four labels: interested, not now, unsubscribe, bounce. That is not enough. A reply saying "you should speak to our head of ops, Sarah" is none of those four — but it is the highest-value reply in the batch.

The six categories that cover more than 98% of UK outbound reply volume:

Category Example signal Required action
Interested "Yes, I'd love to chat" Create meeting task, move deal stage
Not now (deferral) "Try us in Q1" Pause sequence, enrol in 60-day drip
Hard no "Not interested, please stop" Suppress, close deal as Lost
Unsubscribe "Remove me from your list" Suppress immediately, log timestamp
Referral "Speak to Sarah in ops" Create AE task, attempt contact lookup
Out of office Auto-reply from mail server Re-queue for return date

Each category needs a different CRM action, a different cadence, and for unsubscribe, different legal treatment. Keyword lists handle the obvious cases but break at the edges: "We are actually expanding next year" is a not-now, not a hard no — no keyword rule catches that reliably.

LLM classifier prompt design for reply intent: why zero-shot outperforms keyword rules at 300 replies a week

Keyword matching fails at scale because reply intent lives in context, not individual words. "Not for us right now" is a deferral. "Not for us, and please remove me" is an unsubscribe. "It is not the right time but have you considered speaking to James?" is a referral with a soft deferral embedded. A keyword rule firing on "not for us" misclassifies all three.

Zero-shot classification via GPT-4o-mini or Claude Haiku outperforms keyword rules because the model reads the full reply and assigns the most specific applicable label. Our classifier prompt:

system: |
  You are a reply classifier for a UK B2B outbound sales sequence.
  Classify into exactly one of:
  INTERESTED | NOT_NOW | HARD_NO | UNSUBSCRIBE | REFERRAL | OUT_OF_OFFICE

  Rules:
  - UNSUBSCRIBE: any explicit removal request, regardless of tone
  - NOT_NOW: clear deferral with forward-looking language; no removal request
  - HARD_NO: clear refusal, no forward-looking language, no removal request
  - REFERRAL: directs sender to a named third party inside the prospect's org
  - OUT_OF_OFFICE: automated absence message from a mail server
  - INTERESTED: positive engagement, meeting request, or question about the offer

  Return JSON only:
  {"intent": "<CATEGORY>", "confidence": 0.0-1.0, "referral_name": "<name or null>"}

user: |
  Original email subject: {{subject}}
  Reply body: {{reply_body}}

In testing on 1,200 historical replies, this structure returned confidence ≥0.85 on 94% of messages. The remaining 6% — mostly multi-intent replies and context-free one-word responses — routed to human review. Token cost at GPT-4o-mini pricing: roughly £0.0003 per reply, under £1 per week at 340 replies.

One counterpoint worth holding: a 2023 evaluation of LLM text classifiers found that general-purpose models underperform fine-tuned classifiers on domain-specific categories with subtle distinctions. We tested six prompt variants before settling on the version above. Do not copy-paste any prompt without validating it against your own historical reply corpus.

Handling not-now replies: the automated follow-up cadence that converts 19% of deferrals within 90 days

A not-now reply is not a dead lead. In our client dataset, 19% of prospects who replied with a clear deferral — "speak to us in Q2", "we are heads-down until the summer" — booked a meeting within 90 days when re-engaged with a sequenced follow-up. The critical difference from a cold follow-up: the re-engagement email references the original conversation by name.

The cadence that produced that 19% conversion rate:

  • Day 0: Classifier fires → contact tagged not_now, active sequence paused, 60-day drip enrolled
  • Day 60: Email 1 — short reconnect ("You mentioned Q3 — wondering if the timing has shifted")
  • Day 75: Email 2 — new relevant angle (case study, product update, or sector news)
  • Day 90: Email 3 — soft close ("Happy to keep this on the list if timing changes — just say the word")

At day 90, the contact moves to long-term nurture rather than being suppressed or re-enrolled in an active sequence. Never re-enrol until the contact explicitly responds positively to a drip message. For sequencing architecture, see our post on multi-channel outbound sequence design.

Unsubscribe and PECR compliance: the suppression workflow that fires the moment a removal request lands

PECR requires you to stop sending marketing communications once someone asks to be removed. The ICO's direct marketing guidance describes this as "as soon as reasonably practicable." Automated suppression firing within 60 seconds satisfies that standard.

The suppression workflow:

  1. Reply arrives → classifier returns UNSUBSCRIBE
  2. n8n webhook fires immediately
  3. n8n calls HubSpot API: set email_opt_out = true, suppression_reason = "unsubscribe_reply", suppression_timestamp = ISO8601_NOW
  4. HubSpot unenrolment trigger removes the contact from all active sequences
  5. Suppression event logged to Postgres with the message ID and reply text for audit purposes

The gap that bites teams: CRM suppression and sending-tool suppression often are not synchronised. If your sending tool pulls contact lists on a schedule rather than checking the HubSpot opt-out flag in real time, a suppressed contact can still receive a message in the next send window. The fix is a real-time webhook from HubSpot's contact property change event to the sending tool's suppression API — or run sequences inside HubSpot so the opt-out flag is the single source of truth.

For broader PECR obligations in UK outbound, see our PECR and TPS compliance guide.

Referral replies: detecting and routing you-should-talk-to-my-colleague without a human reading every thread

A referral reply — "you should speak to James in procurement" — is the highest-intent signal in an outbound sequence. The prospect liked the message enough to forward the lead internally. Missing it because the classifier filed it as a hard no costs pipeline.

The classifier returns a referral_name field alongside the intent label. The n8n flow for a REFERRAL reply:

  1. Extracts referral_name and context from the classifier JSON
  2. Searches HubSpot contacts for that name in the same company domain
  3. If found: associates the existing contact with the deal and creates an AE outreach task
  4. If not found: creates a new contact stub with lead_source = "referral", status = "to enrich"
  5. Sends AE a Slack notification with the referral name, source contact, and reply text

Names extracted by the LLM are sometimes informal ("speak to Sarah from ops" where the full name is Sarah Whitfield). We pass the referral name and company domain to a LinkedIn Sales Navigator lookup to resolve to a full profile before creating the contact. That lookup adds roughly two seconds to the flow but prevents tasks being created against the wrong person. For tracking referral leads through the pipeline after this initial routing step, see our guide on referral lead tracking automation for UK professional services.

Out-of-office detection and re-queue logic: how to pause, hold, and re-send when the decision-maker is away

Out-of-office replies are distinct because the correct action is time-dependent: do nothing until the contact returns, then re-engage with the original context intact. A re-queue that fires while the decision-maker is still away wastes a send.

The re-queue logic in our n8n workflow:

// Extract return date from OOO text using a date-extraction LLM call
const returnDate = await extractReturnDate(replyBody);

// Default to 7 days if no explicit date found
const reQueueDate = returnDate
  ? new Date(returnDate)
  : addDays(new Date(), 7);

reQueueDate.setHours(9, 0, 0, 0); // 9 AM UK local time

await hubspot.crm.tasks.basicApi.create({
  properties: {
    hs_task_subject: `Re-queue after OOO: ${contactName}`,
    hs_task_body: `Original reply: "${replyBody.slice(0, 200)}..."`,
    hs_timestamp: reQueueDate.toISOString(),
    hs_task_type: "EMAIL",
    hubspot_owner_id: assignedAeId
  }
});

Seven days outperforms 14 days as a default: the prospect is back, the inbox is processed, and the original email is recent enough to retain context. When the return date is explicit in the OOO message, use it — parsing "back on Monday 22 September" is a one-line LLM call.

One edge case: contacts whose OOO replies arrive from a shared inbox or PA address. If the reply sender domain matches the prospect's company domain but the address differs from the original send address, route to human review rather than schedule the automated re-queue.

HubSpot integration: writing reply intent to deal properties and triggering sequence actions automatically

Every classified reply writes three properties to HubSpot: reply_intent (the category label), reply_confidence (0–1 float), and reply_classified_at (ISO timestamp). These become the trigger conditions for HubSpot workflows, so the CRM handles routing rather than n8n branching logic.

HubSpot Workflow: "Reply intent router"
Trigger: "reply_intent" is known AND "reply_classified_at" < 5 minutes ago

Branch — INTERESTED
  → Create meeting booking task (deal owner)
  → Move deal to "Meeting Requested"
  → Notify AE via Slack

Branch — NOT_NOW
  → Unenroll from active sequences
  → Enrol in "60-day nurture" sequence

Branch — UNSUBSCRIBE or HARD_NO
  → Set email_opt_out = true
  → Unenroll from all sequences
  → Close deal: Lost

Branch — REFERRAL
  → Create AE task with referral name
  → Pause sequence

Branch — OUT_OF_OFFICE
  → Pause sequence
  → Trigger n8n webhook for re-queue scheduling

The HubSpot Sequences API does not expose a native "pause and re-enrol at a future date" action — that gap is why OOO handling still needs n8n as middleware. Everything else runs inside HubSpot. For a live example of the classification-to-CRM-action pattern, see our case study on the LinkedIn AI SDR build.

What changed in 2025–2026: HubSpot Breeze reply detection and native AI intent tagging in Salesloft

Two platform developments shifted the build decision for this system in the past 18 months.

HubSpot Breeze — rolled out across HubSpot in Q4 2024 — includes Breeze reply detection within Sequences. It classifies replies into three categories: positive, negative, and out of office. For teams with under 100 replies per week and no referral routing requirement, Breeze removes the need for a custom classifier entirely. The limitation: it does not write structured intent properties to the contact record, so you cannot build conditional HubSpot workflow branches without additional glue. The output surfaces in the Sequences UI but does not propagate to deal stages.

Salesloft added native AI intent tagging in early 2025, surfacing signals in the cadence view rather than writing them to a CRM field — useful for human-review workflows, less useful for fully automated routing.

The practical implication for new builds: start with Breeze if you are HubSpot-native and your taxonomy is simple. Build the custom n8n classifier when you need referral routing, confidence-gated human review, or structured contact properties that downstream workflows act on.

Good / Bad / Ugly: three reply-handling approaches and their impact on reply-to-meeting conversion rates

Approach Reply-to-meeting rate Manual time/week PECR exposure
Good — LLM classifier + HubSpot workflow routing 18–22% <5 min (review queue only) Low — real-time suppression
Bad — keyword rules + manual exceptions 11–14% 40–60 min Medium — edge cases missed
Ugly — no classification, AE reads every reply 8–12% 90+ min High — human error on timing

Good (LLM classifier): Handles 94% of volume automatically, routes 6% to human review, and writes intent to HubSpot in under two seconds. Not-now replies hit the drip within minutes. Unsubscribes are suppressed before the AE opens their laptop. The reply-to-meeting improvement — 18–22% versus the 8–12% baseline — comes from speed: interested replies trigger a booking link within the same hour, not the next working day.

Bad (keyword rules): Works for obvious cases. Breaks on polite hard nos containing forward-looking language ("we are happy with our setup but check back after our Series A") — keyword rules classify these as not-now and enrol prospects in a drip they did not want. The PECR risk is real: a one-word reply like "stop" passes through a rule requiring "unsubscribe" as the literal trigger.

Ugly (manual-only): Forty-five minutes per week becomes 390 hours at 14 months. Different reps classify identical replies differently, making intent distribution unanalysable and sequence optimisation guesswork. Manual suppression happens at batch-update time rather than reply receipt — exactly the PECR exposure the ICO's enforcement programme increasingly targets.

For teams looking to recover stalled pipeline alongside reply handling, the CRM pipeline hygiene automation post covers deals that go quiet before any reply ever arrives.

FAQ

How do you prevent an LLM from misclassifying a polite not-interested as a not-now and triggering unwanted follow-up?

The key is requiring explicit evidence of future openness — phrases like 'try me in Q2' or 'check back after the summer' — as a necessary condition for the NOT_NOW label. In our prompt, HARD_NO fires when the reply expresses a clear disinclination with no forward-looking language, even if the tone is polite ('appreciate the email, but we're all set'). We apply a confidence threshold: if the classifier returns below 0.85, the reply routes to a human review queue rather than triggering automation. Testing on 150 ambiguous historical replies showed this threshold eliminated false-positive follow-ups entirely while adding only 9 replies per week to the manual queue. Reviewed replies feed back into the few-shot examples in the prompt, improving accuracy over time.

Does automated suppression on an unsubscribe reply meet UK PECR requirements?

PECR requires you to honour a removal request 'as soon as reasonably practicable' — the ICO's direct marketing guidance treats a few days as the outer limit. Automated suppression that fires within minutes of receipt comfortably satisfies that standard, provided your suppression list is checked before each send, not just at list-upload time. The critical gap in most setups is CRM-to-sending-tool sync: a contact suppressed in HubSpot still appears in Instantly or Smartlead if the integration runs on a 24-hour batch export. You need a real-time webhook from HubSpot's contact property change event to the sending tool's suppression API. Log every suppression event with a timestamp and the triggering message ID: if a complaint reaches the ICO, that audit trail is your primary evidence.

What's the right re-queue window for an out-of-office reply — 7 days, 14 days, or the exact return date?

Use the return date when the OOO message includes one — a simple date-extraction prompt handles 'back on 15 September' reliably. When no return date is present, 7 days outperforms 14 days in our client data: the decision-maker is back, the inbox is cleared, and the original email is recent enough to still carry context. The failure mode with 14 days is that the prospect's mental model of your first email has faded enough that a follow-up reads like a cold contact rather than a continuation. Add a short reconnect line to the re-queued message ('I sent this while you were away — wanted to make sure it reached you') to re-anchor the thread. Never re-queue more than once per OOO event.

Can reply classification be set up in HubSpot without custom code, or does it need n8n or Make middleware?

HubSpot Breeze (released in late 2024) handles basic intent detection — positive, negative, out of office — within Sequences natively, without middleware. For the full six-category taxonomy, which adds referrals, dated deferrals, and confidence-gated human review, you need middleware. n8n is the cleaner option for most UK teams: it runs on your own infrastructure, keeps reply content off third-party servers, and has a dedicated HubSpot node that writes to contact and deal properties via the v3 API. The initial build takes around four hours — webhook trigger from HubSpot, classify via OpenAI or Anthropic, write back intent and confidence as contact properties, trigger a HubSpot workflow on those properties. Make achieves the same result but its per-operation pricing becomes expensive above 400 replies per week.

Related Reading

Multi-Channel Outbound: Email, LinkedIn, and Voice Together

How to build a coordinated email + LinkedIn + voice outbound sequence for UK SMEs — cadence design, channel selection, c

Speed-to-lead: the 5-minute window UK SMEs actually need to hit

The 5-minute first-response rule is real, but the published numbers hide where the time actually goes. A field guide for

Need replies sorted and routed without manual triage?

30-minute audit. We map your stack, your constraints, and where AI will pay back fastest.

Take the Quantum Leap →
© 2026 Quantum Automations Group Ltd
Home Blog Portfolio Privacy Terms Security