Privacy
Last updated: September 10, 2026
What is stored, and where
- On your device (always): everything you put into the tracker (hours,
targets, notes, category names, archived weeks), plus small preferences like theme and
language. It lives in your browser's local storage and never leaves your device unless
you sign in.
Two things worth knowing about that, because "on your device" is not the same as "safe forever". On iPhone and iPad, Safari deletes a site's storage after seven days without a visit, and adding Focushours to the Home Screen gives it a separate storage box: the installed app opens empty, and the hours you already had are still in Safari rather than gone. Signing in is the only thing that makes both show the same weeks. Clearing your browser data removes local hours everywhere, on every platform, and we cannot recover them for you unless you were signed in. - On our servers (only if you sign in): your email address and the same tracker data, so it can follow you across devices. It is stored in a Supabase database hosted in Frankfurt, Germany (EU). Access is locked to your account by row-level security, so each account can only ever read and write its own rows.
Two features ask your operating system for something, and neither sends anything anywhere: a system notification when a session or break ends (off by default, and only after you grant permission), and a count on the app icon when the app is installed. Both are drawn by your device from data already in your browser.
Signing in
You can use Focushours forever without an account. If you want sync, you can sign in with Google (Google shares your email address and basic profile with us) or with a magic link sent to your email. We never see or store a password.
Analytics, ads, and trackers
We use PostHog, hosted in the EU, in cookieless mode, to answer one question: is the product working? Concretely that means page views and the product events below. Every event is named here with everything it carries in parentheses; if it is not on this list, the app does not send it.
- the app was opened (whether this browser profile is new, already has hours logged, or has sync set up: a yes or no, never which account; whether it runs installed or in a browser tab; the app language; which tab and view it opened on; which timer style is selected; and on how many distinct days this browser profile has logged hours, as one of five bands: none, 1 to 2, 3 to 6, 7 to 20, or more than 20, never the number itself and never the hours),
- a signup happened,
- a first session was logged,
- a focus session finished (countdown or stopwatch, and whether it ran out by itself or was finished by hand),
- a session ended without logging anything (cancelled, too short, its category had been deleted, or the tab had been abandoned too long),
- a session was started from a link, like the front page's try-it timer or an app shortcut (the minutes in the link, and whether the link was honored),
- a rest break was started (the length picked),
- a goal was added (monthly, quarterly, or yearly, and whether it covers one category or the total: never which category),
- a week was completed (by the End week button, or by the calendar turning over),
- a completed week was reopened.
These events are anonymous: no cookies, nothing stored on your device, no identifier that survives closing the tab, never linked to your email or account, and your tracker contents (hours, notes, categories) are never sent.
The front page at focushours.app (the marketing page, not the tracker) uses the same PostHog setup for three page events of its own: the page was viewed, a start button was clicked (and which of the three buttons it was), and the try-it timer was started (and the length picked). Same guarantees: anonymous, cookieless, a random id that lasts one page view and is forgotten when you leave, and nothing about you attached. Each of the three does carry two facts about the link you arrived through, so I can tell which announcement brought people: the origin of the referring site (only the domain, never the page you were on), and any utm_source, utm_medium or utm_campaign tag present in the link itself. Those describe the link, not you.
No ad networks, no tracking pixels, no fingerprinting, and no data sale. The app's security configuration (its Content-Security-Policy) instructs your browser to refuse connections to anything except this site itself, our database, and PostHog's EU endpoint. You can verify that yourself in your browser's developer tools.
Cookies
We set no cookies, not even for analytics. If you sign in, your session is kept in your browser's local storage, on your device.
Service logs
Our infrastructure provider (Supabase) keeps standard, time-limited security logs of authentication events, like sign-in attempts and the IP address they came from. These exist to keep the service safe and expire automatically.
Deleting your data
Inside the app: account menu → Danger zone → Delete account. That removes your account and every piece of your data from our servers immediately. It's not a "within 30 days" promise; it's gone the moment the button finishes. The copy on your own device stays yours; you can clear it with the app's Reset button whenever you like.
The one thing that button does not reach is the sign-in security log kept by our authentication provider (Supabase, described under Service logs above): it holds the email address and IP address of your past sign-in events until it expires on its own schedule, and it is not something we can delete by hand.
Want a copy of your data first? In the app, open the Settings menu (the three dots at the top) and choose Download my data: a JSON file of your tracker data (hours, targets, tasks, categories and archived weeks), saved straight to your device, signed in or not.
Who runs this
Focushours is built and run by one independent developer based in Norway, who is also the data controller for anything described above. Questions, concerns, or data requests: [email protected].
Changes
If any of this changes (a new destination, a new event, anything), this page will say so, with a new date at the top, before the change applies to you. (July 23, 2026: added the cookieless PostHog analytics described above, in the same release that enabled them. August 8, 2026: the app moved to focushours.app/app behind a new marketing front page, and the three anonymous page events described above were added, in the same release that introduced the page. No new destination: the same EU PostHog endpoint. August 14, 2026: the product events grew from three to the list above (app opened, session finished, session not logged, session started from a link, break started, goal added, week reopened, and a manual-or-rollover source on week completed), in the same release that enabled them. No new destination: the same EU PostHog endpoint, and the same guarantees. September 5, 2026: the three front-page events gained the referring site's origin and the utm tags from the link, described above, so that an announcement can be attributed to the place it was made. Facts about the link, not about you; no new destination. September 6, 2026: the app-opened event gained one fact, the number of distinct days this browser profile has logged hours on, reported as one of five bands (none, 1 to 2, 3 to 6, 7 to 20, more than 20) and never as the number. It shows whether the app is being used on three or more distinct days, without an account and without an identifier. Same guarantees, no new destination. September 7, 2026: no new destination and no new event. Two clarifications only, both about things that were already true: what happens to local storage on iPhone and iPad, and that the notification and the icon count are drawn by your own device. September 10, 2026: no new destination and no new event. One clarification under Deleting your data: the authentication provider's sign-in security log (email address and IP address of past sign-ins) is not removed by the Delete account button and expires on its own schedule. Already true; now said. Also on this date: the copy-of-your-data request moved from email to the app's Settings menu.)