Cookies & browser storage
Last updated 9 September 2026
Purrsave uses browser storage to keep you signed in, remember choices and support offline work. Storage includes more than cookies: local storage, session storage, an IndexedDB database and a service-worker cache each have a different purpose.
Your choice about usage counts
Purrsave’s optional usage counts are off until you choose to allow them. You can use the app without allowing these counts. Open Privacy choices from the front page or Settings to allow or stop them. Do Not Track and Global Privacy Control signals take priority over an earlier allow choice.
That choice applies to this browser and device, not every device on your account. Clearing site storage removes the choice; optional counts then remain off until you allow them again.
Sign-in and preferences
The Supabase sign-in client uses browser storage for your session. Preferences such as theme, language, effects, menu and layout choices are stored so the app can remember them. Some preferences also sync with your account. These are separate from usage analytics.
Your privacy choice is stored as pv_usage_consent. Preferences and this choice have no fixed browser expiry set by the app; they remain until replaced or removed, or until your browser clears them. Signing out ends the local session, but does not reset every display preference.
Offline records and pending changes
When signed in, the purrsave-offline IndexedDB database can hold a copy of your financial and shop records and a queue of pending changes. The app uses them to open quickly and let you work without a connection. Pending changes are sent to your account’s database when syncing succeeds; offline does not mean data stays only on your device.
The app clears its offline records during sign-out and account deletion. If your browser prevents that cleanup, use its site-data controls after checking that your work has synced. Clearing storage before syncing can permanently lose changes that exist only on that device. Sample mode does not create this signed-in financial snapshot.
The service-worker cache stores app files and assets so they can load offline. Your browser may evict cached files. Downloaded exports are separate files under your control and are not removed by signing out.
Optional analytics storage
After you allow usage counts, mm_vid holds a random browser identifier, mm_funnel remembers which steps were counted, and mm_funnel_first helps recognise a later return. They have no fixed expiry set by the app. They are removed when you turn counts off or clear site data; browser privacy signals also stop further counts.
The events sent to Purrsave’s database contain an action name, random browser identifier, hour-rounded time, screen-size group and referring site name, not transaction amounts, account IDs, email or typed content. A persistent random identifier is not the same as a guarantee of anonymity.
Turning counts off stops future events and removes these analytics keys from this browser. It does not erase previously received server events or delete financial records. Allowing counts does not replay actions you took while counts were off.
Contact messages
When you submit the contact form, a separate random identifier helps limit repeated messages. It is stored as pv_contact_visitor in session storage when available, otherwise just in page memory. Session storage normally lasts for the tab session; browser session restoration can retain it longer. The message, optional reply email and contact identifier are sent together to the service, separately from usage analytics.
Hosting and outside resources
Cloudflare serves the production website and also provides aggregate page-performance statistics through a separate Web Analytics script. Privacy choices currently controls Purrsave’s own optional counts, not that separate hosting script. Technical requests needed to deliver and secure the service are also separate from the optional counts.
The app requests fonts from Google Fonts, code libraries from jsDelivr, brand images from Clearbit or Simple Icons, and exchange rates from ExchangeRate-API or Frankfurter. An image URL you supply also connects to that image’s host. These requests expose ordinary connection information, such as IP address and browser headers, to the service receiving them. Rate requests include the base currency code. Loading an outside resource is not a guarantee that the provider keeps no logs or uses no storage.
Purrsave does not use advertising cookies or advertising embeds. Followed links to other websites are governed by those websites’ own notices. For account data and service providers, read the Privacy policy.
Managing browser storage
Use Privacy choices to stop optional counts without removing your account session or offline work. Your browser’s site-data controls can remove stored data more broadly, but may sign you out, reset preferences and delete unsynced changes. Sync and export important records first, especially on a shared device.
For questions, use the contact form. You do not need to send financial records, a password or a payment-card number.