A 22-person UK technology reseller ran a quarterly pipeline review and found £1.4M on the board. A stale-deal audit — any open opportunity with no activity in 60 days, no next step, and a close date already past — stripped that to £840k. The missing £560k had been in Proposal Sent for an average of nine weeks. Nobody had called. We ran an outbound voice agent against the 47 stale contacts over three days. Eleven booked a second meeting. Four said they had signed with a competitor three weeks earlier — deals the rep still had as live. The remaining 32 contacts were confirmed holds, polite declines, or three-attempt archives. That's 23% of a dead pipeline producing a booked meeting or clean CRM data in 72 hours, at roughly £400.
Why stale CRM deals survive: the four HubSpot field conditions that keep dead pipeline alive for months
Four structural conditions in HubSpot let dormant deals survive without triggering alerts.
No activity SLA on the deal stage. If a "Proposal Sent" stage doesn't require a next-activity date, it becomes a holding area with no expiry. Deals accumulate without friction.
Close date auto-rollover without forced review. HubSpot flags past close dates by default, but if your admin has suppressed that warning — common after rep pushback — deals drift past their close date silently. The CRM doesn't mark them lost; it just stops reminding anyone.
Deal owner has a quota incentive to keep pipeline inflated. Marking a deal Closed Lost costs a rep a number on their review. Not marking it costs them nothing. This is a process design problem that the CRM faithfully reflects.
No follow-up sequence triggered by stage age. A deal in Proposal Sent for more than 30 days should automatically enrol in a follow-up workflow. Without that automation, the stage is where deals go to be forgotten.
The fix is a nightly HubSpot workflow that flags deals matching all four conditions and routes them to a reactivation queue rather than leaving them to decay. That queue is what the voice agent dials.
Pipeline reactivation vs win-back vs cold outbound: the three campaign types and which one applies
These three campaign types are frequently confused, and using the wrong one produces avoidable friction.
| Campaign type | Contact relationship | Deal status | Goal | Voice agent approach |
|---|---|---|---|---|
| Pipeline reactivation | Had a discovery or proposal conversation | Open deal, no activity 60–90 days | Confirm if the deal is live; move it forward or close it | Reference the specific prior conversation and ask about current timeline |
| Win-back | Was a paying customer; churned or lapsed | No open deal; last invoice 6–18 months ago | Reactivate the commercial relationship | Lead with the business outcome they achieved, not the prior deal |
| Cold outbound | No prior relationship | No deal record | Create a new opportunity | Standard ICP pitch with relevant proof point |
A reactivation call that opens like a cold call will produce polite confusion or an early hang-up. They spoke with your team. They received a proposal. Open with what you know.
The technology reseller's agent opened with: "We last spoke in February about your telephony contract renewing in Q2. I'm calling to see where that project landed for you." That sentence — referencing the product category and timing the contact gave the rep months earlier — drove the 11/47 meeting conversion. A generic "I'm calling to follow up" version run by a different client produced 3/52.
Voice agent script design for dormant deal calls: the first 12 seconds that determine if they remember you
The first 12 seconds must establish three things: who you are, which conversation you're referencing, and what you need in the next 90 seconds. Fail on any one of those and the contact disengages before the first objection.
This is the Retell.ai agent configuration for the technology reseller campaign. The {{deal.description}} variable pulls from a HubSpot custom property — one sentence of deal context written at discovery, synced to the voice platform before the campaign starts.
{
"agent_name": "Pipeline Reactivation",
"initial_message": "Hi {{contact.firstname}}, this is Alex calling from {{company.name}}. We spoke back in {{deal.last_contact_month}} about {{deal.description}}. I wanted to check in on where that project's landed for you — is now a reasonable moment?",
"intent_routing": {
"still_interested": "Great to hear. When's a sensible time to pick this back up properly? I can get fifteen minutes in the diary with your account manager today if that helps.",
"timing_changed": "Understood — timelines shift. What's the realistic picture looking like — are we talking Q1 or is it further out than that?",
"signed_with_competitor": "I'm sorry to hear that. Can I ask which direction you went? Just so I can update our records accurately.",
"not_interested": "No problem at all — I'll close this off our end. Was there anything specific that changed your thinking, just for my notes?",
"voicemail_detected": "Leave a 20-second voicemail referencing the deal and a direct callback number. Do not call again the same day."
}
}
If {{deal.description}} is blank, the agent falls back to the deal name — typically "Opportunity – ABC Ltd". That kills specificity. Empty deal notes are a data quality problem, not a voice agent problem. Require one sentence of context at deal creation. Our voice AI and document analysis case study shows how structured intake fields cascade into reliable downstream automation.
Timing rules for reactivation calls: when to dial and how many attempts before archiving the opportunity
Three rules cover 90% of reactivation timing decisions.
When to start. 60 days from last recorded activity is the floor. Measure from the activity date, not the close date — a rep's close date is an estimate; the activity date is fact. No activity logged at all? Measure from deal creation and flag immediately.
When to dial. For UK B2B contacts, Tuesday to Thursday between 10:00–11:30 and 14:30–16:00 produces the highest answer rates — see our outbound call timing analysis. The difference between a Tuesday at 10:30 and a Friday at 16:00 is roughly 35% in answer rate; across a 47-contact campaign that's 16 additional answered calls.
How many attempts. Three maximum: day one, day three or four, day seven. After three unanswered calls, log "No Response – 3 Attempts" and move to Closed Lost. A fourth attempt starts flagging your number as potential spam with UK mobile carriers. The number warmup and spam flag recovery guide covers how to recover a flagged number, but setting the cap at three means you never need to.
Objection handling for dormant deals: still-interested-but-timing-changed vs signed-with-someone-else
These two outcomes look similar on a call recording and require completely different downstream responses.
Timing changed. The contact is still interested — budget cycle shifted, internal champion left, a restructure froze spend. Log it as "Active – On Hold" with the revisit date captured from the call. Enrol in a 90-day nurture sequence: one email at 30 days referencing what they said, one at 60 days with a case study, a second reactivation call at 90 days. Don't mark this Closed Lost — if you do, it will never get called again.
Signed with a competitor. Record this as a closed loss. The agent script asks which competitor won and what tipped the decision. Log the competitor name in a single-select deal property, not a free-text call note. Notes are unqueryable. Properties let you run a quarterly report showing which competitor is taking your deals and in which segment. If seven Q3 losses cite the same name, you have a product or pricing gap — but only if the data is structured.
Check the ICO's guidance on unsolicited automated telephone calls and our PECR and TPS compliance overview before re-contacting any contact who explicitly says they're not interested. A suppression obligation may apply immediately.
CRM write-back design: what to update in HubSpot when a call requalifies, loses, or needs a follow-up booked
Design the write-back before the call script. Every outcome needs a disposition code; every code needs a mapped set of HubSpot actions. This is the n8n lookup table for a standard reactivation campaign:
{
"disposition_map": [
{
"code": "REQUALIFIED_MEETING_BOOKED",
"deal_stage": "Appointment Scheduled",
"create_task": true,
"task_subject": "Send meeting confirmation and pre-read",
"enrol_sequence": "Post-Reactivation Nurture"
},
{
"code": "TIMING_CHANGED_HOLD",
"deal_stage": "Decision Maker Bought-In",
"set_properties": {
"reactivation_revisit_date": "{{call.revisit_date}}",
"closed_lost_reason": null
},
"enrol_sequence": "90-Day Hold Nurture"
},
{
"code": "CLOSED_LOST_COMPETITOR",
"deal_stage": "Closed Lost",
"set_properties": {
"closed_lost_reason": "Signed - Competitor",
"competitor_won": "{{call.competitor_name}}",
"reactivation_review_date": "{{call.date_plus_365}}"
},
"enrol_sequence": null
},
{
"code": "NO_RESPONSE_3_ATTEMPTS",
"deal_stage": "Closed Lost",
"set_properties": {
"closed_lost_reason": "No Response – 3 Attempts"
},
"enrol_sequence": null
}
]
}
The voice platform fires a POST webhook to n8n on call end. n8n looks up the disposition code and fires the corresponding HubSpot API calls: stage update, property writes, sequence enrolment, call engagement log. Partial-call handling and retry logic are covered in our voice agent fallback and error recovery post.
One field teams consistently omit: competitor_won. Make it a single-select with known competitors pre-populated. Free-text becomes unqueryable clutter within two weeks.
Reactivation rate benchmarks: what 18% of stale pipeline recovered looks like across UK B2B verticals
18% is the figure from the technology reseller engagement — 11 booked meetings from 47 stale contacts, with 30-day attribution showing nine converting to active deals. Across campaigns we've run and data published in HubSpot's 2025 Sales Trends Report, rates vary meaningfully by sector:
| Vertical | Avg deal size | Reactivation rate | Avg time to close from reactivation |
|---|---|---|---|
| Technology / SaaS | £15k–£80k | 15–22% | 28 days |
| Professional services | £8k–£40k | 12–18% | 35 days |
| Manufacturing / industrial | £25k–£150k | 8–14% | 52 days |
| Financial services | £10k–£50k | 10–16% | 45 days |
Two variables move these numbers more than sector type:
Quality of deal notes at stall. Deals with a documented pain point and a specific objection reactivate at roughly 1.4× the rate of deals with no notes. The agent can only be specific if the data is specific.
Time since last activity. Deals dormant 60–90 days reactivate at roughly double the rate of deals dormant beyond 120 days. Leave a stale deal long enough and the reactivation call becomes indistinguishable from a cold call.
The Salesforce State of Sales 2025 report argues the other direction: automated reactivation outreach can suppress future inbound intent from prospects who feel over-contacted — a genuine risk if attempt limits aren't enforced, and the case for keeping attempts at three.
What changed in 2025–2026: HubSpot AI deal scoring and Salesforce Einstein pipeline health signals
Two platform developments from the past 12 months change how reactivation queues are built and prioritised.
HubSpot AI Deal Scoring (GA: November 2025). HubSpot now assigns each deal a predictive close probability that updates daily based on engagement signals — email opens, call logs, meetings, time since last touch. Build a workflow that enrols a deal in the reactivation queue when its score drops below a threshold (we use 15%) rather than relying on a static 60-day filter. Some deals hit the queue before 60 days if signals collapse early; deals with residual positive signals stay out. The HubSpot predictive lead scoring documentation covers setup. The result: a signal-based trigger rather than a purely time-based one.
Salesforce Einstein Deal Health (updated: Q1 2026). Einstein now flags deals where email engagement has dropped without stage progression in a "Deals at Risk" view. If your organisation runs Salesforce, use that view as your reactivation trigger. Watch OpportunityScore combined with LastActivityDate greater than 60 days.
Good / Bad / Ugly: three reactivation campaign designs and their 30-day opportunity recovery rates
Good: Deal-context-first, three attempts, structured write-back — 18–22% recovery
The technology reseller campaign. Agent opens with specific deal context from HubSpot, attempts capped at three over seven days, every outcome writes back with a disposition code that triggers the correct stage update and sequence enrolment. Numbers TPS-screened before start. Campaign completes in three days; RevOps get a clean pipeline the following Monday.
Bad: Generic script, five attempts, no write-back — 4–7% recovery
A professional services firm ran reactivation calls with no reference to the prior deal — just "Hi, we haven't spoken in a while and I wanted to reconnect." Five attempts over ten days, no disposition write-back, reps manually updating HubSpot after reviewing recordings. Two contacts filed ICO complaints. Recovery rate over 30 days was 5%, and two UK mobile carriers flagged the campaign number as potential spam. The number had to be rotated, losing three months of established call history.
Ugly: Bulk email blast to stale deals, no voice — 1–3% recovery
Included because teams try this before approving a voice build. One client sent a "we haven't heard from you" email to 200 stale deals. Eleven replied; three were unsubscribes; two were out-of-office replies from people who'd left the company. No deal moved stage. For pipeline hygiene at the scale that matters, email alone doesn't shift stalled B2B deals. The deal stalled because email wasn't working — sending more email isn't a reactivation strategy.