Raw event data is retained for custom analysis
Why it matters
Raw email event data — individual timestamped rows for each open, click, bounce, and unsubscribe — is the foundation for attribution debugging, engagement scoring, send-time optimization, and retrospective analysis when you change attribution models. Cron jobs that prune events older than 30 days in favor of aggregate counts permanently destroy that foundation. You cannot reconstruct which contacts engaged during a specific window, rerun historical attribution with a different model, or answer 'why did this campaign's conversion rate differ from last quarter?' GDPR Art. 5(1)(e) (storage limitation) requires a documented retention policy — the absence of one is itself a compliance gap, not just an analytics deficiency.
Severity rationale
Low because short retention degrades analytical capability incrementally rather than breaking current reporting, but the data loss is irreversible — you cannot recover deleted events when you later need them for retrospective analysis.
Remediation
Retain raw events for at least 12 months and ensure the table is indexed for performant range queries. If storage is a concern, archive to a cold table rather than deleting:
-- Indexes required for campaign + time-range queries at scale
CREATE INDEX IF NOT EXISTS idx_email_events_campaign_type_occurred
ON email_events (campaign_id, event_type, occurred_at);
CREATE INDEX IF NOT EXISTS idx_email_events_contact_occurred
ON email_events (contact_id, occurred_at);
-- Archive pattern: move, don't delete
INSERT INTO email_events_archive
SELECT * FROM email_events
WHERE occurred_at < NOW() - INTERVAL '12 months';
DELETE FROM email_events
WHERE occurred_at < NOW() - INTERVAL '12 months';
Document your retention period in docs/data-retention.md and in your privacy policy. The Data Quality & List Hygiene Audit covers how long-term event history feeds engagement scoring for contact records.
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 Campaign Analytics & Attribution Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- gdpr · Art. 5(1)(e) — Storage limitation — data not kept longer than necessary
Taxons
History
- 2026-04-18·v1.0.0·Initial import from campaign-analytics-attribution·automated