Cookie policy.
Last updated 20 October 2026.
Short version: every page, on this site and in the app, sets two cookies that the service needs to work, and signing in can add two more, only if you ask for them. There are no analytics, advertising or tracking cookies anywhere, which is why you don’t see a cookie banner.
Cookies we set
| Cookie | Purpose | Lifetime |
|---|---|---|
| all-my-ducks-session | Your session. Set on every page, here and in the app. It keeps you signed in as you move around, and is how this site knows to offer “Open app” when you are. It holds a random identifier; on our side the session is stored with your IP address and browser description, as the privacy policy says. | 2 hours, rolling |
| XSRF-TOKEN | Set on every page beside the session. Protects your session against cross-site request forgery: another website can’t make your browser act as you here. | 2 hours, rolling |
| remember_web_… | Keeps you signed in between visits. Set only when you tick “Keep me signed in for 2 weeks” at sign-in. | 2 weeks, or until you sign out |
| trusted_device | Lets this browser skip the two-step sign-in code. Set only when you tick “Remember this device for 30 days” on the code screen. It works only after your password, never instead of it. | 30 days, or until you forget the device on the Security page, change your password, turn two-step sign-in off or on, or use a recovery code |
All four are first-party and strictly necessary (the service can’t keep you signed in, or protect you while you are, without them), so consent isn’t required for them under PECR/GDPR. Signing out ends your session and removes the keep-me-signed-in cookie. The device cookie stays, so this browser can still skip the code next time; forget the device on the Security page to remove it.
The fonts on every page are served from our own site, so no font service is contacted. The bot check on the sign-in, sign-up, password, waitlist and email verification forms (Cloudflare Turnstile) sets no cookies.
Browser storage (not cookies)
The app keeps a few conveniences in your browser’s storage. We never collect them: they stay in your browser until you clear its data for this site, and signing out leaves them in place, except where a row says otherwise.
| Key | What it remembers | Kept |
|---|---|---|
| theme | Your light or dark choice. This site reads it too. | In this browser |
| home-view | Whether your home opens as a list or a calendar. | In this browser |
| calendar-view | Whether the calendar opens on the week, month or year. | In this browser |
| calendar-special-days | That you turned off the calendar’s special-day marks. | In this browser |
| home-scope | That your home shows everything across your workspaces, rather than one. | In this browser |
| everything-hidden-workspaces | Which workspaces you switched off in that view, by their IDs. | In this browser |
| workspace-choice:… | Which workspace this browser was last on, one entry per person who signs in here, named with their account’s ID. | In this browser |
| docs-callout-dismissed | That you dismissed the pointer to the developer docs. | In this browser |
| home-calendar-expanded | Whether the calendar is filling the window, so it is as you left it when you come back to it. | This tab only |
| signing-in | That a sign-in has started, so a sign-in through Google lands on the home you chose. Removed as soon as it is read. | This tab only |
| focus-timer | A focus timer you started in this browser: which task, how long, and when it ends. Deleted when you stop it or answer it, and when you sign out. | An hour after it ends, at most |
The IDs above are random identifiers that mean nothing outside the app.