Why an unanswered reply is the worst kind of silence
Most "stalled deal" signals are inferential — no activity for X days, close date has slipped, deal hasn't moved stages. Each one needs interpretation. Maybe the buyer is busy. Maybe the rep is in non-logged conversations.
An unanswered email reply is different. It's a discrete, datable event: the buyer reached out, and the rep didn't respond. There's no inference needed. The email is in the timeline. It's been 48 hours. The rep hasn't replied.
The dollar consequences are severe. A buyer who sends an inbound email — especially mid-deal, especially with a question — is either:
- Ready to move forward and asking for the next step.
- Confused or hesitant and the rep's silence pushes them toward "no."
- Comparing you to a competitor who is responding promptly.
All three need a fast reply. The deal is at maximum sensitivity to response time at this exact moment, and the rep is missing it.
What two engagement timestamps actually tell you
Two engagement events to compare:
- Most recent inbound email from the contact (a real email reply, not an auto-reply or a sequence interaction).
- Most recent outbound email from the rep to the contact, logged in HubSpot.
If most recent inbound > most recent outbound AND the inbound is 48+ hours old, the buyer is waiting.
The 48-hour threshold is the standard. Tighter (24h) catches earlier but generates noise around weekends. Looser (72h) is too late.
Why the data fights you on this rule
Several gotchas in the data:
Email integration must be active. This rule only works if the rep has Gmail/Outlook integration logging emails to HubSpot, OR if they're sending from inside the HubSpot interface. Reps who reply from their own inbox without the BCC trick or the integration are invisible to the rule. False positives spike.
Auto-replies count as inbound. "I'm out of the office until Tuesday" is technically an inbound email. Without filtering, the rule flags every OOO reply as an unanswered buyer. The community workaround: keyword-filter inbound emails containing out of office, OOO, automatic reply — but that's brittle.
Forwarded internal emails muddle it. A rep forwards a buyer's email to their manager for advice. The forward shows as an outbound. The rule sees an outbound after the inbound and clears the flag — even though the buyer hasn't received a reply. Detecting this requires checking the To/Cc fields on outbound emails, which native HubSpot filters don't expose well.
HubSpot Marketing-only portals can't see this. The Email Events API used to surface marketing email opens/clicks doesn't cover 1:1 sales emails. The Sales (CRM) Engagements API does, but requires Sales Hub Pro+. For Starter portals, this rule is essentially impossible to build natively.
The rule, when working, is the clearest signal of a stall in your pipeline. The setup cost is non-trivial, and the false-positive rate keeps the maintenance ongoing.
The manual HubSpot recipe
Two custom properties + two workflows + one saved view. Setup takes longer than most rules but the resulting signal is among the most actionable in your pipeline.
- Verify the email integration is logging both directionsCheck Settings → Integrations → Email. Reps need Gmail/Outlook integration enabled OR they need to send from inside HubSpot. Without this, inbound replies don't make it into the engagement timeline.
- Create custom property: Last inbound email dateSettings → Properties → Contacts → Create. Name:
last_inbound_email_date. Type: Date and time. - Create workflow: stamp inbound email dateWorkflows → Create → Contact-based. Trigger: 'Email reply received' OR 'Email engagement created with direction = INBOUND'. Action: set
last_inbound_email_dateto today. - Create custom property: Last outbound email dateSame as above but for outbound. Settings → Properties →
last_outbound_email_date. - Create workflow: stamp outbound email dateWorkflows → Create → Contact-based. Trigger: outbound email sent (excluding sequence-source). Action: set
last_outbound_email_dateto today. - Build the saved viewContacts → Create view. Filter:
last_inbound_email_date is more recent than last_outbound_email_dateANDlast_inbound_email_date is more than 48 hours ago. Save as 'Unanswered buyer replies'.
What Bloated does instead
Inbound replies waiting on the rep — auto-replies, internal forwards, and sequence noise filtered out.
Bloated reads the CRM Engagements API directly, comparing inbound and outbound timestamps per contact while excluding auto-replies, internal forwards, and sequence-source emails. The clearest stall signal in your pipeline becomes a single weekly view. Pair with the suggested action — reply now, escalate to manager, or close the loop with a 'we got pulled into something else' note.
email engagements · HubSpot CRM API