How to delete raw analytics events without losing historical reports

Create and verify the historical rollups you intend to keep before deleting a raw event. Preview eligible rows, delete them in bounded resumable batches, and checkpoint or vacuum only after cleanup succeeds. Only dimensions designed into the rollups survive.

Approximately 3 KB gzipped tracker · permanent rollups · opt-in 00:05 cleanup with dry run

Create the reports you need before deleting events

Create and verify the historical rollups you intend to keep before deleting a raw event. Daily traffic, search, crawler, index-count, and first-touch landing-source history can remain useful after the underlying events age out.

The cleanup contract creates and verifies those permanent rollups before deleting eligible raw records. Only dimensions designed into the rollups survive; arbitrary raw-event reconstruction is intentionally unavailable after deletion.

Cleanup is optional and inspectable

The operator can enable a daily 00:05 cleanup, inspect a dry run from the administration interface, and keep every snapshot. Deletes run in bounded resumable batches so an interruption does not turn one maintenance job into a database recovery event.

  • Permanent daily, search, crawler, index-count, and landing-source rollups
  • Dry-run counts before destructive work
  • Resumable bounded deletion rather than one unbounded transaction
  • Guarded checkpoint and VACUUM after rollups and deletions succeed

Access and identity remain deliberately narrow

The stateless tracker uses no cookies or browser storage and does not write raw IP addresses, full user agents, or Client Hints. View invitations are hashed, revocable, and scoped to one property.

Visitor-days are estimates, not unique people. Edge crawler identity is user-agent-claimed unless the source IP is validated. AParser index-count checks are operator-triggered, and exact-day page and source exports currently exist through the API rather than the dashboard.

What the implementation proves

  • Tracker measured 3,066 bytes with GNU gzip's default compression level and header
  • Multi-property traffic, GSC, Bing, crawler, and index-count views
  • Hashed revocable property-scoped view invitations
  • Tracker tests passed 9/9; Svelte check reported zero issues; dashboard build completed

Limits: Visitor-days are not unique users. · User-agent-claimed crawler traffic is not provider-confirmed without IP validation. · AParser index counts are operator-triggered, not continuous automatic Google monitoring.