Per-campaign health metrics tracked
Why it matters
Aggregate email metrics hide which campaign is hurting your sender reputation. A bounce rate of 4% looks alarming in aggregate but harmless if it comes entirely from one poorly-segmented cold campaign — and fixable once you can isolate it. Without campaign_id on individual event records, triage requires reconstructing send state from logs and timestamps, which takes hours during an active incident. The Campaign Analytics & Attribution Audit validates attribution accuracy; this check verifies that the raw event storage layer records the campaign context in the first place.
Severity rationale
Medium because missing campaign attribution makes deliverability triage time-consuming and imprecise, slowing incident response during bounce rate spikes.
Remediation
Include campaign_id on every email event record in your webhook handler (e.g., src/app/api/webhooks/email/route.ts):
await db.emailEvent.create({
data: {
type: 'bounce',
campaign_id: send.campaignId,
contact_id: send.contactId,
recorded_at: new Date()
}
})
All five event types — bounce, complaint, open, click, and unsubscribe — must include campaign attribution at the individual event level. Aggregate-only storage does not satisfy this check.
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 Operational Resilience (Email) Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- iso-25010:2011 · reliability.operability — Reliability / Operability — per-campaign attribution required for operator visibility
Taxons
History
- 2026-04-18·v1.0.0·Initial import from operational-resilience-email·automated