If you create a Focusly account or sign in with Google, we collect:
You can use Focusly without an account. Account creation is optional and only required for cross-device sync or premium features.
The extension stores the configuration you create, including:
This data is stored locally in your browser (chrome.storage.local and chrome.storage.sync) and, if you are signed in, synced to our cloud database (Firebase Firestore) so your settings are available across devices.
The extension tracks how much time you spend on blocked or monitored sites. Specifically:
Usage data is stored locally in your browser. If you are signed in, aggregated daily usage totals (seconds per domain, date) are also synced to Firestore to allow cross-device consistency. We do not collect, transmit, or store the specific URLs or page titles of websites you visit — only the domain names of sites that are in your block list.
When you use the "Block YouTube Creator" feature and search for a channel handle (e.g. @channelname), the extension makes a network request to YouTube's public website (https://www.youtube.com/) to retrieve the channel's public name and profile thumbnail. This request:
We do not store YouTube search queries on our servers. YouTube's own privacy policy governs YouTube's handling of this request.
Premium subscriptions are processed by Stripe via our Firebase Cloud Functions backend. When you upgrade:
The extension does not automatically collect crash reports, telemetry, or analytics. We do not use any third-party analytics SDK (e.g. Google Analytics) inside the extension. Console logs are written locally to your browser's developer tools only.
| Data | Purpose |
|---|---|
| Email address, UID | Account authentication; sending password reset emails; associating your data with your account in Firestore. |
| Block list and settings | Enforcing website blocks; displaying your configuration in the dashboard; syncing across devices (if signed in). |
| Daily usage statistics | Enforcing daily time limits; displaying usage charts in the analytics dashboard; syncing across devices (if signed in). |
| YouTube creator handle / thumbnail | Identifying the correct YouTube channel to block; displaying the channel avatar in the block list UI. |
| Subscription status | Unlocking premium features; verifying your plan in the extension UI. |
| Language preference, locale | Displaying the extension in your preferred language (English, Polish, Spanish). |
The majority of Focusly's data lives entirely on your device in Chrome's built-in storage APIs:
chrome.storage.local – block lists, Focus Ritual state, daily usage counters, cached Firebase tokens, password protection settings.chrome.storage.sync – language preference; small settings that Chrome automatically syncs to your signed-in Google account via Chrome Sync (not our servers).Data in chrome.storage.local stays on your device and is never transmitted to our servers unless you are signed into a Focusly account (see Section 3.2).
If you create a Focusly account and sign in, the following data is stored in Google Firebase Firestore under your unique user ID:
chrome-extension), timestamps for createdAt, lastActiveAt, updatedAt.Firestore data is stored on Google's servers in the us-central1 region (United States). Google's data processing terms apply: firebase.google.com/support/privacy.
Data is retained for as long as your account is active. If you delete your account, all associated Firestore documents are deleted.
We do not sell, rent, or trade your personal data. We share data only with the following service providers, and only to the extent necessary to operate the extension:
| Third Party | Data Shared | Purpose | Privacy Policy |
|---|---|---|---|
| Google Firebase (Auth + Firestore + Cloud Functions) | Email, UID, block list, usage stats, settings, subscription status | Authentication, cloud sync, subscription verification | firebase.google.com/support/privacy |
| Stripe | Firebase ID token (for identity verification); email for checkout pre-fill | Payment processing for premium subscriptions | stripe.com/privacy |
| YouTube (Google) | HTTP request for public channel pages (no personal data sent) | Fetching public creator name and thumbnail when you add a YouTube Creator block | policies.google.com/privacy |
We do not share data with advertisers, data brokers, or any other parties not listed above.
Focusly requests the following Chrome permissions and uses them only as described:
| Permission | Why it is needed |
|---|---|
declarativeNetRequest |
Block network requests to domains in your block list without reading your network traffic. |
storage |
Save your block list, settings, and usage statistics locally in Chrome. |
scripting |
Inject the blocked-page overlay into tabs that navigate to a blocked domain. |
tabs |
Detect which domain is open in the active tab to enforce blocks and track usage time. |
webNavigation |
Detect page navigations (e.g. YouTube SPA transitions) to correctly enforce blocks and timers. |
alarms |
Schedule Focus Ritual timers and daily usage resets. |
notifications |
Show browser notifications for Focus Ritual phase changes (work → break → work). |
identity |
Support Google Sign-In via Chrome's OAuth flow. |
activeTab |
Access the URL of the currently active tab when you open the extension popup. |
offscreen |
Run Firebase Auth in a background offscreen document (required by Manifest V3). |
Host permissions: http://*/*, https://*/* |
Enable blocking rules and content script injection on any website you add to your block list. |
chrome://extensions.Focusly is not directed at children under 13. We do not knowingly collect personal data from children. If you believe a child has provided us with personal information, please contact us and we will delete it promptly.
We may update this privacy policy from time to time. We will update the "Last updated" date at the top of this page. For significant changes we will notify signed-in users via the extension's settings panel.
Kamil Rzeźnik
Email: support@focusly.site
Website: focusly.site