Data Retention Policy

Last updated: March 20, 2026

Effective date: March 20, 2026

This Data Retention Policy describes what data createtodo retains, for how long, and the processes by which data is deleted or anonymized, in accordance with the GDPR principle of storage limitation (Article 5(1)(e)).

1. Guiding Principles

2. Retention Schedule

2.1 User Account Data

DataRetention PeriodTrigger for Deletion
Active user profile (name, email, display name, avatar, timezone, phone)Duration of active accountUser-initiated account deletion or admin soft-delete
Soft-deleted user profile14 days after soft deletion (grace period for recovery)Automated daily purge job permanently erases PII and hard-deletes the user record
Member records (after purge)Indefinite (anonymized shell)Display name replaced with “Former Member”, userId set to null — preserved for content attribution and referential integrity

2.2 Authentication Data

DataRetention PeriodTrigger for Deletion
SessionsUntil session expiry or user logoutAutomatically deleted on expiry; all sessions invalidated on account deletion
Magic link verification tokensMinutes (short-lived by design)Automatically deleted on expiry or successful verification
Passkey credentialsDuration of active accountDeleted during account purge
OAuth account links (GitHub, Google)Duration of active accountDeleted during account purge
Invitation recordsUntil accepted, declined, or expiredAutomatically cleaned up on expiry

2.3 User-Generated Content

DataRetention PeriodTrigger for Deletion
Todos/issuesDuration of workspace existenceSoft-deleted (recoverable), then permanently deleted with workspace
CommentsDuration of workspace existenceSoft-deleted, then permanently deleted with workspace
Projects and lists (containers)Duration of workspace existenceDeleted with workspace
Labels, custom fields, custom field valuesDuration of workspace existenceDeleted with workspace
Workflows and workflow statesDuration of workspace existenceDeleted with workspace
Teams and team membershipsDuration of workspace existenceDeleted with workspace
CyclesDuration of workspace existenceDeleted with workspace

2.4 AI and Chat Data

DataRetention PeriodTrigger for Deletion
AI chat conversationsDuration of workspace existenceDeleted with workspace
Chat messagesDuration of workspace existenceDeleted with workspace
AI action logsDuration of workspace existenceDeleted with workspace
File attachments in chatsDuration of workspace existenceDeleted with workspace
AI tokens (streaming)Duration of parent message existenceCascade-deleted with parent message
User presence recordsDuration of workspace existenceDeleted with workspace

2.5 Organization and Workspace Data

DataRetention PeriodTrigger for Deletion
Organization/workspace recordUntil all members leave or owner deletesOwner-initiated deletion
Member recordsUntil member leaves or is removedImmediate deletion on removal
Workspace settingsDuration of workspace existenceDeleted with workspace
Workspace sequences (counters)Duration of workspace existenceDeleted with workspace

2.6 Payment and Billing Data

DataRetention PeriodTrigger for Deletion
Polar.sh customer referenceManaged by Polar.shPer Polar.sh’s retention policy
Subscription statusManaged by Polar.shPer Polar.sh’s retention policy
Invoices and transaction recordsAs required by applicable tax law (typically 7 years)Managed by Polar.sh

2.7 Email Marketing Data

DataRetention PeriodTrigger for Deletion
Loops contact record (email, user ID, first name)Duration of active accountDeleted from Loops on account deletion or soft-delete
Email event historyManaged by LoopsPer Loops’ retention policy

2.8 Technical and Operational Data

DataRetention PeriodTrigger for Deletion
Application server logs30 daysAutomatic log rotation
Database audit/replication logsManaged by NeonPer Neon’s infrastructure policies
CDN/edge logs (CloudFront)Managed by AWSPer AWS CloudFront log retention settings

3. Account Deletion Process

When a user deletes their account (or an admin soft-deletes a user):

Immediate actions (Day 0):

  1. Account is soft-deleted (deletedAt timestamp set, isActive set to false).
  2. All workspace member records are anonymized (display name set to “Former Member”, avatar removed).
  3. All active sessions are invalidated and deleted.
  4. User’s contact record is removed from the email provider (Loops).

Grace period (14 days):

Automated purge (after 14 days):

  1. User’s name is replaced with an encrypted “Deleted User” placeholder.
  2. Email is replaced with an encrypted deleted-<uuid>@deleted.invalid address.
  3. Email hash is updated to match the anonymous email.
  4. Profile image, display name, avatar URL, and phone number are set to null.
  5. All passkey credentials are deleted.
  6. All OAuth account links are deleted.
  7. All remaining sessions are deleted.
  8. The user record is permanently hard-deleted from the database.
  9. Foreign key cascades set members.userId to null, severing the link between the anonymized member shell and the deleted user.

Admin immediate erase: Administrators can bypass the grace period and immediately erase a user via the admin API, combining both phases in one step.

Content authored by deleted users (todos, comments) is not deleted, but the user’s identity is fully anonymized and attributed to “Former Member”. This preserves workspace integrity for other members.

4. Data Export (Portability)

Users may request an export of their personal data by contacting privacy@createtodo.com. Exports include:

Exports are provided in JSON format within 30 days of the request.

5. Exceptions

Data may be retained beyond the standard retention period when:

6. Review

This policy is reviewed at least annually and updated when new data categories are introduced or retention requirements change.

7. Contact

For data retention inquiries: privacy@createtodo.com