Cookie Policy
Draft pending legal review. This page is a working draft written by reading the FocusTribe codebase. It has not been reviewed by a qualified lawyer and should not be treated as a final cookie notice until it has been.
Last updated: 20 September 2026
What this page covers
FocusTribe sets very few cookies of its own. Most of what it keeps in your browser is in localStorage and sessionStorage rather than cookies — these are storage areas the site can read and write, but unlike cookies they are never sent to a server. We list them here anyway, because from your point of view they are the same thing: data kept on your device.
Everything below is the complete list as of the date above, taken from the code rather than from memory. For what happens to data on our side, see the Privacy Policy.
1. FocusTribe’s own storage — strictly necessary
These keys hold your preferences and your running timers. Without them the timers reset on every reload, the site forgets your theme, and guided tours reappear every visit. They are written by the app itself, stay on your device, and are not used for tracking or advertising.
| Name | Type | Purpose | Strictly necessary? |
|---|---|---|---|
| theme | localStorage | Stores "light" or "dark" so the site renders in the theme you chose. Read by an inline script before paint to avoid a flash of the wrong theme. | Yes |
| ft_tours_done_<your user id> | localStorage | Set to "1" only when you press "Skip all tours", after which no guided tour is shown to you again. Seeing or finishing a single tour does not set it. It is also written here if your account already has every tour dismissed, so the check does not need a database read next time. | Yes |
| ft_tour_<your user id>_<page> | localStorage | Per-page record that a guided tour has been shown. One key per page that has a tour: dashboard, task, pomodoro, break, daily-progress, insights. | Yes |
| focustribe_pomodoro_session | localStorage | The in-progress Pomodoro session in a workspace: current phase and time remaining, so a reload or a tab close does not lose your running timer. | Yes |
| focustribe_pomodoro_settings | localStorage | Your Pomodoro preferences, such as focus and break lengths. | Yes |
| focustribe_pomodoro_stats | localStorage | Local count of completed Pomodoro rounds, used to show your session tally. | Yes |
| ft-pomo-standalone-v1:<timer> | localStorage | State of a signed-out standalone timer: settings, completed rounds, current phase, phase length, and time left. One key per timer — ":pomodoro" for /pomodoro-timer and ":study" for /study-timer — so the two pages no longer overwrite each other. This is why the free timers work without an account. | Yes |
| ft-pomo-standalone-v1 | localStorage | The single key both standalone timers shared before they were separated. Each timer still reads it once so settings saved under the old key carry over; nothing is written to it any more. | Yes |
| colab_break_timer | localStorage | State of the break room timer so a running break survives a reload or navigation. | Yes |
| colab_break_paused | localStorage | Short-lived flag set when you leave the break room, so the workspace page knows the break was paused. It is removed as soon as it has been read. | Yes |
| focustribe_deleted_recurring_<date> | localStorage | For each date, the IDs of recurring tasks you dismissed for that day, so a dismissed recurring task does not reappear. One key per date you have dismissed something on. | Yes |
| focustribe_notif_prefs | localStorage | Your notification preferences from the profile page: whether sound is on and whether you are alerted when a timer completes. | Yes |
| pendingJoinCode | sessionStorage | Holds a workspace invite code while you are sent to sign in, so you land in the right workspace afterwards. Deleted the moment it is used, and gone when the tab closes. | Yes |
2. Authentication storage — strictly necessary
Sign-in is handled by Firebase Authentication with Google as the only provider. The Firebase SDK manages its own storage; we neither create nor read these entries directly.
| Name | Type | Purpose | Strictly necessary? |
|---|---|---|---|
| firebase:authUser:<api key>:[DEFAULT] | IndexedDB, falling back to localStorage | Firebase Authentication stores your signed-in session here (in the browser database firebaseLocalStorageDb) so you stay signed in between visits. Set and managed by the Firebase SDK, not by our own code. Clearing it signs you out. | Yes |
| Google sign-in cookies | Third-party cookies on Google domains | During the Google sign-in popup, Google sets and reads its own cookies on google.com and accounts.google.com to authenticate you. These belong to Google and are governed by the Google Privacy Policy, not by us. | Yes |
3. Analytics — not strictly necessary
The site loads a Google Tag Manager container, which in turn loads Google Analytics. The Firebase Analytics SDK also initialises in browsers that support it and reports to the same Google Analytics property. Together these set the cookies below and record events such as page views, sign-ups, and sign-ins.
| Name | Type | Purpose | Strictly necessary? |
|---|---|---|---|
| _ga | Cookie (Google Analytics) | Assigns a random client identifier so repeat visits can be counted as one visitor. Typically expires after 2 years. | No — analytics |
| _ga_<container id> | Cookie (Google Analytics 4) | Holds session state for the specific GA4 property. Typically expires after 2 years. | No — analytics |
| _gid, _gat and similar | Cookie (Google Analytics) | Short-lived identifiers and request throttling, set depending on how the Google Analytics tag is configured in the tag manager container. | No — analytics |
| Firebase Analytics identifiers | Cookie and browser storage (Google) | The Firebase Analytics SDK initialises in browsers that support it and reports to the same Google Analytics property, using the same _ga identifiers. | No — analytics |
Be aware: the Google Tag Manager container currently loads for every visitor, before any choice is offered. FocusTribe does not have a cookie consent banner or a consent gate today. We are planning one, and until it ships, the only way to prevent these analytics cookies is to block them in your browser or with an extension, as described in section 5. We would rather tell you this plainly than imply a control that does not exist.
4. What we do not use
FocusTribe sets no advertising cookies, runs no ad network tags, and has no cross-site tracking pixels. We do not sell or share browsing data with advertisers.
5. How to control this storage
- Clear everything for this site. Every major browser can clear cookies and site data for a single site, usually from the padlock icon in the address bar. This removes all the keys listed above. It also signs you out and resets your theme, timers, and tour flags — nothing stored in your workspace is affected.
- Block analytics. Browser settings, tracker-blocking extensions, and the Google Analytics opt-out browser add-on all stop the Google Analytics cookies.
- Blocking the strictly necessary storage will break the product. If you block localStorage for this site, timers will not survive a reload and you will not stay signed in.
6. Changes
When we add, rename, or remove a key, we will update this table and the “last updated” date above. If we launch the consent mechanism described in section 3, this page will be rewritten to describe how it works.
7. Contact
Questions about anything on this page go to kalpesh@buildifyapp.in, or by post to [TODO: legal entity name], [TODO: registered address].