Half-Life Decay
Half-life decay is how kenbun keeps engagement scores honest. A page view from this morning matters more than a page view from last quarter. With half-life turned on, each scoring contribution fades over time on a curve you control, so a lead's score reflects what they're doing now, not what they did six months ago.
Why Half-Life Matters
Without decay, scores accumulate forever. A lead who downloaded an ebook a year ago and hasn't done anything since can outrank someone who attended a webinar yesterday. Sales teams end up chasing stale leads while fresh interest goes unnoticed.
Half-life solves that with a simple idea: every scoring signal halves its contribution every N days. You set N. Recent activity dominates the score; old activity fades into the background.
The business win:
- Your "Hot" leads list reflects real, current interest.
- Re-engagement is detectable. A dormant lead who suddenly clicks three emails will surge above peers whose old activity has decayed away.
- You stop pestering leads whose interest evaporated months ago.
- Forecasting gets sharper because score is a leading indicator, not a lagging total.
How The Math Works
Each event's contribution to the score is multiplied by 0.5^(days_since_event / half_life_days).
In plain language: the contribution halves every half-life-days days.
A worked example. Say you have a rule:
- Event Type: Page View
- Weight: 10
- Half-Life: 14 days
A page view fired today contributes 10 points. Two weeks from now (one half-life), the same page view contributes 5. A month from now (just over two half-lives), it contributes about 2.5. Three months out, it's down to roughly 0.6.
You see this curve live in the rule editor. As you type a half-life value, the chart redraws and an impact table updates with the contribution at today, 1 week, 1 month, and 3 months. When you're editing an existing rule, the gray line shows the current setting and the violet line shows the proposed setting, so you can compare before saving.
The Signal Floor
Pure exponential decay eventually approaches zero, which means very old contributions effectively disappear. Some teams want a softer fade. The signal floor sets a minimum percentage each contribution preserves, no matter how old.
A 50% floor means a 10-point page view never drops below 5 points, even years later. The math: final = max(weight × 0.5^(t/half_life), weight × floor).
Floor values:
- 0%: pure decay; signals fade all the way to zero.
- 50% (default): balanced; signals retain at least half their weight forever.
- 100%: equivalent to no decay at all.
The signal floor is a per-ruleset setting. It applies to every rule in that ruleset.
Configuring Half-Life On A Rule
Half-life lives in the rule editor slideout, alongside weight and filters.
- Navigate to Configure > Scoring for engagement.
- Click any rule row to open the slideout.
- Find the Half-Life section.
- By default the section reads "No decay". Click Configure decay to start.
- Type a value in days, anywhere from 1 to 730. The curve and impact table update as you type.
- Click Save in the slideout footer.
Half-life is available on the engagement scoring page only. Profile, account, and deal scoring evaluate current attribute values and do not use event timestamps, so the decay formula has no meaningful input on those dimensions.
Apply A Suggested Default
For common B2B SaaS event types, kenbun ships research-backed half-life defaults based on practitioner data. When you're editing a rule whose event type has a known default, an Apply suggested: Nd chip appears in the section header. Click it to populate the field.
The event types currently covered:
| Event Type | Suggested Half-Life |
|---|---|
page_view | 14 days |
email_open | 21 days |
email_click | 28 days |
form_submit | 60 days |
demo_request | 90 days |
webinar_attend | 45 days |
Higher-intent signals (a demo request) get longer half-lives because their predictive value persists. Low-intent signals (a page view) decay fast because they're noisy and abundant.
Bulk-Applying Research Defaults
If you've never configured decay before, do it in one click instead of opening every rule.
- Go to Configure > Scoring.
- Find the Decay & Freshness card.
- Click Apply research defaults to N rules (the number reflects how many of your rules are eligible).
- A dialog lists every rule that will change, what its current half-life is (usually "no decay"), and what the new value will be.
- Confirm to apply.
Each rule update is independent. If one rule has a transient error, the others still apply; you'll see a status next to each rule in the result. Every change is audit-logged with the user who made it.
Skip reasons you might see:
- Already configured: the rule already has a half-life set; we don't overwrite.
- No research default: the event type isn't in the practitioner table, or the rule scores sessions/profiles instead of events.
- Firmographic dimension: profile and account rules are excluded; their data shouldn't fade.
Setting The Signal Floor
The floor is a slider on the Decay & Freshness card on the Scoring page (one floor per ruleset, not per rule).
- Drag the slider to set a percentage from 0% to 100%.
- The default is 50%.
- Changes save when you click Save on the card.
When to raise the floor:
- Long sales cycles. If your average deal closes 9 months after first touch, you don't want first-touch signals to vanish.
- Account-based motions where buying-committee history matters across quarters.
When to lower the floor:
- High-velocity inbound where freshness is everything.
- Free-trial motions where last-week behavior is the whole story.
Engagement Only
Half-life applies only to engagement scoring. Profile, account, and deal scoring evaluate the lead's or account's current attributes — there is no event-occurred-at moment for the decay formula to apply against. The half-life UI is intentionally available on the engagement scoring page only.
| Dimension | Half-Life Available? | Why |
|---|---|---|
| Engagement | Yes | Each scored event has a timestamp; contributions decay as the event ages. |
| Profile | No | Industry, role, and seniority are current facts, not time-stamped events. |
| Account | No | Company size and revenue tier are slow-moving attributes, not events. |
| Deal | No | Deal property values (stage, amount) are current state, not event occurrences. |
Reading The Curve
The curve in the slideout is the visual; the impact table is the ground truth.
The impact table shows the contribution of one event of this type at four checkpoints:
| When | Contribution |
|---|---|
| Today | Full weight |
| 1 week from now | weight × 0.5^(7 / half-life) |
| 1 month from now | weight × 0.5^(30 / half-life) |
| 3 months from now | weight × 0.5^(90 / half-life) |
Hover over the curve for any day in the next year to see the exact contribution. When you're editing an existing rule, the proposed (violet) curve overlays the current (gray) curve so you can see the delta before saving.
A useful sanity check: if your impact at 3 months is below 1 point, the rule is essentially "score one event per quarter, then forget it". If that's not your intent, raise the half-life.
When Does The New Math Take Effect?
Different surfaces refresh on different schedules. Here's what to expect when you save a half-life change:
| Surface | Refresh Cadence |
|---|---|
| Score Explain panel on a lead | Immediate. The drivers list reflects decayed contributions on the next render. |
| Real-time score on new events | Immediate. As soon as a new event fires, it's scored with the current half-life. |
| Top-level lead score (the number on lists and charts) | Recomputed automatically, on a schedule (overnight). |
| Segments and triggers | Re-evaluated on the next score change for each lead. |
The practical effect: changes you make to half-life feel instant when you drill into a specific lead, and propagate to lists and dashboards by the following day.
Best Practices
- Start with research defaults. Don't guess. The bulk-apply button gives you a strong baseline; tune individual rules from there.
- One floor per ruleset, set it deliberately. 50% is a safe default. Move it only if you have a specific reason.
- Don't mix decay and weight changes in the same review cycle. When you tune both, you can't tell which knob caused the score drift. Change one, observe a week, then change the other.
- Use the curve before saving. If the projected contribution at 1 month doesn't match your intuition, the half-life is wrong.
- Audit periodically. Every six months, re-open the Decay & Freshness card and ask whether the values still match your sales motion. If your cycle lengthens (or shortens), so should your half-lives.
Troubleshooting
| Symptom | Likely Cause / Fix |
|---|---|
| Score dropped sharply after enabling decay | Expected on the first overnight refresh. Review the impact table to confirm the new totals match your intent. |
| Bulk-apply skipped a rule | Check the result dialog for the skip reason; most often the rule is already configured or the event type isn't in the table. |
| Curve looks flat | Half-life value is much larger than the chart window. Reduce it or extend the curve range. |
| Floor isn't taking effect | The floor is per-ruleset; verify you saved on the Decay & Freshness card, not the rule slideout. |
| Score Explain shows different number than the lead list | The list shows the last persisted total; Score Explain shows the live recomputed value. They reconcile after the next refresh. |
Programmatic Bulk-Apply
If you manage rules via API, the same suggestions endpoint backs the UI button. See Half-Life Suggestions for the request and response shape, and Engagement Rules for setting half-life directly on a rule.
Related
- Decay Rules: flat per-day point reductions, complementary to half-life
- Scoring Rules Overview
- Engagement Scoring
- Score History