Installer le tracking en 5 minutes
1. Récupérer le snippet
Section intitulée « 1. Récupérer le snippet »Dans le dashboard Elvn, créez le site (menu Sites → New site) avec son
domaine réel (ex. blog.exemple.fr), puis ouvrez Settings → Tracking :
le snippet y est généré tout prêt avec votre identifiant public.
Le snippet standard :
<script defer src="https://elvn.live/js/t.js" data-site="SITE_PUBLIC_ID"></script>SITE_PUBLIC_IDest l’identifiant public du site, affiché à sa création et dans Settings → Tracking. Il n’est pas secret, mais il est propre à chaque site.- Le script pèse ~1,5 Ko min+gzip, sans dépendance, entièrement sous
try/catchsilencieux : il ne peut pas casser votre page.
2. Le poser au bon endroit
Section intitulée « 2. Le poser au bon endroit »Collez-le avant </head>, sur toutes les pages du site. Selon votre
stack : le layout global (Next.js, Astro, SvelteKit…), le template de base
(base.html, app.blade.php…), ou le <head> de chaque fichier HTML. Le
guide pour agents IA donne l’emplacement exact framework par framework.
Deux points d’attention :
- Une seule occurrence du script par page.
- SPA : rien à configurer — les navigations
pushState/replaceStatesont suivies automatiquement.
Si votre site applique une CSP, autorisez uniquement :
script-src:https://elvn.live;connect-src:https://elvn.live(endpointPOST /api/e).
3. Vérifier
Section intitulée « 3. Vérifier »Déployez, puis visitez une page du site (depuis le domaine réel, pas localhost). Sous ~30 à 60 secondes :
- l’encart « en attente du premier événement » de Settings → Tracking passe au vert ;
- votre visite apparaît dans la vue Realtime du site.
Vérification côté réseau (onglet Network du navigateur) : une requête
POST https://elvn.live/api/e doit partir au chargement et recevoir un
202 avec un corps vide.
En ligne de commande :
# le script doit être servi (200, text/javascript, ETag)curl -sI https://elvn.live/js/t.js | head -5
# l'endpoint répond TOUJOURS 202, même à un payload invalide (voir ci-dessous)curl -s -o /dev/null -w "%{http_code}\n" -X POST https://elvn.live/api/e --data '{}'4. Erreurs courantes
Section intitulée « 4. Erreurs courantes »Le 202 qui ne compte rien (domaine non déclaré)
Section intitulée « Le 202 qui ne compte rien (domaine non déclaré) »POST /api/e répond toujours 202 avec un corps vide, même quand
l’événement est rejeté : c’est volontaire (aucun oracle pour les scanners).
Un 202 ne prouve donc pas que l’événement a été compté. Il est rejeté en
silence quand :
- le
data-siteest inconnu ou le site désactivé ; - le domaine visité ne correspond pas au domaine déclaré du site dans le dashboard (les sous-domaines du domaine déclaré sont acceptés). C’est l’erreur nº 1 : vérifiez que le domaine du site Elvn est exactement celui servi en production ;
- le navigateur envoie le signal GPC (
Sec-GPC: 1) et que le site le respecte (option activée par défaut) ; - la requête vient d’un bot ou dépasse le rate limit (100 evt / 10 s par site + IP).
La seule vérité : l’événement visible dans Realtime.
Rien ne part depuis localhost
Section intitulée « Rien ne part depuis localhost »C’est normal : le tracker reste muet sur localhost / 127.x / [::1],
sauf si vous ajoutez l’attribut data-dev au script. Testez depuis le domaine
réel, ou ajoutez data-dev temporairement (voir la
référence du tracker).
Adblockers
Section intitulée « Adblockers »Les listes type EasyPrivacy bloquent les domaines d’analytics connus : une partie de vos visiteurs (public tech surtout) sera invisible avec le snippet standard. La parade : servir le script et l’endpoint depuis votre propre domaine — voir Proxy first-party.
Autres cas où le tracker se tait volontairement
Section intitulée « Autres cas où le tracker se tait volontairement »Automatisation (navigator.webdriver), page dans une iframe, visiteur ayant
activé l’opt-out (localStorage.elvn_ignore === "true"). Détail complet :
référence du tracker.
Étape suivante
Section intitulée « Étape suivante »- Instrumenter des conversions : Événements & goals.
- Informer vos visiteurs : la page vie privée à coller.