Privacy
TimeNowHub has no accounts and no ads. Your plans, boards and saved cities stay in your browser or in the links you share. We use Google Analytics, with your consent where the law asks for it, to see which tools help.
Last updated: 22 October 2026
Google Analytics
- We use Google Analytics 4. Its script runs in a background web worker (Partytown). To do that, the site may register a small service worker limited to
/~partytown/. - We use Google Consent Mode. Advertising storage, ad user data and ad personalisation are set to denied for every visitor; there are no ads on this site.
- In the EEA, the United Kingdom and Switzerland (and whenever we cannot tell the country), analytics stays off until you choose Accept in the banner. We ask again 6 months after your last choice. Until then our code does not configure Google Analytics or send it any analytics events. The Google Analytics script file itself is still downloaded from Google with each page.
- Everywhere else analytics is on by default, and you can switch it off at any time in Privacy settings(what Reject does is described there).
- To decide whether to show the banner, your browser asks our server (
/api/region), which answers only yes or no from the country code our network provider, Cloudflare, attaches to the request. We do not store the answer; the response is never cached. - When analytics is on, Google Analytics sets its own cookies (names starting with
_ga) and receives the standard information its tag collects, such as the page address, referrer and browser type.
What our analytics events contain
Our own events (for example “schedule generated” or “brief copied”) pass through an allowlist. Anything not on it is removed before it is sent. They carry only:
- counts in buckets (participants: 1, 2, 3–4, 5+; occurrences: 1, 2–4, 5–8, 9+);
- fixed choices such as cadence, yes/no flags, which action was used, and the rank of a picked option;
- random IDs for a task, a generated plan and a shared link (see below), and a schema version.
They never include participant names, meeting titles, cities, time zones, dates, pasted availability, email addresses or the contents of a shared link.
What stays in your browser
Planner and team-board state lives in the link itself, after the #. Browsers do not send that part of a link to our server. Saved items use your browser’s own storage:
| Name | Where | What it holds | How long |
|---|---|---|---|
| tnh_consent | localStorage | Your analytics choice (granted or denied) and the date you made it. | Until you change it or clear site data. In the EEA, the UK and Switzerland the banner asks again after 6 months. |
| tnh_coordination_job | sessionStorage | A random analytics ID that groups the steps of one task, with the time it was created. | Reused for 30 minutes; removed when the tab closes. Only when analytics is on. |
| tnh_plan_analytics | sessionStorage | Random plan IDs and whether each generated plan was copied or exported. | Removed when the tab closes. Only when analytics is on. |
| tnh_coordination_completion | localStorage | The last task ID and time, so one completed task is counted at most once per 24 hours. | Until it is replaced or you clear site data. Only when analytics is on. |
| tnh_internal | localStorage | Marks the site owner’s own visits as internal traffic. Set only by opening a page with ?tnh_internal=1. | Until ?tnh_internal=0 or clearing site data. |
| pinned_cities, saved_dashboard_views, team_boards, theme | localStorage | Your pinned cities, saved dashboard views, saved team boards and light/dark preference. | Until you remove them or clear site data. |
| timenowhub.poll.votes.* | localStorage | Votes you record in a meeting-time poll on this device. | Until you clear them or clear site data. |
You can remove all of it by clearing this site’s data in your browser.
Shared links
When you copy a planner, team-board or event link, it gets a random sid value. It identifies that shared link, not you, and contains nothing from the plan. When someone opens the link with analytics on, that random value is included in the analytics event, so we can tell that a shared link was used.
Server and network logs
- The site is served through Cloudflare, which processes every request under its own privacy policy. Cloudflare may also add its Web Analytics script for page-view and performance measurement; that script is run by Cloudflare and is not controlled by Privacy settings.
- Our nginx web server uses its default access log: for each request, the connecting address (normally a proxy in front of the server), time, requested address, status, size, referrer and browser user agent. How long these logs are kept depends on the hosting server’s settings.
- Our API logs the requests it rejects or rate-limits with the reason, the path and the rejected value (for example an unknown city or an unsupported query text), without your IP address.
Privacy settings
Use Privacy settings(also in the footer of every page) to accept or reject analytics, or to change your earlier choice. When you choose Reject:
- our analytics events stop at once;
- if Google Analytics was already running on the page, it is switched off for that page with Google’s own opt-out setting; the page does not reload, so your plan and inputs stay as they are;
- on later pages Google Analytics is not configured and receives no analytics events from our code (its script file is still downloaded, and our code still tells it that analytics is denied and switched off);
- the Google Analytics cookies on this site (names starting with
_ga) are deleted, and again on every later page while your choice is Reject.
If your browser does not let the site save your choice, the opt-out and the stop on our events still apply until you leave the page; on your next visit your earlier saved choice, or the default for your region, applies again. All of this needs JavaScript; without JavaScript, analytics does not run at all.
Contact
Questions about privacy or this page: [email protected]. More ways to reach us are on the contact page.