🐋 WhaleWatch← Back to home

Data Retention and Disposal Policy

Version 1.0 · Last updated April 25, 2026
Document purpose. This policy describes how long WhaleWatch retains each category of customer data, how that data is securely disposed of when no longer needed, and how users can exercise their rights to access, correct, or delete data. It is provided to vendors, regulators, and prospective customers in response to data-protection due-diligence requests.

1. Scope

This policy applies to all customer data accessed, processed, or stored by the WhaleWatch application (operated from British Columbia, Canada). It covers personal information collected directly from end users, financial-account data ingested via Plaid, payment metadata received from Stripe, and operational logs generated by the platforms that host the application.

2. Guiding Principles

  • Data minimization. We collect only the data needed to deliver the Service.
  • Purpose limitation. Data is retained only as long as needed for the purpose for which it was collected, plus any period required by law.
  • Storage limitation. Retention periods are bounded and documented in §3 below.
  • Secure disposal. When retention periods expire or a deletion request is honored, data is removed by methods that prevent recovery (see §4).
  • User rights first. A user's deletion request takes precedence over default retention windows except where overridden by law (see §6).

3. Retention Schedule

The following retention periods apply by default:

Data categoryWhere storedRetention
Account profile (email, password hash, preferences)Supabase Auth + PostgresWhile account active. Deleted within 30 days of a verified deletion request.
Watchlists, alerts, notes, delivery channelsSupabase PostgresWhile account active. Deleted in the same cascade as the account.
Plaid access tokensSupabase Postgres (encrypted)Until user disconnects the institution OR account is deleted, whichever is first.
Brokerage holdings, balances, transactions (from Plaid)Supabase PostgresSame as the linked Plaid item. Removed when the institution is disconnected or the account is deleted.
Stripe billing records (subscription state, last-4 of card)Stripe + Supabase Postgres referenceStripe retains billing records per financial regulation (typically 7 years). We delete our reference rows on account deletion.
Transactional email logs (alerts, receipts)ResendPer Resend default (typically 30 days for delivery metadata). We do not store the email body server-side after delivery.
Application audit logs (DB queries, function invocations)SupabasePer Supabase default (~7 days for query logs, longer for security-relevant audit events).
Web request logs (IP, path, status, UA)CloudflarePer Cloudflare default (~7 days).
Database backupsSupabase managed snapshots7 days rolling.
Source codePrivate GitHub repositoryIndefinite version history. Contains no customer data.

All retention periods may be extended where required by applicable law (e.g., tax, anti-money-laundering, litigation hold) or shortened in response to a verified user deletion request (see §6).

4. Disposal Methods

  • Application-level deletion. When a user account is deleted, all rows in our PostgreSQL database keyed to that user are removed via cascading ON DELETE CASCADE foreign-key constraints in a single transaction.
  • Plaid access tokens. When a user disconnects an institution from the in-app portfolio screen, the corresponding Plaid access_token is invalidated through Plaid's /item/remove endpoint and then deleted from our database.
  • Logical deletion of derived data. Holdings, transactions, alerts, and watchlists associated with a deleted account are removed in the same cascade. They are not retained in any anonymized form.
  • Backup expiry. Daily Postgres snapshots taken by Supabase expire after 7 days, after which the deleted rows are unrecoverable from any operational system.
  • Cryptographic erasure. The underlying storage volume is encrypted with AES-256. Decommissioned volumes at our infrastructure providers (Supabase / AWS) are wiped or cryptographically erased per those providers' certified procedures.
  • Log expiry. Logs older than the retention window listed in §3 are dropped automatically by the underlying provider (Cloudflare, Supabase) and cannot be recalled.

5. Subprocessors and Their Retention

We do not directly control retention at our subprocessors, but we hold each to its published retention practices. Users exercising deletion rights can request that we propagate the deletion to subprocessors that hold their data:

  • Supabase — primary database; retention as listed in §3.
  • Cloudflare — request logs (~7 days), no persistent customer data.
  • Plaid — financial-account data; on disconnect, we revoke the access token. Plaid retains its own copy under its data-retention practices, accessible via Plaid's portal.
  • Stripe — payment records retained for the period required by financial-services regulation (typically 7 years).
  • Resend — transactional email metadata retained per Resend's policy; we do not store delivered email bodies.
  • Polygon, Finnhub, FMP, SEC EDGAR, Quiver Quant — public market-data providers; we send no personal information.

6. User Rights

  • Right of access. Users may request a copy of personal information we hold about them by emailing [email protected].
  • Right to correction. Account profile fields are editable in-app; other corrections may be requested by email.
  • Right to deletion. Users may request full deletion of their account and all associated data by emailing [email protected]. We action deletion requests within 30 days, including propagation to subprocessors where applicable.
  • Right to disconnect linked institutions. Users may disconnect any Plaid-linked brokerage from the in-app portfolio screen; this is immediate and self-serve.
  • Right to data portability. Users may export holdings, transactions, watchlists, and alerts in CSV format from the in-app screens, subject to plan limits.
  • Right to complain. Users may file a complaint with the Office of the Privacy Commissioner of Canada (priv.gc.ca) or their local data-protection authority.

7. Legal Holds and Exceptions

Notwithstanding the retention periods listed in §3, we may retain specific records for longer where required to: (a) comply with a legal obligation (tax, AML, securities, or other regulation); (b) preserve evidence relevant to an ongoing legal claim, dispute, or law-enforcement request; or (c) investigate suspected fraud or security incidents. Records held under a legal hold are isolated, access is restricted to the minimum personnel needed, and the hold is released — with retained data deleted — once the triggering condition has been resolved.

8. Roles and Responsibilities

  • Policy owner. WhaleWatch operations team — accountable for maintaining and enforcing this policy.
  • Deletion-request handler. Inbound requests to [email protected] are triaged on receipt and actioned within the 30-day window.
  • Incident escalation. Any retention-related incident (e.g., failed deletion, accidental over-retention) is escalated to [email protected] for remediation and post-incident review.

9. Review Cadence

This policy is reviewed at least annually, and additionally whenever any of the following occurs: a material change to the categories of data we collect; a change in subprocessors; a change in the legal or regulatory environment that affects retention obligations; a security or privacy incident that suggests this policy needs updating.

10. Compliance Mapping

This policy is designed to be consistent with:

  • Personal Information Protection and Electronic Documents Act (PIPEDA) — Canada
  • British Columbia Personal Information Protection Act (PIPA-BC)
  • EU General Data Protection Regulation (GDPR) Articles 5 (storage limitation), 17 (right to erasure), 30 (records of processing)
  • California Consumer Privacy Act / California Privacy Rights Act (CCPA / CPRA)
  • SOC 2 Common Criteria CC6.5 (data disposal) and Privacy Criteria P4 (retention & disposal)

11. Contact

For questions about this policy or to exercise any of the rights listed in §6, contact [email protected]. For privacy or security incidents involving retained data, contact [email protected].

This Data Retention and Disposal Policy supplements the WhaleWatch Privacy Policy and Information Security Policy. In the event of a conflict, the most user-protective interpretation governs.