Engagement scoring drives freshness classification
Why it matters
A binary active/suppressed flag treats a contact who opened an email yesterday identically to one who last engaged 5 months ago. Without intermediate engagement tiers, you cannot implement frequency capping for at-risk contacts, sunset programs for lapsed contacts, or segment-specific content strategies — all of which are proven tactics for preserving list health. Flat lists also make it impossible to diagnose why overall open rates are declining, because you cannot isolate the drag from a growing lapsed cohort. Sending at full frequency to all non-suppressed contacts regardless of recency is a recognized deliverability antipattern that contributes to spam trap hits as dormant mailboxes get recycled.
Severity rationale
Medium because a single active/suppressed binary prevents the frequency management needed to protect sender reputation from lapsed-contact drag, indirectly accelerating deliverability decay.
Remediation
Implement at least three engagement tiers and recompute them on a nightly schedule:
type EngagementTier = 'active' | 'at_risk' | 'inactive' | 'lapsed'
function computeTier(lastEngagedAt: Date | null): EngagementTier {
if (!lastEngagedAt) return 'lapsed'
const days = (Date.now() - lastEngagedAt.getTime()) / 86_400_000
if (days <= 30) return 'active'
if (days <= 90) return 'at_risk'
if (days <= 180) return 'inactive'
return 'lapsed'
}
Store engagement_tier on the contact record and recompute nightly via a bulk UPDATE. Use engagement_tier IN ('active', 'at_risk') in campaign segment queries; route inactive contacts to lower-frequency sends; suppress lapsed contacts from all sends pending a sunset re-engagement.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Data Quality & List Hygiene Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- iso-25010:2011 · functional-correctness — Functional Correctness (functional suitability)
Taxons
History
- 2026-04-18·v1.0.0·Initial import from data-quality-list-hygiene·automated