Reputation history stored for trend analysis
Why it matters
Reputation monitoring that overwrites the current value on each update cannot answer the question every deliverability incident requires: was reputation already trending down before the campaign that triggered the alert, or did it spike suddenly? Trend analysis distinguishes a gradual erosion (a list quality problem) from an acute spike (a bad campaign or an infrastructure misconfiguration). Without historical rows, you cannot correlate reputation changes with specific sends, detect seasonal patterns, or demonstrate to an ESP's abuse team that a reputation problem is resolved. The operational blind spot shows up worst in post-incident review.
Severity rationale
Low because single-row upsert storage does not cause immediate delivery failure, but it eliminates the ability to perform trend analysis or root-cause incident review without external tooling.
Remediation
Add a time-series model alongside (not replacing) the current-value model. Use a composite unique key on (domain, date) so daily runs are idempotent:
// In prisma/schema.prisma
model DomainReputationHistory {
id String @id @default(uuid())
domain String
date DateTime @db.Date
spamRate Float?
inboxRate Float?
dkimPassRate Float?
createdAt DateTime @default(now())
@@unique([domain, date])
@@index([domain, date])
}
// Daily cron — upsert so reruns are safe
await db.domainReputationHistory.upsert({
where: { domain_date: { domain, date: startOfDay(new Date()) } },
update: { spamRate, inboxRate, dkimPassRate },
create: { domain, date: startOfDay(new Date()), spamRate, inboxRate, dkimPassRate }
})
Query this table with a 30-day or 90-day window to render trend charts and detect sustained degradation. Keep the single-row DomainReputation model for current-state lookups that need low latency.
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 Deliverability Engineering Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- iso-25010:2011 · reliability — ISO 25010 Reliability characteristic
Taxons
History
- 2026-04-18·v1.0.0·Initial import from deliverability-engineering·automated