Before requesting account deletion, users with an active subscription must cancel their subscription through the app store:
| Store | Cancellation method |
|---|---|
| Google Play | Google Play Store app → Subscriptions → [App Name] → Cancel |
Account deletion does not cancel Google Play billing. The user must cancel their subscription independently before deletion proceeds.
Account deletion forfeits any remaining in-app paid access. The user will not receive a refund or credit for the unused portion of the billing period. This is communicated to the user before they confirm deletion.
| Data type | Stored in | Erased? |
|---|---|---|
| Account profile (name, language preferences, goal) | Firebase Auth + Firestore /users/{uid} | ✓ Yes |
| Journal entries | Firestore /users/{uid}/journal/* + local Hive | ✓ Yes |
| Streak data | Firestore profile + local Hive | ✓ Yes |
| Authentication credentials (email/password) | Firebase Authentication | ✓ Yes |
| Local notification preferences | Device Hive | ✓ Yes |
| Data type | Stored in | Retained? | Reason |
|---|---|---|---|
| Deletion record | Firestore /deletionFences/{uid} | ✓ Yes, temporarily | Prevents account recreation during pending deletion; TTL-based auto-cleanup |
| RevenueCat purchase history | RevenueCat servers | ✓ Yes | Required for restore and refund handling; no personal data |
| Google Play subscription status | Google Play | ✓ Yes | Managed by Google; subject to Google's data policies |
| Crash/analytics logs | Firebase Crashlytics (if enabled) | ✓ Yes | Aggregated, not personally identifiable; retained per Firebase retention policy |
Journal entries, streak data, profile, and preferences stored locally in Hive are not erased by the remote deletion process. The app shows a confirmation screen after deletion advising the user to uninstall the app or clear app data to remove local residuals.
| Scenario | Policy |
|---|---|
| Same email address, new sign-up | ✓ Allowed — creates a fresh account. Previous journal entries, streaks, and profile data are not recoverable. |
| Same email address, sign-in after deletion | ✗ Deleted accounts cannot be restored. The user must go through sign-up to create a new account. |
| Pending deletion (deletion in progress) | ✗ Account cannot be used during deletion processing. |
| Active subscription was cancelled before deletion | ✓ The user may sign up again with the same or different email. A new purchase is required for Premium access. |
Purchases are bound to the original RevenueCat App User ID (the deleted Firebase UID). After account deletion, the original purchase history remains in RevenueCat but is not transferable to a new account. The user must make a new purchase if they want Premium access on a new account. For exceptional cases (e.g., deletion was accidental), users should contact support.
| Data | Purpose | Shared with |
|---|---|---|
| Email address | Account authentication | Firebase Auth |
| Language preferences | Content and UI language selection | Firestore |
| Journal entries | User's personal reflections | Firestore |
| Streak data | Daily completion tracking | Firestore |
| Subscription status | Premium entitlement | RevenueCat |
| Notification preference | Daily reminder scheduling | Device only, not shared |
| Device locale | Language preselection on onboarding | Device only, not shared |
| Service | Data accessed | Purpose |
|---|---|---|
| Firebase Authentication | Email, UID | Account sign-in/up |
| Cloud Firestore | Profile, journal, streak data | Cloud sync |
| RevenueCat | App User ID (Firebase UID), purchase tokens | Subscription management |
| Google Play | Subscription status, purchase tokens | Billing |
No personal data is sold. No data is shared with advertising networks.
Users can request account deletion through:
The deletion process:
Support: Email: [Support email — TBD]
Online: shloka-byte-policies.pages.dev/account-data-policy.html
Response time: Within 5 business days
This policy may be updated as the app's features and data handling evolve. Users will be notified of material changes via in-app notification and an updated "Last updated" date. Continued use of the app after policy changes constitutes acceptance of the updated terms.