Suivi
API du tracker
Tous les attributs data et toutes les commandes JavaScript du tracker, et ce qu’il collecte automatiquement.
Le tracker se configure avec des attributs data-* sur sa balise script et se pilote avec une seule fonction, window.globatics(command, …args). Les appels faits avant le chargement du script sont mis en file d’attente par le stub du snippet d’installation, puis rejoués dans l’ordre. Pour savoir quoi envoyer et pourquoi, voir les événements personnalisés et revenus et l’identification et la persistance.
Attributs du script
| Attribut | Par défaut | Effet |
|---|---|---|
data-site | obligatoire | Identifiant du site. Sans lui, le script ne fait rien. |
data-api | <script origin>/api/collect | Endpoint de collecte. À utiliser avec un proxy first-party. |
data-persist | désactivé | Enregistre un identifiant de visiteur aléatoire dans le localStorage (globatics_vid) pour que les visiteurs récurrents et la rétention fonctionnent d’un jour à l’autre. Désactivé par Global Privacy Control. |
data-hash | désactivé | Routage par hash : les changements de /#/page comptent comme des pages vues et le hash est conservé dans les URL. |
data-exclude | — | Motifs de chemin, séparés par des virgules, jamais suivis : /admin/*,/preview/**. * vaut un segment, ** vaut n’importe quoi. Insensible à la casse. |
data-include | — | Seuls ces motifs de chemin sont suivis (même syntaxe). En sortir par une navigation côté client envoie leave. |
data-auto="false" | auto | Pas de pages vues automatiques : appelez vous-même globatics('pageview'). |
data-respect-dnt | désactivé | Désactive le suivi quand le navigateur envoie Do Not Track. |
data-clicks="false" | activé | Désactive $click, $rage_click et $dead_click. Le suivi des liens reste actif. |
data-errors="false" | activé | Désactive $error. |
data-vitals="false" | activé | Ne charge pas /vitals.js. |
<script defer
data-site="SITE_ID"
data-persist
data-exclude="/admin/**,/preview/*"
src="https://globatics.live/script.js"></script>Commandes JavaScript
// événement personnalisé, props facultatives (à plat, 30 max) et revenu
globatics('event', 'purchase', { plan: 'pro', seats: 3 }, { revenue: 49.9, currency: 'EUR' });
globatics.track('signup', { plan: 'free' }); // identique à 'event'
// identifier le visiteur (nécessite "Allow identify" dans les réglages du site ; ignoré sous GPC)
globatics('identify', 'user_123', { name: 'Ada', plan: 'pro' });
globatics.identify('user_123');
globatics('reset'); // à la déconnexion
// pages vues manuelles (data-auto="false", ou pages virtuelles)
globatics('pageview'); // URL courante
globatics('pageview', '/checkout/step-2'); // URL relative ou absolue
globatics.pageview('/virtual');
// exclusion du propriétaire pour ce navigateur (localStorage "globatics_ignore")
globatics('optout');
globatics('optin');Collecté automatiquement
| Signal | Quand | Données |
|---|---|---|
| Page vue | Chargement initial, pushState / replaceState / popstate (même URL dédoublonnée), changements de hash avec data-hash, restaurations depuis le cache précédent/suivant. | URL, référent (première vue), titre, taille d’écran, langue, fuseau horaire |
| Heartbeat | Toutes les 15 s tant que l’onglet est visible, et aussitôt qu’il redevient visible. | Temps d’engagement, profondeur de défilement |
| Leave | Page masquée ou pagehide (jamais unload). | Temps d’engagement et profondeur de défilement finaux |
$outbound | Clic sur un lien vers un autre site. | URL |
$download | Clic sur un lien de fichier (pdf, zip, dmg…). | URL, extension |
$mailto / $tel | Clic sur un lien e-mail ou téléphone. | URL sans la query |
$click | Clics sur les liens, boutons et champs submit ; 50 au plus par page. | Sélecteur, libellé (32 caractères, chiffres et e-mails masqués), x/y en % de la fenêtre |
$rage_click | 3 clics ou plus, chacun à moins de 30 px et 1 s du précédent. | Sélecteur, libellé, x/y, nombre de clics |
$dead_click | Un clic sur un élément de type bouton sans changement du DOM, défilement, déplacement du focus ni navigation dans les 2,5 s. | Sélecteur, libellé, x/y |
$error | Erreurs non interceptées, ressources en échec, rejets non gérés ; 5 au plus par page. | Message (300 caractères), source, ligne, colonne, 3 frames de pile, ms depuis le dernier clic |
$form_submit | Toute soumission de formulaire (jamais les valeurs). | id, name ou action du formulaire |
$search | Une page vue avec ?q=, ?s= ou ?search=. | Requête, 64 caractères, masquée |
$vitals | Une fois, quand la page est masquée pour la première fois (depuis /vitals.js). | LCP, FCP, INP, CLS, TTFB |
Jamais collecté
Le script ne lit jamais ce que les gens tapent : les valeurs des champs et le contenu contenteditable ne sont jamais lus, et les fragments de hash sont supprimés sauf si vous utilisez data-hash.
Limites
| Élément | Limite |
|---|---|
| Noms d’événement | 1 à 100 caractères ; ne doivent pas commencer par $ (réservé) |
| Props | Valeurs à plat : chaîne (≤ 256 caractères), nombre, booléen ou null. Clés ≤ 64 caractères, 30 props au plus. |
| Revenu | En unités principales (49.9). Valeurs négatives (remboursements) acceptées ; au-delà de ±1 000 000 000, ignoré. |
| Devise | Code ISO 4217 ; la devise du site si absente. |
| Corps de la requête | 8 Ko d’UTF-8 ; au-delà, les props sont supprimées. |
| URL | 2 048 caractères |
Content Security Policy
Autorisez votre hôte Globatics dans script-src et connect-src. Avec une CSP à base de nonce, utilisez 'strict-dynamic' pour que vitals.js puisse se charger, ou mettez data-vitals="false". Si tout passe par un proxy sur votre propre domaine, 'self' suffit.