vakaGitHub

Privacy and data retention

Vaka is built so that analytics need no cookie banner and crash reports carry as little personal data as possible. Defaults are strict; identification is opt-in.

Web analytics

Mobile analytics

User identification (opt-in)

Nothing links data to a person unless the app calls identify(userId). Use an internal, opaque id rather than an email address. identify(null) stops sending it.

Crash report scrubbing

Before storage, error events are scrubbed (per project, on by default):

SDKs also offer a beforeSend-style hook to drop or edit data on the device.

Retention

Each project has a retention period (default 90 days, VAKA_DEFAULT_RETENTION_DAYS). Errors, events and sessions older than that are deleted automatically. Change it with PATCH /api/v1/projects/{p} {"retention_days": 30}; lowering it deletes older data within an hour.

Deleting a user's data

To honour a deletion request (GDPR article 17), delete everything stored for a user id:

curl -X DELETE -H "Authorization: Bearer $VAKA_TOKEN" https://vaka.example.com/api/v1/projects/web/users/user-123

or use the MCP tool delete_user_data. This removes the user's errors, events and sessions and is recorded in the audit log. Data sent without identify is not linked to a user id and cannot be looked up per person.

Where data lives

Everything stays on your server: ClickHouse for events, SQLite or Postgres for metadata, and the data directory for uploaded debug files. Vaka sends nothing to third parties, except email through Resend if you configure it.