1. What we use
“Cookies” here covers cookies and equivalent browser storage: localStorage and the secure storage the mobile apps use. We use them in three categories, and only the first is strictly necessary:
- Strictly necessary: without these the Service does not work. Signing in, staying signed in, and holding a device credential.
- Preferences: remembering your theme choice.
- Analytics: visit counting on this website, off unless you allow it, and never in the app you sign in to. See section 2.
We set no advertising cookies, and we do not share browsing data with ad networks.
2. On this website
| Key | Type | Purpose | Duration |
|---|---|---|---|
mailcycle.theme-preference | localStorage | Remembers whether you chose light or dark. Set only if you use the toggle. | Until cleared |
mailcycle.analytics-choice | localStorage | Remembers whether you allowed visit counting, so you are asked once. Holds the word "yes" or "no" and nothing else. | Until cleared |
That is the complete list. None of it is a cookie.
Visit counting
We ask, once, whether we may count visits to this website with Cloudflare Web Analytics. It is off until you allow it, and the site works the same either way. You can change your mind by clearing mailcycle.analytics-choice from this site's storage, which makes us ask again.
If you allow it, each page you open sends Cloudflare:
- the address of the page and the page that linked you to it;
- your browser and operating system, the type of device and the screen size;
- the country your connection comes from, worked out from your IP address, which is not stored alongside the visit;
- how long the page took to load.
It sets no cookie, stores nothing on your device, and gives us no way to recognise you on a later visit or across other websites. Cloudflare is our hosting provider and is listed among the subprocessors.
None of this runs on app.mailcycle.email, where you sign in. No analytics of any kind is loaded there, whatever you answer here.
Web fonts are served from this domain, not a third-party font CDN.
3. In the web app
| Key | Type | Purpose | Duration |
|---|---|---|---|
mailcycle.operator.session | localStorage (necessary) | Keeps you signed in. Holds a session token, not your recovery phrase. | 30 days, or until you sign out |
mailcycle.vault.seed | localStorage (necessary, opt-in) | Your encryption key, stored only if you tick "Stay signed in on this device". Never sent to us. On phones this lives in the platform keystore instead; in a browser it is localStorage, which is weaker. | Until you sign out |
mailcycle.worker.credential | localStorage (necessary) | The device credential on a browser Worker, so it survives a reload without pairing again. | Until revoked or cleared |
mailcycle.worker.pairing | localStorage (necessary) | A pairing in progress, so refreshing the page does not lose it. | Until pairing finishes or is cancelled |
mailcycle.app.lock | localStorage (preference) | Your app lock settings: biometric lock and idle sign-out. | Until cleared |
mailcycle.app.lastActive | localStorage (necessary) | When you were last active, so idle sign-out can work. | Until cleared |
mailcycle.theme-preference | localStorage (preference) | Your theme choice. | Until cleared |
None of these are cookies, so none of them are sent to our servers automatically. None of them holds your recovery phrase in any form.
4. In the mobile apps
The iOS and Android apps do not use cookies. They store the session token, the Worker device credential and, if you choose to stay signed in, your encryption key in the iOS Keychain or Android Keystore. The theme, the app lock settings, the last active time and a pairing in progress go in ordinary app storage, under the same keys as the web app. Deleting the app removes the ordinary app storage. On iOS, Keychain entries can outlast the app, so sign out first if that matters to you.
The apps contain no advertising SDKs and no third-party tracking SDKs. They do not use the advertising identifier.
5. Controlling them
- Preferences can be cleared without affecting the Service. The app falls back to its defaults.
- Necessary storage cannot be declined while using the Service. Signing out removes your session and encryption key.
- Visit counting is off until you allow it. Clearing
mailcycle.analytics-choicemakes us ask again. - Your browser can block or clear all of them. Blocking site storage will prevent you from signing in.
6. Changes
If we add anything to browser storage, this page is updated before it ships. Questions go to hello@mailcycle.email.