Back to Calibrate

Cookies and analytics

Cookie and Analytics Notice

This notice explains the cookies, browser storage, analytics, monitoring, and tracking limits used by the current Calibrate website.

Last updated October 2, 2026

Necessary cookies and storage

These cookies are required to operate the website, sign you in, protect requests, and limit automated abuse. They are set only as needed and are never used for advertising.

  • calibrate_draft_token (necessary, up to 30 days): a server-issued HttpOnly cookie that links an anonymous questionnaire draft to your browser without exposing the token to page scripts.
  • calibrate_csrf_token (necessary, up to 2 hours): a request-forgery protection token your browser sends back on form and API requests to prove the request came from Calibrate. It is readable by page scripts by design so it can be echoed in a request header.
  • calibrate_abuse_cap_v1 (necessary, up to 15 minutes): a short-lived HttpOnly capability, scoped to the API, that helps rate-limit and block automated abuse of public endpoints.
  • calibrate_stale_chunk_reload_at (necessary, up to 10 minutes): a functional fallback cookie used only when browser storage is unavailable, so the site can reload itself once to recover after a failed code load following a new release.
  • cal_td (necessary, up to 180 days): a server-issued HttpOnly cookie that holds an opaque trusted-device capability. It is set after you redeem an email link, start a quick plan, or complete sign-in, so a returning device can be recognized for those flows. It is not a Clerk cookie and carries no account identity.
  • Clerk may set authentication and session cookies when you sign in or create an account.
  • Cloudflare Turnstile may set cookies to distinguish human traffic from automated abuse on sensitive actions.

Browser storage

Alongside cookies, Calibrate uses your browser's session and local storage for a few interface and continuation tasks. Session storage clears when you close the browser tab; local storage stays until it is cleared or overwritten. The consult flow keeps your answers in memory and in server-side draft or account storage, not in browser storage, and generated protocols are not kept in browser storage either. The short homepage quiz, and a plan you continue from Claude or ChatGPT, are the exceptions, described below.

  • cal.quiz.state (session storage): while you answer the short homepage quiz, your in-progress answers are kept here so a refresh does not lose them. It holds the symptoms you select, your wake and sleep times, how steady your schedule is, and your outdoor-light answer. It is removed when you finish the quiz, and it clears when you close the tab.
  • calibrate:quiz-handoff:v1 (session storage): when the short homepage quiz, or a plan you continue from Claude or ChatGPT, hands your answers to the consult flow, they are staged here so the consult can prefill them. This can include your wake time, sleep time, and the other prefill answers. The entry stays in this tab only. It is removed as soon as the consult reads it. If it is not read, it is ignored after 30 minutes and cleared when you close the tab.
  • cal.quiz.shown, cal.quiz.dismissedAt, and cal.quiz.completedAt: small markers that record whether the quiz was shown this visit, when you last dismissed it (used to wait about seven days before offering it again), and when you completed it, so it is not shown again.
  • calibrate:draft-handoff-token (session storage): when you open a one-time continuation link, the link's single-use token is held here just long enough to claim your draft, then removed. It clears when you close the tab.
  • Other markers, such as a temporary sign-in email or a one-time reload flag, may be stored to help the site work and recover gracefully. Your account authentication tokens are managed by Clerk, not stored by Calibrate in browser storage.

Analytics

Calibrate's analytics is event-only, pseudonymous, and privacy-scoped. It does not collect form contents, questionnaire answers, consult answers, generated protocol content, health details, email addresses, tokens, raw IP addresses, or unstructured medical text.

  • Analytics runs as a first-party relay: your browser sends a small, allowlisted event to Calibrate's own server, which forwards a scrubbed event to PostHog. The site loads no PostHog browser library, no session replay, and no third-party analytics tag, so there is no dataLayer or gtag pipeline.
  • cal_anon (analytics, up to 180 days): a randomly generated, pseudonymous analytics id set by the server in an HttpOnly cookie so repeat visits can be counted without identifying you. It is set only when analytics storage is allowed for your region.
  • cal_sess (analytics, 30-minute visit session): a short-lived, server-set visit session in an HttpOnly cookie. It carries a pseudonymous session id and, so we can see which channel a visit came from, the traffic-source buckets (source, medium, and campaign, each chosen from a fixed list) and a referrer category. It groups the page views and clicks in one visit. It expires 30 minutes after it is set or last extended, and activity on the site extends it. In the few browsers that cannot coordinate this between open tabs, Calibrate records no page visits or clicks; sign-ups and email activity still follow your analytics choice, and you can turn analytics off on this page. It is set only when analytics storage is allowed.
  • cal_analytics_consent (analytics, up to 180 days): stores your analytics choice. When it is set to accepted, analytics storage is allowed in regions where consent is otherwise required; when it is set to rejected, analytics stays off. If it expires or is cleared, your region's default applies again. You can change this choice on this page or on the Privacy Choices page.
  • cal_consent_prompt (strictly necessary): a short-lived cookie, readable by page scripts, that tells the site to show the analytics consent choice. It is set only for visitors in the EEA, the UK, or regions we cannot determine who have not chosen yet, and it is removed as soon as you choose.
  • In the EEA, the UK, and anywhere your region cannot be determined, analytics storage is off until you choose Allow: until then no analytics are recorded and no new analytics ids are set. Ids left from an earlier visit are removed when you choose No thanks or on your next visit in most browsers, and otherwise expire on their own. If you choose No thanks, analytics stays off. In other regions the analytics ids are set automatically when you use the site, in browsers that support it.
  • Where an event includes your country or device type, these are attached only when they are available. An event our server records because of something you did on the site, such as starting a plan, can include your country but not a device type. Events for the emails Calibrate sends and for the ChatGPT or Claude plugin do not carry a country or device type.
  • For the emails Calibrate sends, we can record when a message is opened and when a link in it is clicked, so we can see which messages help. Whether a message is tracked this way is set when the message is queued to send, from whether analytics is allowed for you at that moment: a message queued while analytics is off for you is not tracked, and in a region that requires a choice, messages are not tracked until you accept. Because the choice is fixed when the message is queued, a message queued before you turn analytics off can still be tracked. The scheduled 40-day program emails are sent through a provider that records no opens or link clicks. Links that carry a private token, such as a save or sign-in link, are never tracked.
  • Sentry has PII collection disabled, replay sample rates set to zero, and scrubbers for sensitive keys and values before events are sent.

No ad pixels on sensitive flows

Calibrate does not currently run advertising pixels, retargeting scripts, behavioral advertising, or lookalike-audience tracking. Those tools must not run on questionnaire, consult, authenticated, admin, account, health intake, or protocol pages.

Choices

You can use browser settings to block or delete cookies, but some necessary features may stop working. You can also email support@calibrate.day with privacy or analytics questions. Calibrate's current posture is no sale of personal information, no sale of consumer-health data, and no consumer-health data sharing for advertising.

Privacy Choices: access, correction, deletion, export, consent withdrawal, or consumer-health request

Changes

If Calibrate later enables non-essential analytics storage beyond what is described here, ad pixels, behavioral advertising, or new third-party tracking, this notice and the Privacy Policy will be updated before that change goes live.

Your analytics choice

You can turn Calibrate’s privacy-scoped analytics on or off here. Your choice applies right away and you can change it whenever you like.

Analytics

When analytics is on, Calibrate counts visits and clicks, the traffic source, and, when they are available, your country and device type, to improve the product. It never includes your questionnaire or consult answers. You can change this at any time.

Checking your current setting…

Cookie and Analytics Notice | Calibrate