← Back to Daily Captain Daily Captain

Cookies and Local Storage

Version 1.14 · Last updated 5 October 2026

This page lists everything Daily Captain stores in your browser. Our Privacy Notice explains the rest.

Short version: one cookie keeps you signed in, a second short-lived one makes a sign-in code work only in the browser that asked for it, a third lives ten minutes at most while you sign in with Apple or Google, one more lasts only until you close the browser and only changes what a page shows you (that you are reading inside our app), some local storage makes the app work offline and keeps what you write on the first sheet before you sign in, a few entries last only until you close the tab, the giveaway page shows YouTube's player and nothing else does, and nothing else runs unless you say yes.

Strictly necessary: always on

These make the app work. There is no way to switch them off and still have an app, so we do not ask for consent for them, which is what the law allows.

NameTypeWhat it doesHow long
__Host-dgs_sessionCookie (first-party)Keeps you signed in. HttpOnly, Secure, SameSite=Lax. Holds a session reference and nothing about you.Up to 90 days; replaced at each sign-in, deleted when you sign out
__Host-dgs_loginCookie (first-party)Set when you ask for a sign-in code. Marks the browser that asked, and the code works only in that browser: the right code typed in any other browser signs nobody in, and it still works in the browser that asked. What rides on a sign-in, a buddy's invitation you accepted or a Sign in with Apple or Google waiting to be attached to your account, is also only carried out in that browser. HttpOnly, Secure, SameSite=Lax. Holds a random value and nothing about you.15 minutes, the life of the code; a new sign-in request replaces it, and it is deleted the moment you are signed in
dc_oauthCookie (first-party)Set only when you press Sign in with Apple or Sign in with Google. Proves that the browser Apple or Google sends back to us is the one that started the sign-in, so a link forwarded by a stranger signs nobody in, and, if you opened a buddy's invitation, carries that invitation into the sign-in. HttpOnly, Secure, SameSite=None (Apple sends you back across sites, so it has to be). Holds a random value, a second random value we check against Apple's or Google's answer, the page to return you to, and, for an invitation, a one-way hash of its token, which cannot be turned back into the token; no name, no address, nothing from your account.10 minutes at most; deleted the moment you come back from Apple or Google, whether or not the sign-in worked
dc_inappCookie (first-party)Set once we can tell you are reading a page inside the Daily Captain app itself, so the page does not also suggest installing it. HttpOnly, Secure, SameSite=Lax. Holds nothing about you.Until you close the browser (session only)
dc:uiLocal storageYour theme, whether you installed the app, and which one-off prompts you have already dismissed (the install prompt, the reminder nudge, the feedback ask)Until you clear it; survives sign-out
dc:consentLocal storageYour cookie choices and the date you made them390 days, then we ask again (see Global Privacy Control below); survives sign-out
dc:accountLocal storageWhich account the cached sheet belongs to, so a second account on the same browser cannot write to itUntil sign-out
dc:sheet:<date>, dc:server:<date>Local storageYour recent sheets, and the last version the server confirmed, so the app opens and works offlineRecent days only; cleared on sign-out
dc:quote:<date>Local storageThe quote for a day you have already openedRecent days only; cleared on sign-out
dc:feedback-queue, dc:feedback-attemptLocal storageFeedback you wrote while offline, waiting to send, and the key that stops it sending twiceUntil sent; cleared on sign-out
dc:profile-draft, dc:welcomed-pending, dc:profile-noticeLocal storageWhat you typed or chose on the setting-up screens before we could save it, the photo you picked, resized, which account it is for, when it was last written, and a random mark, new with every write, that never leaves your device (and whether the name there came from signing in with Apple), that you finished those screens, and any message about a save that went wrongUntil it reaches the server; anything you typed on the longer setting-up screens and never sent stays until you sign out. Cleared on sign-out, and when another account signs in on this browser
dc:native-name-prefillSession storage (iPhone app)The name Apple passed on when you first signed in with Apple, kept only until the setting-up screen has shown it to you. If Apple passed on no name, it holds an empty value that only tells that screen you signed in with Apple.Until that screen has read it; cleared on sign-out
dc:newsletter-pendingLocal storageThat you ticked the newsletter box and we have not managed to pass it on yetUntil it reaches the server; cleared on sign-out
dc:quote-draftLocal storageA community quote you were part-way through writingUntil sent or cleared; cleared on sign-out
dc:landing-draftLocal storageUp to three goals you wrote for your first day before it was saved in your account, which of them you ticked, when this was last written, and a random mark, new with every write, that only tells one write from the next: it never leaves your device and says nothing about you. On the first sheet, in a browser or in one of our apps, it is written as you type, so that closing the page does not lose them; on the try-it sheet of the landing page, when you press Save my day. Once you have signed in on this device and your setting-up has taken it, it also holds the internal id of that account, not your email address, so that no other account on the device sees it, and it keeps what you change until your first day is saved. Nothing of it reaches us before you sign in, and then only when your first day is saved in your account, in the first empty rows, where a goal that was already there is never overwritten; goals that do not fit, or that were not sent, wait here until it expiresUntil every goal in it has been added to your account or you clear every row, and at most one day after it was last written; it stays when you sign out, and once an account has taken it, only that account sees it
dc:firstLocal storageWhere you are in your first session: the name of the step, which tabs you have seen, when this record was set, and three times, of your first goal, your first tick and the first look at your page, which is how the app can tell you how long it took from your first word to your own page. Never the words of a goal, an email address, a name or a handle, and none of it is sent to us. It is set with the first thing you type on the first sheet, or, if you signed in before typing anything, when your new account starts its first session, so that a reload, or the trip to Apple or Google and back, continues where you wereUntil you have answered the offer of the free week, 30 days at most after it was set; cleared on sign-out
dc:review-dayLocal storageThe review day you picked before the app could store it on the serverUntil the server takes it; cleared on sign-out
dc:account-wasLocal storageWhich account was last signed in on this browser, so a different account signing in does not inherit the cached sheetUntil sign-out
dc:public-page-askLocal storageThat you have already been asked once about your public page, so we do not ask againUntil you clear it; cleared on sign-out
dc:open-sendLocal storageA week you were part-way through sending to a buddyUntil sent or cleared; cleared on sign-out
dc:invite-link:<account>Local storageThe buddy invite link this account was last given on this device, so opening the invite panel offers the same link again instead of making a new oneUntil you share it or it runs out, at most fourteen days; cleared on sign-out
dc:inviteSession storageThe one-time token of a buddy's invitation you opened, and nothing else, kept while you sign in so that the invitation reaches your account: it goes to us with your sign-in, whichever way you sign in, and never after it; if it did not go with one, it waits for your press on the line in the app that offers itUntil it has gone with a sign-in, you say no to it, or you close the tab; cleared on sign-out
dc:connectSession storageThe handle of the public page you pressed Connect on while signed out, so that signing in connects you to that personUntil it is used, or until you close the tab; cleared on sign-out
dc:joinedSession storageThat this sign-in connected you to somebody, until the app has told you whoUntil the app has told you, or until you close the tab; cleared on sign-out
dc:launch-url-handledSession storage (iPhone app)The address of the link that last opened the app, so that the same link is not acted on twiceUntil the app is closed
dc:poke-dismissedLocal storageThe weeks for which you put away the line on Today that says a week you sent has not been answered, 26 at mostUntil you clear it; cleared on sign-out
dc:day-rhythmLocal storageThe unlock times you picked for the midday and evening sections, before the server took themUntil it reaches the server; cleared on sign-out
dc:unlock-latchLocal storageWhich sections of today's sheet have already unlocked, so a reload does not close them againRecent days only; cleared on sign-out
dc-shell-<version>Cache storageA copy of the app's own files so it opens without a connectionUntil a new version replaces it

Cloudflare Turnstile checks the sign-in form for automated abuse. We do not use its pre-clearance option, so it stores nothing in your browser.

Site analytics: off unless you accept

Set only if you accept analytics. Decline and none of this loads.

NameSet byWhat it doesHow long
_gaGoogle Analytics 4 (first-party)Tells browsers apart with a pseudonymous identifierSet to 390 days from when it is first set, with the option that would extend it on later visits switched off
_ga_<property id>Google Analytics 4 (first-party)Keeps session stateSame 390 days, on the same terms

Google Tag Manager, which loads Analytics for us, sets no cookies of its own.

We keep Google Signals, advertising features, ads personalisation and Google Ads linking switched off, and we never send Analytics your email address or anything from your sheet. Event-level data is kept for 2 months and user-level data for 14 months.

The video: YouTube's player, on the giveaway page only

The giveaway page at dailycaptain.app/giveaway carries a short video in YouTube's own player, loaded from youtube-nocookie.com, YouTube's privacy-enhanced player. It loads when the page opens, before you press anything, and the banner above does not decide this. No other page in Daily Captain loads anything from YouTube, the landing page at dailycaptain.app/about included.

Set byWhereWhat it doesHow long
YouTube (Google LLC), inside the player on the giveaway pageGoogle's own youtube-nocookie.com domain, never on dailycaptain.appCookies and local storage for the player's settings and to protect YouTube's service, set once you press play. In privacy-enhanced mode Google says it does not use them to personalise what you see on YouTubeGoogle decides. Its privacy policy and cookie information say what and for how long

Opening that page is enough for Google to see that your browser asked for the video, your IP address and your browser or device information; pressing play adds what you watch. We send the player only the bare origin of this site, not the page. Everything the video says is written out on the same page in text, and if you would rather Google saw nothing, that page is the one to skip. Our Privacy Notice, section 4, has the rest.

Marketing: nothing runs, and nothing to accept

We do not use advertising or retargeting technology today, and the banner offers you no choice about it, because there is nothing to choose. "Accept all" accepts site analytics and nothing else.

We do keep a reserved "Marketing" slot in the record of your choice. It is always off, and no button can turn it on. It is there so that the day we add something, we have to come back and ask you about it, rather than treat a choice you made today as permission for something you have never seen. On that day this page changes, the banner gains the choice, and we ask everyone again.

Changing your mind

Open Settings → Cookie settings. Nothing is pre-selected, declining keeps the whole app working, and we ask again after 390 days, or sooner if something material changes.

If your browser will not let us store the record of your choice, nothing optional runs and we ask again next time. A consent we cannot write down is not a consent we can show you.

Global Privacy Control. If your browser sends a GPC signal and you have not answered here yourself, we take it as a decline, record that the decline came from the signal rather than from you, and do not show you the banner: your browser has already answered. A choice you make yourself in Settings takes over from then on, in either direction, because it becomes the stored choice. That also means a GPC signal does not undo an acceptance you made before turning it on; if you want that, change it in Settings. While the signal is still there we go on recording declines, so you are not asked again after 390 days either.

The app also writes and immediately deletes a key called dc:probe each time it checks whether your browser will let it store anything. It holds nothing and never survives the check.

You can also clear cookies and site data in your browser, which signs you out and empties the offline copy of your sheets.

← Daily Captain Privacy Terms Giveaway terms Delete account Accessibility