Introduction
eodia analytics measures website audiences, like Google Analytics: page views, visits, sources and campaigns, events, orders, clicks, zones viewed. It does so with or without a cookie, as the administrator chooses, site by site, and within the consent exemption of the CNIL (the French data protection authority) as long as the site stays within it: no banner to display in order to measure.
One decision governs everything else: eodia analytics collects, it does not display. It administers the sites, receives the data and stores it in documented views; the analyses are built in its sister project, eodia insights, connected read-only.
Three jobs, nothing else
Section titled “Three jobs, nothing else”- Administer: the sites, their domains, their tracking mode, and the metadata — the declared events, their properties, the zones, the goals, the classifications, the annotations.
- Collect: a script of a few kilobytes to paste into the pages (
/a.js), a public collection endpoint (POST /collect), server-side collection (POST /collect/server), and batch writes to PostgreSQL. - Expose: an
analyticsschema that contains only views, readable by a read-only role,eodia_analytics. eodia insights connects to it like any other database.
The administration screen shows only check figures: “1,234 events received in the last 24 h”, “last event 12 s ago”, “37 rejected: origin not allowed”. Everything else is read in insights, where each site opens its dashboards through the Statistics button, locked to that site alone.
What sets it apart
Section titled “What sets it apart”- With or without a cookie, site by site. Without a cookie, a visitor is a daily hash whose salt is destroyed the next day. With the measurement cookie (13 months at most, never extended), returning visitors are counted too. A third mode waits for consent. See tracking modes.
- The IP address is never recorded, neither in the database nor in a log: it is used to compute a hash and infer a country, then it is forgotten.
- Metadata that travels. The labels and descriptions of the views, columns and declared events are written as SQL comments: they reach the Structure screen of insights and the context of its AI assistant, without a single extra line of code.
- A dependency-free script: page views (single-page applications included), sources and campaigns, events, clicks, scroll depth, zone visibility time; and, without a line of code, outbound links, downloads, site search, forms and videos.
- E-commerce following a convention aligned with GA4, from
view_itemtopurchase, and server-side collection for confirmed orders or applications. - Clean marketing data: normalized UTM parameters, GA4-style channels (editable rules, which also apply to the past), multi-visit attribution with six models, classifications imported from CSV, annotations.
- Data subject rights: export and erasure of a person’s data, in one click or through the API.
How the pieces fit together
Section titled “How the pieces fit together” site pages ── GET /a.js, POST /collect ───────┐ site servers ── POST /collect/server ─────────┤ ▼ administrators ───► web :3600 ──► api :4600 (Hono) ──► PostgreSQL (Next.js) + worker ├─ public configuration ├─ collect raw data └─ analytics views only │ role eodia_analytics ▼ (read-only) eodia insights- The API serves the administration (
/api/v1), the script (/a.js) and the collection endpoint, which filters, enriches and writes in batches. - The worker creates the monthly partitions, applies the retention period, destroys the previous day’s salt, regenerates the event views and processes export or erasure requests.
- The web app is the administration screen: sites, installation, metadata, verification.
Who is it for?
Section titled “Who is it for?”- Website publishers who want to measure without a consent banner, or with an exempt measurement cookie, and keep their data in-house.
- Marketing teams who want well-organized campaigns, channels and attribution they can compare from one model to another.
- Teams already using eodia insights, who find their audience alongside their sales and support, in the same tool.
Project status
Section titled “Project status”eodia analytics is free software, distributed under the
AGPL-3.0-or-later license. Its code is on
GitHub; the
docs/PLAN.md document records the
decisions.
eodia analytics is free software by Eodia.