Effective: 05/20/26 · Version: 1.0
StackSense is still in beta; these policies are subject to change as the product evolves. This policy defines how long StackSense keeps each category of personal data, why, and how it gets deleted. It supports the Privacy Policy and internal compliance obligations.
Define how long StackSense keeps each category of personal data, why, and how it gets deleted. This document supports the Privacy Policy section 7 and is required by GDPR Article 5(1)(e), Quebec Law 25, and several state privacy laws.
This is both a user-facing commitment (summarized in the Privacy Policy) and an internal engineering specification.
| Data category | Source | Retention while account active | Retention after account deletion | Legal basis for retention period |
|---|---|---|---|---|
| Account email and hashed password | User signup | Until account is deleted | Soft-deleted immediately. Hard-deleted within 90 days. | Performance of contract while active. Limited post-deletion for backup cycle. |
| Supplement, peptide, dose logs | User entry | Until account is deleted | Permanently deleted within 90 days from primary DB. Up to 6 months in backups. | Performance of contract. Health data deletion is mandatory under GDPR right to erasure. |
| Symptom logs | User entry | Until account is deleted | Permanently deleted within 90 days. Up to 6 months in backups. | Same. |
| Body composition data | User entry | Until account is deleted | Permanently deleted within 90 days. | Same. |
| Injection site notes | User entry | Until account is deleted | Permanently deleted within 90 days. | Same. |
| Photos attached to logs | User upload | Until account is deleted or user deletes the photo | Permanently deleted within 90 days. | Same. |
| Protocol notes / cycle plans | User entry | Until account is deleted | Permanently deleted within 90 days. | Same. |
| Subscription tier and status | Stripe + our DB | Until account is deleted | Anonymized after deletion. Tier never linked back. | Service delivery. |
| Billing records (invoices, payment history) | Stripe | 7 years from issuance | 7 years from issuance | Canadian tax law (Income Tax Act), Quebec consumer protection law, GAAP. This overrides user deletion requests for billing records only. Users get a clear notice about this in the deletion flow. |
| Stripe customer record | Stripe | Until account is deleted | Anonymized in Stripe (PII fields cleared) after 90 days. Stripe retains transaction records for their compliance reasons (PCI-DSS, AML). | Stripe DPA defines their retention. |
| IP address (server logs) | Web server, Vercel | 30 days | 30 days | Security investigation window. Required for abuse prevention. |
| User-agent strings, device type | Web server | 30 days | 30 days | Same. |
| PostHog / Plausible analytics events | App | 90 days | n/a (anonymized at collection) | Trend analysis. Beyond 90 days we use aggregates. |
| Sentry crash reports (if user opted in) | App | 90 days | 90 days | Bug investigation. |
| Email correspondence (to privacy@, support@) | Gmail/Workspace | 3 years | 3 years | Limitations period for consumer claims. We may shorten this once we have legal counsel. |
| Compliance records (DPAs, breach register, DPIA, audit logs) | Internal | Indefinite for active records, 7 years after retirement | Same | Required for regulator inspection. |
| Signup ToS and Privacy acceptance records | DB | Indefinite while account exists, 7 years after deletion | 7 years | Required to prove consent in disputes. |
When a user deletes their account, we apply the following grace period to prevent accidents:
Users are told this explicitly in the deletion flow and in the Privacy Policy.
If StackSense receives a litigation hold or regulator preservation order, the deletion job must skip affected users. Implement an admin flag:
ALTER TABLE users ADD COLUMN legal_hold BOOLEAN DEFAULT FALSE;
Cron job: WHERE deleted_at IS NOT NULL AND purge_after < NOW() AND legal_hold = FALSE.
When a hold is in place, the user remains soft-deleted but data is preserved. Inform the user that we have received a legal order (unless prohibited from doing so).
Stripe customer records and our local billing-summary records (subscription_history, invoices, payment_history) are retained for 7 years from the transaction date. This is to satisfy:
Tell users this in the deletion flow:
When you delete your account, your health data is gone from our active database within 90 days. Your billing records will be retained for 7 years because tax law requires it. These records show only that you paid for the service, the amount, and the date. They do not include health data.
This honors the user's right to erasure to the maximum extent permitted under Article 17(3)(b) GDPR (compliance with legal obligation).
Users can also delete individual logs (a wrong entry, a private note) without deleting their whole account. These deletions follow the same backup-rotation rule: gone from primary DB immediately, gone from backups on rotation.
We do not maintain a "trash bin" by default. If a user wants undo, that's a product feature, not a compliance one. Currently out of scope.
Each vendor processing user data must also honor deletion within a comparable timeline. Verified via:
| Vendor | Their retention commitment | Where documented |
|---|---|---|
| Supabase | Honors data deletion within standard backup window | DPA |
| Vercel | Logs auto-delete on schedule, no persistent user PII | DPA |
| Stripe | Anonymizes customer PII on request, retains transaction data per their compliance | DPA |
| Anthropic | No personal data sent under our integration. Generic compound queries only. | DPA + architecture review |
| PostHog / Plausible | Anonymized at collection, 90-day retention | Privacy settings + DPA |
| Sentry | 90-day retention setting we control | Project settings |
When we delete a user, we trigger downstream deletion at each vendor where required.
Summarize this in plain English in the Privacy Policy section 7 and the in-app data rights panel. Don't make users read this whole policy.
User-facing summary:
When you delete your account, your health data is gone from our active database within 90 days. Backups roll off over the following 6 months. Your billing records are retained for 7 years because tax law requires it.
This policy is reviewed annually, or whenever:
Last reviewed: 05/20/26
End of Data Retention Policy. Version 1.0.
Cette politique définit pendant combien de temps StackSense conserve chaque catégorie de données personnelles, pourquoi et comment elles sont supprimées. Elle soutient la section 7 de la Politique de confidentialité et les obligations de conformité internes.
Il s'agit à la fois d'un engagement public et d'une spécification technique interne.
| Catégorie de données | Source | Conservation pendant le compte actif | Conservation après suppression du compte | Base juridique du délai de conservation |
|---|---|---|---|---|
| Adresse e-mail et mot de passe haché | Inscription de l'utilisateur | Jusqu'à la suppression du compte | Suppression logique immédiate. Suppression définitive sous 90 jours. | Exécution du contrat pendant la période active. Conservation limitée après suppression pour le cycle de sauvegarde. |
| Journaux de suppléments, peptides et dosages | Saisie utilisateur | Jusqu'à la suppression du compte | Suppression définitive sous 90 jours depuis la base de données principale. Jusqu'à 6 mois en sauvegarde. | Exécution du contrat. La suppression des données de santé est obligatoire en vertu du droit d'effacement du RGPD. |
| Journaux de symptômes | Saisie utilisateur | Jusqu'à la suppression du compte | Suppression définitive sous 90 jours. Jusqu'à 6 mois en sauvegarde. | Idem. |
| Données de composition corporelle | Saisie utilisateur | Jusqu'à la suppression du compte | Suppression définitive sous 90 jours. | Idem. |
| Notes sur les sites d'injection | Saisie utilisateur | Jusqu'à la suppression du compte | Suppression définitive sous 90 jours. | Idem. |
| Photos jointes aux journaux | Téléversement utilisateur | Jusqu'à la suppression du compte ou la suppression de la photo par l'utilisateur | Suppression définitive sous 90 jours. | Idem. |
| Notes de protocole / plans de cycle | Saisie utilisateur | Jusqu'à la suppression du compte | Suppression définitive sous 90 jours. | Idem. |
| Niveau et statut d'abonnement | Stripe + notre base | Jusqu'à la suppression du compte | Anonymisation après suppression. Le niveau n'est plus lié. | Prestation du service. |
| Dossiers de facturation (factures, historique de paiement) | Stripe | 7 ans à partir de l'émission | 7 ans à partir de l'émission | Loi fiscale canadienne (Loi de l'impôt sur le revenu), loi québécoise sur la protection du consommateur, principes comptables. |
| Enregistrements client Stripe | Stripe | Jusqu'à la suppression du compte | Anonymisation dans Stripe (champs PII effacés) après 90 jours. Stripe conserve les enregistrements de transaction pour ses obligations de conformité (PCI-DSS, AML). | La DPA Stripe définit leur conservation. |
| Adresse IP (journaux serveur) | Serveur Web, Vercel | 30 jours | 30 jours | Fenêtre d'investigation de sécurité. Requise pour la prévention des abus. |
| Chaînes user-agent, type d'appareil | Serveur Web | 30 jours | 30 jours | Idem. |
| Événements analytiques PostHog / Plausible | Application | 90 jours | n/a (anonymisés à la collecte) | Analyse des tendances. Au-delà de 90 jours, nous utilisons des agrégats. |
| Rapports de plantage Sentry (si opt-in) | Application | 90 jours | 90 jours | Investigation de bugs. |
| Correspondance e-mail (privacy@, support@) | Gmail/Workspace | 3 ans | 3 ans | Délai de prescription pour les réclamations des consommateurs. Nous pourrons réduire cela après avis juridique. |
| Dossiers de conformité (DPA, registre des violations, AIPD, journaux d'audit) | Interne | Indéfini pour les dossiers actifs, 7 ans après mise hors service | Idem | Requis pour inspection des régulateurs. |
| Registres d'acceptation des CGU et de la Politique de confidentialité | Base de données | Indéfini tant que le compte existe, 7 ans après suppression | 7 ans | Requis pour prouver le consentement en cas de litige. |
Lorsque un utilisateur supprime son compte, nous appliquons la période de grâce suivante afin d'éviter les accidents :
Nous informons les utilisateurs de cela explicitement dans le flux de suppression et dans la Politique de confidentialité.
Si StackSense reçoit une mesure de conservation judiciaire ou une ordonnance de régulateur, la tâche de suppression doit ignorer les utilisateurs concernés. Implémenter un indicateur administratif :
ALTER TABLE users ADD COLUMN legal_hold BOOLEAN DEFAULT FALSE;
Tâche cron : WHERE deleted_at IS NOT NULL AND purge_after < NOW() AND legal_hold = FALSE.
Lorsqu'une conservation est en place, l'utilisateur reste supprimé logiquement mais les données sont conservées. Informer l'utilisateur qu'une ordonnance légale a été reçue (sauf si la loi interdit de le faire).
Les dossiers clients Stripe et nos propres dossiers de facturation locale (subscription_history, invoices, payment_history) sont conservés 7 ans à compter de la date de transaction. Cela permet de satisfaire :
Informer les utilisateurs de cela dans le flux de suppression :
Lorsque vous supprimez votre compte, vos données de santé sont effacées de notre base de données active sous 90 jours. Vos dossiers de facturation sont conservés pendant 7 ans parce que la loi fiscale l'exige. Ces dossiers ne montrent que que vous avez payé pour le service, le montant et la date. Ils n'incluent pas de données de santé.
Cela respecte le droit à l'effacement de l'utilisateur dans la mesure maximale permise par l'article 17(3)(b) du RGPD (obligation légale).
Les utilisateurs peuvent également supprimer des entrées individuelles (une saisie incorrecte, une note privée) sans supprimer l'ensemble du compte. Ces suppressions suivent la même règle de cycle de sauvegarde : elles disparaissent de la base principale immédiatement, et des sauvegardes lors de leur rotation.
Nous ne maintenons pas de « corbeille » par défaut. Si un utilisateur souhaite annuler une suppression, c'est une fonctionnalité produit, pas une exigence de conformité. Actuellement hors scope.
Chaque fournisseur traitant des données utilisateur doit également respecter une suppression dans un délai comparable. Vérifié via :
| Fournisseur | Engagement de conservation | Où documenté |
|---|---|---|
| Supabase | Respecte la suppression dans le délai standard des sauvegardes | DPA |
| Vercel | Journaux auto-supprimés selon le calendrier, pas de PII utilisateur persistante | DPA |
| Stripe | Anonymise les PII client sur demande, conserve les données de transaction pour sa conformité | DPA |
| Anthropic | Pas de données personnelles envoyées via notre intégration. Requêtes génériques sur les composés uniquement. | DPA + revue d'architecture |
| PostHog / Plausible | Anonymisés à la collecte, conservation de 90 jours | Paramètres de confidentialité + DPA |
| Sentry | Conservation de 90 jours que nous contrôlons | Paramètres de projet |
Lorsque nous supprimons un utilisateur, nous déclenchons la suppression en aval chez chaque fournisseur concerné.
Résumez cela en termes simples dans la section 7 de la Politique de confidentialité et dans le panneau des droits des données de l'application. Ne forcez pas les utilisateurs à lire toute cette politique.
Résumé destiné aux utilisateurs :
Lorsque vous supprimez votre compte, vos données de santé sont supprimées de notre base de données active sous 90 jours. Les sauvegardes s'effilent au cours des 6 mois suivants. Vos dossiers de facturation sont conservés pendant 7 ans parce que la loi l'exige.
Cette politique est révisée annuellement, ou chaque fois que :
Dernière révision : 05/20/26
Fin de la politique de conservation des données. Version 1.0.