| Data Type | Where Stored | Retention Period | Deletion Trigger |
|---|---|---|---|
| Account credentials (email, hashed password, OAuth tokens) | Firebase Auth | Until account deletion (immediate) | Account deletion request |
| Primary Member profile (name, age range) | Firestore: users/{uid} | Until account deletion (immediate) | Account deletion request |
| Family Member profile (name, relationship) | Firestore: users/{uid} | Until account deletion (immediate) | Account deletion request |
| Family Memory photos | Firebase Storage: memories/{seniorId}/ | Until deleted by a Family Member, or account deletion (immediate) | Family Member deletes memory OR account deletion |
| Family Member voice messages | Firebase Storage: memories/{seniorId}/voice/ | Until deleted by a Family Member, or account deletion (immediate) | Family Member deletes memory OR account deletion |
| Family Member voice questions | Firebase Storage: memories/{seniorId}/questions/ | Until deleted by a Family Member, or account deletion (immediate) | Family Member deletes memory OR account deletion |
| Primary Member voice replies | Firebase Storage + Firestore: users/{uid}/voiceReplies/ | Until account deletion | Account deletion (immediate and permanent) |
| Daily session records (puzzle scores, wellness answers, completion) | Firestore: users/{uid}/sessions/{date} | Until account deletion | Account deletion (immediate and permanent) |
| Streak data | Firestore: users/{uid} | Until account deletion | Account deletion request |
| Push notification tokens | Firestore: users/{uid}.expoPushToken | Until token expires or account deletion | Expo token expiry or account deletion |
| Record of notifications sent (kind, wording, the delivery service's answer) | Firestore: users/{uid}/notificationsSent | 90 days | Automatic expiry, or account deletion (immediate) |
| Memory lastShownAt timestamps | Firestore: memories/{seniorId}/items/{id} | Same as parent memory doc | Memory deletion or account deletion |
| Analytics events | Firestore: events/ | Retained indefinitely. These records contain no photos, recordings or written messages. While your account exists they are keyed to your account identifier; when you delete your account, the identifier is removed from them. | Account deletion removes the identifier; manual deletion on request (email us) |
| Support email correspondence | Google Workspace (Gmail) | 2 years from last correspondence | Manual deletion after 2-year mark |
| Aggregated / anonymized analytics | Internal only | Indefinite (no personal identifiers) | Not applicable |
You do not need to wait for a scheduled purge. You can delete data earlier:
In limited circumstances, we may be required to retain data beyond our standard retention periods to comply with a legal obligation, court order, regulatory investigation, or to preserve evidence in connection with an active legal dispute. In such cases, we will retain only the minimum data required and for no longer than legally necessary.
Data shared with third-party services (Firebase/Google; and, until October 18, 2026, Anthropic) is subject to those services' own retention policies. Until then we sent minimal data to Anthropic (name, relationship, caption, category only); nothing is sent now, and we do not control Anthropic's retention period for API request logs. See our Privacy Policy for links to each vendor's policy.
Questions or deletion requests: joy@joyhealthtechnologies.com
Related: Data Deletion Policy · Account Deletion Policy · Privacy Policy