// Hypothesis
Purchase intent and email engagement do not decay uniformly across a subscriber list. Instead, each contact follows an individual decay function that is a product of their purchase history, category affiliation, and historical engagement patterns. A model that treats all contacts as equivalently engaged – or equivalently disengaged – systematically misdirects send volume and suppresses revenue.
// Variables
Independent variable
Days since last purchase / last engagement event
Dependent variable
Open probability, click probability, purchase probability per send
Control condition
Standard segment-level send cadence
Test condition
Send cadence adjusted per contact based on predicted engagement score
Confounders controlled
Seasonality, campaign type, product category, acquisition source
Significance threshold
p < 0.05 on revenue per send, lift vs control group
// Method
We extract the full event history for each contact from Klaviyo – open events, click events, purchase events, site visits – and fit an exponential decay function to their engagement probability over time. This produces a personalised engagement score, updated weekly, for every contact in the account. We then split the list: control group receives standard cadence, test group receives cadence calibrated to their individual score. We run for 8 weeks and measure revenue per send, unsubscribe rate, and list health metrics.
// Typical finding
// result
The decay curve is steeper than most brands assume and varies significantly by product category. Impulse-purchase categories show 70%+ engagement decay within 14 days of last purchase. Considered-purchase categories maintain elevated engagement for 45-90 days. Contacts in the low-score tier (<20% engagement probability) generate negative ROI when sent standard campaign volume – their unsubscribe contribution outweighs their revenue contribution. Reducing their cadence typically increases list health metrics without meaningful revenue loss, while freeing send volume for high-probability contacts.
// Terminal output
// recency_decay_curve · run complete
account: [UK fashion · £6.4m]
contacts_modelled: 84,203
decay_model: exponential · half-life = 11.3 days
r² = 0.847 (strong fit)
segment_high_prob (>60%): 18,440 contacts
segment_mid_prob (20-60%): 31,200 contacts
segment_low_prob (<20%): 34,563 contacts
test_result:
revenue_per_send: +34% vs control
unsubscribe_rate: -41% vs control
list_health_score: improved significantly
status: // CONFIRMED · deploying score model