Skip to main content

Data Retention Policy

Last updated: April 26, 2026

This document describes how Racey retains administrative audit-trail data (“Activity Trail”), how that retention varies by plan, and how user deletion interacts with those rows. It is a supplement to — not a replacement for — the main Privacy Policy.

What we log

Racey maintains an administrative audit trail (“Activity Trail”) recording changes to leagues, organizations, teams, scoring rules, broadcast presets, memberships, and roles. Each entry captures:

  • Timestamp (UTC)
  • Actor user id + display name (if signed in)
  • Action (e.g. league.update, role.assign, team_member.remove)
  • Target entity type + id
  • A structured context object (“details”) describing what changed
  • IP address (from the request)
  • League and/or organization scope

Sensitive values — passwords, API keys, session tokens, one-time passwords, authorization headers — are redacted via a blocklist before the row lands in the database.

Retention

PlanRetention
FreeRolling 365 days
ProRolling 365 days
EnterpriseUnlimited

Retention is enforced by a nightly cleanup job that deletes audit rows older than 365 days whose owning league and organization are both on the Free or Pro plan. Rows belonging to Enterprise leagues or organizations are preserved indefinitely.

GDPR & user deletion

When a user requests account deletion:

  • The user's identifying profile fields are anonymized (or removed) on the User row itself (email tombstoned, displayName set to [Deleted User], avatar/banner/bio/helmet image cleared, etc.).
  • Audit rows they previously authored remain in the database. The actorId FK is preserved (it points at the now-anonymized User row), and we additionally scrub ipAddress to NULL and the free-text details JSON to SQL NULL on every row authored by that user. The row retains the original timestamp, action, target type, target id, league id, and org id — these belong to the league or organization that remains accountable for the action and are required for compliance. The AuditActor FK is a nullable relation without an onDelete clause; the cleanup is performed explicitly by the soft-delete routine rather than by a database cascade.
  • No backups are altered; backup retention follows the standard policy documented in our backup runbook.

Export & access

League and organization admins can download the complete Activity Trail (within current retention) from /league/[slug]/activity and /org/[slug]/activity respectively. Exports are CSV, capped at 10,000 rows per download.

Individual users requesting a copy of their own data should email support@racey.gg. Requests are served within 30 days.

Upgrade / downgrade

  • Downgrading Enterprise → Pro/Free: audit rows older than 365 days are queued for removal on the next nightly run. Admins are notified 7 days before the first downgrade-triggered prune.
  • Upgrading to Enterprise: previously-pruned rows cannot be recovered; retention becomes unlimited going forward.

Contact

Data protection inquiries: privacy@racey.gg