Le visiteur connecté
Quand un visiteur est connecté à votre site, vous pouvez rattacher sa visite à son identifiant
chez vous : toutes ses pages vues et ses événements de la visite le portent, y compris ceux
d’avant la connexion, et ses visites précédentes sous le même cookie lui sont rapprochées. Les
vues l’exposent en user_id et en person.
1. Activer la fonction
Section intitulée « 1. Activer la fonction »Dans les Réglages du site, cochez Accepter les visiteurs connectés. Tant qu’elle est désactivée, une identité reçue est ignorée — l’événement est gardé, sans identité — et comptée « Identité refusée » dans l’onglet Vérification.
2. Signer un jeton, côté serveur
Section intitulée « 2. Signer un jeton, côté serveur »Le jeton est un JWT HS256, signé par votre serveur avec le secret du site (Réglages du site › Secret). La signature empêche un visiteur de se faire passer pour un autre : ne le signez jamais dans le navigateur.
| Claim | Obligatoire | Rôle |
|---|---|---|
sub | oui | l’identifiant du visiteur chez vous, 200 caractères au plus : rangé tel quel dans user_id |
exp | oui | l’expiration du jeton ; un jeton expiré est refusé |
Préférez un identifiant opaque (un numéro de client, un UUID) à une adresse e-mail : sub
est lisible dans les vues, donc dans eodia insights.
import { SignJWT } from 'jose'
const secret = new TextEncoder().encode(process.env.EODIA_SITE_SECRET)
export async function eodiaIdentity(customerId) { return new SignJWT({}) .setProtectedHeader({ alg: 'HS256', typ: 'JWT' }) .setSubject(String(customerId)) .setIssuedAt() .setExpirationTime('12h') .sign(secret)}<?php// Sans bibliothèque : un JWT HS256 se signe en quelques lignes.function eodia_identity(string $customerId, string $secret, int $ttl = 43200): string { $b64 = fn (string $s) => rtrim(strtr(base64_encode($s), '+/', '-_'), '='); $header = $b64(json_encode(['alg' => 'HS256', 'typ' => 'JWT'])); $payload = $b64(json_encode(['sub' => $customerId, 'iat' => time(), 'exp' => time() + $ttl])); $signature = $b64(hash_hmac('sha256', "$header.$payload", $secret, true)); return "$header.$payload.$signature";}import os, timeimport jwt # PyJWT
def eodia_identity(customer_id: str) -> str: now = int(time.time()) return jwt.encode( {"sub": str(customer_id), "iat": now, "exp": now + 12 * 3600}, os.environ["EODIA_SITE_SECRET"], algorithm="HS256", )3. Le donner au script
Section intitulée « 3. Le donner au script »Dans la balise, si la page est rendue côté serveur :
<script defer src="https://stats.exemple.fr/a.js" data-site="s_arvordemo001" data-identity="<?= htmlspecialchars($jeton) ?>"></script>Ou après coup, à la connexion, dans une application à page unique :
EodiaAnalytics.identify(jeton) // à la connexionEodiaAnalytics.identify(null) // à la déconnexionCe que les vues en font
Section intitulée « Ce que les vues en font »Les vues rapprochent les identités sans rien réécrire dans les données brutes :
- dans la visite :
user_idest l’identité vue au cours de la visite ; toutes les pages vues et tous les événements de la visite la portent, y compris ceux d’avant la connexion ; - d’une visite à l’autre :
personvaut l’identité quand le cookie du visiteur s’est connecté au moins une fois, y compris pour ses visites antérieures ; sinon, l’identifiant du visiteur. C’est la colonne à compter pour des « personnes uniques » ; - un cookie vu sous deux identités (un appareil partagé) garde la plus récente pour
person, et le cas est compté dans les chiffres de contrôle de l’onglet Vérification.
Sans cookie de mesure, le rapprochement se limite à la journée : le hachage du visiteur change chaque jour.
Le secret du site
Section intitulée « Le secret du site »- Régénérer, dans les Réglages du site, crée un nouveau secret, affiché une seule fois. L’ancien reste accepté 24 heures, le temps de déployer le nouveau.
- Le secret est chiffré en base (AES-256-GCM) avec la clé de l’instance,
SECRET_KEY.
Les demandes d’accès et d’effacement des personnes ainsi identifiées se traitent depuis le site : voir les droits des personnes.
eodia analytics est un logiciel libre d’Eodia.