eodia analytics
Votre audience. Avec ou sans cookie.
Pages vues, campagnes, événements, commandes : mesurés site par site, dans le cadre de l’exemption de la CNIL, sans jamais enregistrer une adresse IP. Les analyses se font dans eodia insights.
- Open source, AGPL-3.0
- Sans bandeau, sans adresse IP
- Analyses dans eodia insights
Une balise. Rien d’autre.
Collez une ligne dans vos pages : pages vues, sources, campagnes, clics, défilement et mesures automatiques partent d’eux-mêmes.
Reçu ✓, en quelques secondes.
L’onglet Vérification montre ce qui arrive, en direct : les événements reçus, et ceux refusés avec leur raison.
Avec ou sans cookie : site par site.
Le mode se règle dans l’écran, et le serveur le dit au script. La balise ne change jamais.
Vous décrivez. Insights comprend.
Événements, propriétés, zones, objectifs : chaque libellé devient un commentaire SQL, lu par eodia insights et son assistant.
Les analyses, dans eodia insights.
Le bouton Statistiques ouvre un tableau de bord d’insights verrouillé sur le site — même en SQL libre.
Avec ou sans cookie
Trois modes. Un réglage par site.
Sans cookie, le visiteur est un hachage du jour, dont le sel est détruit le lendemain. Avec le cookie de mesure, on reconnaît les revenants pendant 13 mois au plus. Avec consentement, votre plateforme décide. La balise, elle, ne change jamais.
Le serveur décide
Le mode vient avec la réponse à la première page vue. Changer de mode prend effet à la page suivante, sans toucher au site.
13 mois, pas un jour de plus
L’expiration du cookie est fixée à sa création et n’est jamais prolongée par une visite. optOut() l’efface.
Un refus est un refus
optOut() et le signal Global Privacy Control coupent tout envoi, dans tous les modes. L’adresse IP n’est jamais gardée.
Sans une ligne de code
Ce que font vos visiteurs, jusqu’à la commande.
Liens sortants, téléchargements, recherche interne, formulaires et vidéos : mesurés d’office. Et le parcours d’achat, de view_item à purchase, selon la convention de GA4 — une commande ne compte qu’une fois.
Mesuré d’office
Liens sortants, fichiers, recherche interne (lue dans l’adresse par le serveur), formulaires, vidéos HTML : activables un à un.
Jamais une valeur saisie
Un formulaire commencé, un formulaire envoyé : jamais ce qu’on y a tapé. Les termes de recherche sont masqués s’ils ressemblent à une adresse ou à un numéro.
Une commande, une fois
Rechargée, envoyée par le navigateur puis par le serveur : une transaction compte une fois, et les montants du serveur l’emportent.
Campagnes et attribution
Chaque visite à sa place. Chaque vente à ses visites.
Les UTM sont normalisés et leurs alias réunis, les canaux suivent les règles de GA4 — modifiables, et qui valent pour le passé —, et chaque commande est répartie entre les visites qui l’ont précédée, selon six modèles.
Le parcours de Léa
Des UTM au propre
Minuscules, alias (fb, facebook.com → facebook), identifiants de clic des régies réduits à leur type : jamais leur valeur.
Les canaux de GA4
Dix-neuf canaux de départ, des règles que vous réordonnez et modifiez. Une règle changée corrige aussi les mois passés.
Six modèles, côte à côte
Pour les visiteurs suivis (cookie, consentement, connexion), dans une fenêtre de 30 jours réglable : insights compare les modèles d’un filtre.
Des métadonnées qui voyagent
Décrit une fois. Compris dans insights.
Vous déclarez un événement, ses propriétés, une zone : leurs libellés deviennent des commentaires SQL. eodia insights les lit — dans son écran Structure, et jusque dans le contexte de son assistant IA.
Des commentaires SQL
Chaque vue, chaque colonne, chaque propriété déclarée porte son libellé et sa description, en français, dans la base même.
Des vues générées
Un événement déclaré devient sa vue evt_<nom>, une colonne typée par propriété ; une classification, sa vue cls_<nom>.
Rien à coder dans insights
Il lit déjà les commentaires de PostgreSQL : ils arrivent dans Structure et dans le contexte de son assistant.
Droits des personnes
Une demande. Et c’est fait.
Une personne demande ses données, ou leur effacement : par son identité ou par son cookie, depuis l’écran, l’API ou la clé d’envoi du site. Ses visites d’avant la connexion comprises. On ne garde que l’empreinte de la demande.
Par identité ou par cookie
Un client connecté, par son identifiant ; un visiteur anonyme, par l’identifiant de son cookie de mesure.
Toute la personne
Les visites rapprochées d’avant la connexion sont comprises. L’export se télécharge en JSON pendant 7 jours.
Une empreinte, pas l’identifiant
La demande garde une empreinte et un nombre de lignes. Sans cookie, il n’y a rien à rattacher à personne.
Et tout ce qu’on attend d’une mesure d’audience.
Ce qui fait qu’une équipe marketing l’adopte, et qu’un DPO dort tranquille.
Adresse IP enregistrée
Elle sert au hachage du jour et au pays, puis elle est oubliée : ni en base, ni dans un journal.
Applications à page unique
pushState, replaceState, fragments : chaque changement d’adresse compte, sans code.
Connexion unique
OpenID Connect ; les groupes viennent de votre annuaire, les accès se donnent par site.
data-eodia-zone="tarifs" Zones et clics
Le temps de visibilité de vos blocs, et des clics placés dans l’élément : de quoi dessiner des cartes de chaleur.
Classifications
Le catalogue produits, les codes de campagne : importés en CSV, joints par insights.
Annotations
La lettre envoyée, la version mise en ligne, la panne : des repères sur les courbes.
POST /collect/server Collecte côté serveur
Les commandes confirmées, les applications, les traitements par lots : avec une clé d’envoi propre au site.
Votre domaine
Le script et la collecte sur stats.votre-site.fr, en CNAME.
Journal d’audit
Connexions, sites, secrets, clés d’envoi, demandes des personnes : tout est tracé.
Chez vous
Vos visiteurs ne passent par aucun tiers.
Une image Docker, un fichier Compose : PostgreSQL, l’API qui collecte, le worker, l’interface et Caddy pour le HTTPS. Le premier écran crée le compte administrateur.
- HTTPS automatique avec Caddy, sans journal d’accès
- Une image, quatre rôles : api, web, worker, all
- Une seule base PostgreSQL, managée ou non
Questions fréquentes
En quoi est-ce différent de Google Analytics ?
Ce qu’on mesure est proche — pages vues, campagnes, canaux, événements, commerce en ligne, attribution —, et les noms des événements d’achat sont ceux de GA4. La différence est ailleurs : les données restent chez vous, l’adresse IP n’est jamais enregistrée, le cookie est facultatif, et les analyses se font dans eodia insights, sur des vues SQL documentées.
Faut-il encore un bandeau de consentement ?
Pas pour la mesure d’audience elle-même, tant que vous restez dans les conditions de l’exemption de la CNIL : mode sans cookie ou cookie de mesure, pas de visiteurs connectés, pas de partage des données, information et droit d’opposition. Votre site peut en avoir besoin pour d’autres traceurs. Faites valider votre configuration par votre DPO.
Sans cookie, que perd-on ?
La reconnaissance d’un visiteur d’un jour à l’autre : un visiteur unique se compte par jour, et l’attribution se limite à la journée. Les pages vues, les visites, les sources, les campagnes, les événements et les commandes, eux, sont entiers.
Où sont les graphiques ?
Dans eodia insights. eodia analytics administre et collecte ; il n’affiche que des chiffres de contrôle. Insights se branche sur ses vues en lecture seule, et le bouton Statistiques de chaque site ouvre un tableau de bord verrouillé sur lui.
Peut-on s’en servir sans eodia insights ?
Oui : les vues du schéma analytics se lisent avec n’importe quel outil qui parle PostgreSQL, avec le rôle en lecture seule eodia_analytics. Mais c’est avec insights que les commentaires, les règles de ligne par site et le bouton Statistiques prennent tout leur sens.
Et les bloqueurs de publicité ?
Servez le script et la collecte depuis un sous-domaine de votre site, en CNAME : la mesure y est moins souvent bloquée. Ce n’est pas un moyen de contourner un refus : optOut() et le signal Global Privacy Control restent respectés.
Mon site est une application React, Vue ou Next.js.
Le script suit les changements d’adresse de l’API history (et des fragments, si vous le demandez) : chaque page de l’application compte, sans code. Pour un contrôle fin, data-auto="false" et EodiaAnalytics.page().
Est-ce vraiment gratuit ?
Oui, sous licence AGPL-3.0-or-later : vous l’installez, l’utilisez et le modifiez librement. Si vous le proposez comme service en ligne modifié, vous publiez vos modifications.
Collez une balise. Gardez vos données.
Une commande pour démarrer, une page d’essai pour voir « Reçu ✓ », et la documentation pour tout le reste.