Data on our server

The server keeps eleven tables of account data. Each entry below says what the table stores, why, and how long the rows stay.

  • Email address and plan: your sign-in address, your plan name and the account dates. It identifies your account. It stays until you delete the account.
  • Sign-in codes: your address and a one-way digest of each emailed code, never the code itself. It checks the code you type. A code is valid for 10 minutes, and an hourly sweep deletes rows older than 15 minutes.
  • Signed-in devices: one row per signed-in browser, with its browser user-agent text and the network part of its IP address (the first two octets of IPv4, the first 48 bits of IPv6). It keeps you signed in and fills the devices list in your settings. By default a row expires 30 days after last use and never lives past 90 days from sign-in. An hourly sweep deletes expired rows.
  • Passkeys: the credential id, public key, use counter, authenticator flags, transports list, name and creation and last-use dates of each passkey you register. It lets you sign in with the passkey. It stays until you delete the account.
  • Recovery codes: a SHA-256 digest of each printed recovery code, with issue and use dates. It signs you in when your passkey and mailbox are both gone. It stays until you delete the account.
  • Pending email changes: the new address you asked for and a digest of its confirmation code. It confirms the change. An hourly sweep deletes rows older than 24 hours.
  • Signup invitations: the invited address, a one-way digest of the invitation code, never the code itself, and the status, creation, expiry and use dates. It checks the code you enter at signup. No sweep deletes these rows, so they stay until you delete the account.
  • Security notices: your address, the text of each security notice we send about a data breach, and the dates it was approved and mailed. It records who received which notice. It stays until you delete the account.
  • Saved dashboard layouts: the name, page and arrangement of each layout you save. It keeps a server copy of your layouts. It stays until you delete the account.
  • API tokens: the name, scopes, a short prefix and a one-way hash of each token, with creation, expiry, last-use and revocation dates. The token itself is not stored. The rows authorize your API calls. They stay until you delete the account.
  • API call log: the token, route, status, byte count, duration and time of each API call. It shows your usage. After 30 days an hourly job folds each row into the daily usage totals and deletes it.
  • Daily API usage: the call count and bytes per token and day, folded from the API call log. It shows your usage over time. It has no age limit and stays until you delete the account.

Cookies

TickPlunge sets three cookies. All are HttpOnly and SameSite Strict.

  • session: the identifier of your signed-in session. It lasts 30 days by default.
  • csrf_token: a random token that protects form submissions. It lasts 1 hour.
  • passkey_ceremony: a binding that links a passkey sign-in to the browser that started it. It lasts 5 minutes.

Browser storage

The site also stores data in your browser. It stays there until you clear the site data in your browser settings.

  • tp-density (localStorage): your choice of comfortable, compact or dense layout.
  • tickplunge_recent_symbols (localStorage): the last five symbols you viewed.
  • htmx-history-cache (localStorage): snapshots of recently visited pages, which the htmx library keeps for the back button.
  • tickplunge-data (IndexedDB): cached market data responses, which spare repeat fetches.
  • tickplunge-state (IndexedDB): a local copy of your saved dashboard layouts. The server copy above is the backup.

Export and delete your data

Sign in and open account settings to download your data as a JSON file or to delete your account. The export holds your account, devices, passkey names, recovery code counts, API token names and prefixes, saved layouts, API call records, daily usage totals, pending email changes and sign-in code records. It holds no hash, session identifier, public key, credential id or other value that grants access.

Deleting the account removes every row listed above in one step, immediately. Browser storage stays on your device until you clear it.

Questions about your data: contact support.