12

Modèle de données

Les quatre sources d'événements partagent une seule table Event. La colonne eventSource les distingue. Les métadonnées spécifiques à chaque source sont dans la colonne JSON properties.

Correspondance des champs

Champ
Web
CLI
MCP
API
eventName
pageview
cli.command
mcp.tool
api.request
eventSource
web
cli
mcp
api
pathname
Chemin URL
/command
/tool_name
/endpoint
referrer
document.referrer
(empty)
mcp://client
(empty)
properties
propriétés personnalisées
command, flags, duration, exit_code, os
tool, client, duration, success
method, endpoint, status_code, duration

TrackedVisitor

TrackedVisitor conserve les données de profil propres au site séparément des événements : un externalId opaque, un nom d'affichage, le lifecycleStage et le customerSince. La première attribution reste dérivée de la toute première page vue, donc changer la période ne réécrit jamais l'acquisition.

13

Confidentialité

BetterMeter est conçu dès le départ pour respecter la vie privée des utilisateurs. Aucune bannière de consentement requise. Conforme au RGPD par défaut.

01

Sans cookies

Le suivi anonyme n'utilise ni cookie ni stockage local. Le fingerprinting reste désactivé sauf activation explicite.

02

Identité explicite seulement

L'appel à identify() autorise ce site à conserver l'identifiant opaque fourni dans le stockage local pour les sessions suivantes; reset() le supprime. Évitez les courriels et données personnelles directes, et appliquez vos exigences de consentement.

03

Identifiants hachés

Les adresses IP sont hachées en HMAC-SHA-256 avec un secret visiteur côté serveur. L'IP brute n'est jamais stockée. Les hachages de visiteurs quotidiens changent toutes les 24 heures, tandis qu'un hachage stable par site permet les profils de visiteurs sans exposer l'IP d'origine.

04

Aucune collecte automatique de données personnelles

Les événements analytiques ne collectent pas automatiquement les noms, courriels, corps de requête ni adresses IP brutes. Les noms de profil et identifiants opaques facultatifs sont fournis délibérément par un opérateur; les identifiants du SDK sont hachés par défaut et les clés sensibles sont masquées.

05

Envoi et oubli

Les appels d'analytique sont asynchrones et ne lèvent jamais d'exception. Un échec réseau abandonne silencieusement l'événement. L'analytique ne doit jamais interrompre l'application hôte.

06

Désactivation

Définissez disabled: true dans la configuration du SDK ou BETTERMETER_DISABLED=1 comme variable d'environnement.

07

Pipeline ouvert

Chaque événement passe par la même fonction processEvent(). Vous pouvez auditer exactement ce qui est collecté et stocké.