Repository navigation
Releases: mayerwin/Tidesight
Release list
Tidesight 0.3.0
What's new
Search engines: Google Search Console and Bing Webmaster Tools. A new Search engines report shows the searches that bring visitors: clicks, impressions, CTR and average position, per query, landing page, country and device, with comparisons. Next to each landing page it shows the visits, bounce rate, engaged time and conversions Tidesight recorded. You connect the accounts once, step by step, in a property's settings (a Google service account; a Bing API key). The scheduled jobs import 16 months of Google history, then keep it current. See docs/search-engines.md.
Paths. A Sankey flow of the pages visits go through: from their entry page, from any page, or leading to a page. There is also a view of what comes before and after one page: entrances by channel, previous and next pages, exits.
Import history from Google Analytics 4, Plausible or Matomo. Property settings → Import history brings the daily figures of your previous tool into the reports for the days before Tidesight's own data, so switching leaves no gap and counts nothing twice. Imported figures cover pages, entry and exit pages, sources, channels, campaigns, countries, devices, browsers and systems. Sources:
- Plausible: upload its CSV export.
- Google Analytics 4: through the Data API.
- Matomo: through its Reporting API.
See docs/history.md.
Updating
Click Update in the dashboard (admins), or run jobs.py update --install. New databases (search.db, history.db) are created on first use and backed up nightly.
Full Changelog: v0.2.1...v0.3.0
Tidesight 0.2.1
Updates now keep Tidesight's code private.
- The update keeps the permissions of the code it replaces. If
app/is closed to other accounts (the deployment guide'schmod 700 app), every folder and file of the new code is too, and so is the download while it is checked. The copies refreshed in the website's folder get the modes the web server needs (tidesight.fcgi755,.htaccess644). - Installations updated by 0.2.0's or 0.1.0's updater are repaired by the next cron run after this update, once, from the permissions of the previous code (
app.previous). - The Python tests run on Linux for every change (Python 3.9 and 3.13).
Update from the dashboard (Status → Update), or with python3 -m tidesight.jobs update --install.
Tidesight 0.2.0
The first public release of Tidesight: self-hosted web analytics that keeps every raw hit, on the hosting you already have.
Try it first: the live demo is the real dashboard and Python web app, running in your browser on made-up data for three websites.
Install
In your website's folder, then follow the deployment guide:
curl -L https://github.com/mayerwin/Tidesight/releases/latest/download/tidesight.tar.gz | tar xztidesight.tar.gz is the code, unpacked as app/. Installed copies look for new releases once a day and install them from the dashboard (Status page → Update).
What is in it
- Tracker:
ts.js, about 8 KB gzip, with plugins loaded only where they are switched on: clicks and heatmaps, scroll, forms, Web Vitals, errors, mouse movement, session replay (rrweb), bot signals. - Collector: Python's standard library, every hit appended raw to SQLite; FastCGI or CGI on shared hosting, with PHP, Node and Cloudflare Workers connectors that pass the same conformance suite.
- Jobs: sessions, geolocation, devices, bots, channels (GA4 grouping, AI assistants included) and identity, derived again whenever the rules improve.
- Dashboard: overview and realtime, acquisition, content, locations, technology, events, goals, an explorer, funnels, retention, heatmaps, replays, forms, site search, Web Vitals, errors, visit timelines and visitor profiles; comparisons, filters, segments, annotations and exports everywhere.
- Run it: properties and people managed in the dashboard (the first account with a setup code from the server, invitations as one-time links), everything in one folder behind an
.htaccessthat Tidesight checks from the outside, one-click updates with a rollback. - Privacy and security: a privacy mode (IP truncation or hashing, retention windows, Do Not Track and GPC, no fingerprinting), bounded public endpoints, no secrets stored, a strict Content Security Policy, and adversarial security reviews with every finding fixed and tested.
Updating from 0.1.0
Admins see 0.2.0 on the Status page within a day of its release (or at once with python3 -m tidesight.jobs update --check); Update installs it at the next cron run and keeps 0.1.0 for update --rollback.