Real-Time Intent Scoring — How NurtureHub Knows When a Lead Is Ready
Real-Time Intent Scoring — How NurtureHub Knows When a Lead Is Ready
Introduced in v1.0.26
Overview
NurtureHub's intent scoring engine continuously evaluates contact engagement and produces a rolling 0–100 intent score for every lead in your account. The score updates automatically each time an email event occurs — no configuration required to get started.
When a score crosses a configurable threshold, NurtureHub fires the hot lead alert pipeline, so you're notified the moment a contact moves from passive to active interest.
How Scores Are Calculated
Scores are computed by a background Inngest function that is triggered by every email_event record. The function applies a weighted model to the contact's cumulative engagement history.
Positive signals
| Signal | Points added |
|---|---|
| Email open | +5 |
| Link click | +15 |
| Multiple clicks on the same email | +10 bonus |
| Reply detected | +25 |
| Sequence completion | +10 |
Decay
| Condition | Effect |
|---|---|
| Each day the contact is inactive | −2 points |
Decay prevents stale engagement from inflating scores indefinitely. A contact who opened emails two weeks ago but has had no recent activity will see their score gradually reduce over time.
Score storage
Calculated scores are written to the intent_scores table and are updated incrementally on every event — there is no batch recalculation window.
Alert Thresholds
When a contact's intent score crosses a threshold, NurtureHub automatically triggers the hot lead alert pipeline.
| Score | Label | Default behaviour |
|---|---|---|
| ≥ 70 | Warm | Warm lead alert fired |
| ≥ 85 | Hot | Hot lead alert fired |
Both thresholds are configurable per account. You can raise or lower them to match the typical engagement patterns of your market or contact category.
Tip: For high-volume landlord or investor nurture sequences, consider raising the hot threshold slightly — these contacts tend to click more before committing.
Example Score Progression
The following example shows how a contact's score might build during a standard three-email nurture sequence.
Day 0 Email 1 sent
Day 1 Email 1 opened → score: 5
Day 2 Link clicked in Email 1 → score: 20
Day 2 Second link clicked → score: 30 (+10 multi-click bonus)
Day 4 Email 2 opened → score: 31 (−2 decay day 3, then +5 open day 4)
Day 5 Reply received → score: 54 (+25 reply)
Day 6 Email 3 opened → score: 57
Day 6 Link clicked in Email 3 → score: 72 ← crosses WARM threshold (70)
↳ warm lead alert fires
Day 6 Sequence completed → score: 82
Day 7 Link clicked again → score: 95 ← crosses HOT threshold (85)
↳ hot lead alert fires
What Happens When an Alert Fires
When the intent score crosses a threshold:
- The hot lead alert pipeline is triggered.
- The assigned agent receives a notification with the contact's name, category, current score, and the event that pushed them over the threshold.
- The contact's status in the CRM sync is updated to reflect the new intent level.
Alerts are not re-fired on subsequent score increases unless the score crosses the next threshold. A contact that has already triggered a warm alert will only fire the hot alert once, when the score first reaches 85.
Configuring Thresholds
Thresholds can be adjusted in your account settings under Lead Scoring → Alert Thresholds.
- Warm threshold — default: 70 (range: 1–100)
- Hot threshold — default: 85 (range: 1–100)
The hot threshold must always be set higher than the warm threshold.
Technical Reference
| Component | Detail |
|---|---|
| Trigger | email_event record insert/update |
| Runtime | Inngest background function |
| Output table | intent_scores |
| Score range | 0–100 |
| Decay rate | −2 per inactive day |
| Default warm threshold | 70 |
| Default hot threshold | 85 |