Skip to main content

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.

  1. Navigate to Configure > Scoring for engagement.
  2. Click any rule row to open the slideout.
  3. Find the Half-Life section.
  4. By default the section reads "No decay". Click Configure decay to start.
  5. Type a value in days, anywhere from 1 to 730. The curve and impact table update as you type.
  6. 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 TypeSuggested Half-Life
page_view14 days
email_open21 days
email_click28 days
form_submit60 days
demo_request90 days
webinar_attend45 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.

  1. Go to Configure > Scoring.
  2. Find the Decay & Freshness card.
  3. Click Apply research defaults to N rules (the number reflects how many of your rules are eligible).
  4. A dialog lists every rule that will change, what its current half-life is (usually "no decay"), and what the new value will be.
  5. 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.

DimensionHalf-Life Available?Why
EngagementYesEach scored event has a timestamp; contributions decay as the event ages.
ProfileNoIndustry, role, and seniority are current facts, not time-stamped events.
AccountNoCompany size and revenue tier are slow-moving attributes, not events.
DealNoDeal 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:

WhenContribution
TodayFull weight
1 week from nowweight × 0.5^(7 / half-life)
1 month from nowweight × 0.5^(30 / half-life)
3 months from nowweight × 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:

SurfaceRefresh Cadence
Score Explain panel on a leadImmediate. The drivers list reflects decayed contributions on the next render.
Real-time score on new eventsImmediate. 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 triggersRe-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

SymptomLikely Cause / Fix
Score dropped sharply after enabling decayExpected on the first overnight refresh. Review the impact table to confirm the new totals match your intent.
Bulk-apply skipped a ruleCheck 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 flatHalf-life value is much larger than the chart window. Reduce it or extend the curve range.
Floor isn't taking effectThe floor is per-ruleset; verify you saved on the Decay & Freshness card, not the rule slideout.
Score Explain shows different number than the lead listThe 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.