The analytics
that keeps quiet.

Know which channels bring revenue, which pages convert and how your app compares to your website. Without cookies, without a consent banner, without storing a single IP address.

taci[ˈtaː.tʃi]Italian, imperative:be quiet.

incoming request
POST /api/collect · text/plain · 173 bytes
from 203.0.113.42
user-agent Mozilla/5.0 (iPhone; CPU iPhone OS 18_0 …)
{
  "d": "shop.example.com",
  "p": "/checkout/done",
  "tz": "Europe/Berlin",
  "l": "de-DE",
  "s": "newsletter",
  "n": "Purchase",
  "pr": { "value": "49.90", "currency": "EUR" }
}
what we keep
visitor9c1f0be47d2a… today only
page/checkout/done
countryDE from timezone
deviceiOS · Safari · mobile
sourcenewsletter
goalPurchase · €49.90
ipnever written to disk
cookienone set, none read
0cookies
0IPs on disk
~3KBscript, gzipped
24hat most, until a visitor hash is unlinkable
1SQLite file you own
01For marketing teams

Every number you report on. None you'd have to defend.

Which channel actually pays?

Revenue, orders and average order value per source and per platform. Returns from PayPal, Klarna & co. are recognised, so checkout redirects never steal the credit from the campaign that earned it.

Revenue by source panel

Campaigns, out of the box

UTM source, medium and campaign are picked up from every link. Known apps and referrers get readable names.

Sources panel with brand icons

Goals with a conversion rate

Any event becomes a goal. Click one and the whole dashboard narrows down to the visitors who converted.

Goals and conversions panel

Web and app, side by side

Android, iOS and web in one view, with app versions and revenue per platform.

Platforms panel

Where your visitors are

Countries from the browser's timezone, languages from the browser. No IP geolocation, no guesswork about people.

Countries panel with flags

No banner, no blind spot.

Cookie-based tools only see visitors who click “accept”. Tacilytics doesn't store or read anything on the device, so most sites can run it without a consent banner and see all of their traffic.*

* Whether you need consent depends on your setup and jurisdiction. Check with your data protection advisor; this is not legal advice.

0“accept” clicks needed
before a visit is counted
02For developers

One line to install. Nothing to babysit.

No tag manager, no SDK maze, no third-party requests. Pick your stack:

index.html
<script defer data-domain="example.com"
        src="https://analytics.example.com/tacilytics.js"></script>

REST API & CLI

Everything in the dashboard, over a Bearer-key API with segmentation. The CLI speaks JSON, so scripts and AI agents read your numbers directly.

terminal
$ tacilytics stats shop.example.com 30d --json
{
  "totals":   { "visitors": 7464, "pageviews": 18528, "bounce": 26, ... },
  "trend":    { "visitors": 29, "pageviews": 28 },
  "commerce": { "revenue": 21204, "orders": 273, "aov": 77.67, ... },
  "sources":  [{ "name": "Direct", "visitors": 6149 }, ...],
  "goals":    [{ "name": "Purchase", "visitors": 273, "cr": 3.7 }, ...]
}

The whole stack

  • RuntimeNode.js 18+
  • ServerExpress, one process
  • StorageSQLite, one file
  • Tracker~3 KB, no dependencies
  • TransportsendBeacon, no preflight
  • SPA routingpushState / popstate
  • Botsdropped server-side
  • LicenceMIT
03How privacy works here

Count visits. Forget people.

Not a setting, not a promise in a policy. It's how the counting is built.

  1. 1

    Hash in memory

    Site, IP and user agent are combined with today's random salt and hashed. The IP itself is never written anywhere.

  2. 2

    Salt outside the database

    The salt lives in its own small file, mode 600, so it never ends up in a database dump or a backup of your data.

  3. 3

    Burned at midnight

    At midnight UTC the salt is overwritten. From then on those visits can't be linked to any later visit, not even by whoever runs the server. Limits

  4. 4

    Late events stay anonymous

    An event that arrives after its day has ended gets a one-off hash that can't be matched to anything.

The honest trade-off: a visitor who returns tomorrow is counted again. You lose cross-day journeys; you gain numbers you never have to apologise for.

04Comparison

Tacilytics vs. Google Analytics

Different goals, different trade-offs. Here is the honest version.

TacilyticsGoogle Analytics 4
Cookies on your visitorsNoneYes
Cookie banner needed for analyticsUsually not*Yes, in the EU
IP addresses storedNeverProcessed by Google
Where your data livesYour server, or ours in GermanyGoogle
Open sourceYes, MITNo
Website and native apps in one dashboardYesYes
Follows one person across days and devicesNo, by designYes
Advertising audiencesNoYes

* Depends on your whole setup and jurisdiction. Not legal advice.

06FAQ

Questions, answered.

How can you count unique visitors without cookies?

For each request the server hashes the site, the IP address, the user agent and a random salt that exists only for the current day. The IP is never stored. When the day ends the salt is overwritten, so that day's hashes can't be connected to any later visit. A visitor who returns tomorrow is counted again: reliable daily numbers, without following anyone.

Do I still need a cookie banner?

Tacilytics doesn't store or read anything on the visitor's device, which is usually what triggers the consent requirement for analytics in the EU. Many teams therefore run it without a banner. Your exact obligations depend on your whole website and jurisdiction, so please confirm with your data protection advisor.

Will ad blockers block it?

Some block analytics scripts by name or by known third-party domains. Because Tacilytics runs on your own domain and server, it is far less likely to be on those lists, but no tool can promise to be invisible to every blocker.

What do I need to self-host it?

Node.js 18 or newer. Run npx tacilytics serve in an empty folder and put a TLS proxy such as Caddy or nginx in front. All data lives in one SQLite file in that folder.

Can I track my mobile app?

Yes. There is a Flutter SDK, and any other stack can send a single JSON request. Apps appear in the same dashboard as your website, with a platform filter and revenue per platform.

Can I import my Google Analytics data?

Not at the moment. Tacilytics starts counting from the moment you add it. If an import matters to you, tell us.

See what matters. Leave people alone.

Self-host in five minutes, or let us run it for your team.