takt

Configuration

Takt se configure de deux façons équivalentes : par attributs data-* sur la balise du snippet (CDN), ou par options de init() (npm). Les deux pilotent les mêmes réglages.

Options data-* (snippet)

AttributEffetDéfaut
data-domainIdentifiant du site dans ton tableau de bordlocation.hostname
data-script-originOrigine first-party dont dériver l’endpoint ({origin}/api/event)https://taktlytics.com
data-endpointEndpoint d’ingestion des events (l’emporte sur data-script-origin)https://taktlytics.com/api/event
data-exclude-localhost="false"Mesure aussi localhost / IP privéesexclu
data-enabled="false"Coupe-circuit : le tracker ne fait rienactivé
data-respect-dnt="false"Désactive le garde-fou Do Not Track côté client (les en-têtes DNT et GPC restent rejetés à l’ingestion)respectés
data-sample-rate="0.5"N’envoie que cette fraction (0 à 1) des events1 (tout)
data-track-queryConserve toute la query string et le hashstrippé
data-query-params="utm_source,utm_medium"Ne garde que ces paramètres de queryaucun

Détail des réglages

  • data-domain : toujours le renseigner explicitement. Sans lui, Takt déduit le domaine de location.hostname, ce qui casse l’agrégation si ton site répond sur plusieurs hôtes (www, préprod, domaine de test).
  • data-script-origin / data-endpoint : par défaut, les events partent vers https://taktlytics.com/api/event. data-script-origin remplace l’origine dont l’endpoint est dérivé ({origin}/api/event) quand tu sers Takt depuis ton propre domaine ; data-endpoint fixe l’URL complète et l’emporte sur data-script-origin. Pour un proxy first-party servi sur la même origine que ta page, passe explicitement data-endpoint="/api/event". Voir Proxy first-party.
  • Captures automatiques (clics sortants, téléchargements, événements déclarés en HTML et 404) ne font pas partie du snippet minimal : ils vivent dans le bundle takt.auto.js et s’activent via data-auto (voir plus bas).
  • data-exclude-localhost : activé par défaut. Passe "false" pour mesurer aussi localhost et les IP privées.
  • data-enabled="false" est un coupe-circuit total : aucun écouteur n’est attaché et rien n’est jamais envoyé.
  • Vie privée & échantillonnage : le snippet respecte Do Not Track et Global Privacy Control (en-tête Sec-GPC / navigator.globalPrivacyControl) et strippe la query string par défaut. Ajuste-les sur la balise : data-respect-dnt="false" (désactive le garde-fou DNT côté client ; les en-têtes DNT et GPC restent rejetés à l’ingestion), data-sample-rate="0.5" (n’envoie qu’une fraction des events), data-track-query (garde toute la query + le hash), data-query-params="utm_source,utm_medium" (ne garde qu’une allowlist). Mêmes sémantiques que les options npm ci-dessous.
<script
  defer
  src="https://cdn.jsdelivr.net/npm/@vskstudio/takt-core/dist/takt.js"
  data-domain="exemple.fr"
  data-query-params="utm_source,utm_medium"
></script>
Le drapeau data-exclude-localhost protège la vie privée de tes visiteurs, et le snippet respecte toujours Do Not Track. Ne désactive ces garde-fous que si tu sais exactement pourquoi.

Captures automatiques (data-auto)

Le snippet minimal takt.js ne mesure que les pages vues. Les captures automatiques (clics sortants, téléchargements, événements déclarés en HTML et 404) vivent dans le bundle takt.auto.js et sont toutes opt-in via l’attribut data-auto, qui prend une liste séparée par des virgules.

AttributEffetDéfaut
data-auto="outbound"Émet Outbound Link: Click sur les clics vers un autre domaineoff
data-auto="downloads"Émet File Download sur les liens pointant vers un fichieroff
data-auto="tagged"Émet les événements déclarés sur les éléments [data-takt-event]off
data-auto="404"Émet un événement 404 sur les pages d’erreuroff
data-downloads-ext="pdf,csv,epub"Restreint les extensions comptées comme téléchargementliste par défaut
data-redact-routes="/verify/[token],/reset/[code]"Envoie le motif à la place du chemin réel des routes listées : pageview, navigation SPA, chemin du 404 et destination des clics sortants et des téléchargements (voir Masquage de routes)aucun
data-redact-undecodable-paths="false"Compare les chemins illisibles aux routes au lieu de /[redacted] (voir Chemins illisibles)masqué
<script
  defer
  src="https://cdn.jsdelivr.net/npm/@vskstudio/takt-core/dist/takt.auto.js"
  data-domain="exemple.fr"
  data-auto="outbound,downloads,tagged,404"
></script>
Sans data-auto, takt.auto.js se comporte exactement comme takt.js : un pageview, rien de plus. Tous les attributs du tableau précédent restent valables sur ce bundle. Détail de chaque capture dans Extensions automatiques.

Options init() (npm)

En version npm, ces mêmes réglages se passent en objet à init() (en camelCase pour les booléens) :

import { init } from '@vskstudio/takt-core'

init({
  domain: 'exemple.fr',   // requis en pratique
  outbound: true,         // suit les liens sortants
  files: true,            // suit les téléchargements
  excludeLocalhost: true, // défaut
  respectDnt: true        // défaut
})

init() crée une instance partagée, déclenche un pageview automatique et câble la navigation SPA. Appelle-le une seule fois, au démarrage de l’application.

Sans endpoint ni scriptOrigin, les events partent vers https://taktlytics.com/api/event. Passe endpoint: '/api/event' si tu proxifies Takt sur la même origine que ta page, ou scriptOrigin: 'https://exemple.fr/_takt' pour dériver l’endpoint d’une autre origine.

Options avancées

Elles ajustent la vie privée, l’échantillonnage et l’autocapture. enabled, sampleRate, trackQuery et queryParams ont aussi une forme snippet data-* (ci-dessus), et tagged / notFound une forme data-auto ; redactRoutes a une forme data-redact-routes sur takt.auto.js ; debug, scrubUrl, exclude, routeTemplates et routeTemplate sont réservés à npm (le snippet minimal ≤ 1 kB ne les embarque pas).

OptionTypeDéfautRôle
enabledbooleantrueCoupe tout envoi quand false (utile en préprod)
debugbooleanfalseTrace chaque event dans la console (réservé npm)
sampleRatenumber1Échantillonne les events envoyés (0 à 1)
trackQuerybooleanfalseConserve la query string telle quelle
queryParamsstring[]aucunAllowlist de paramètres de query à garder
scrubUrl(url) => urlaucunNettoyage d’URL sur mesure, appliqué à la page, au referrer et au url des events Outbound Link: Click et File Download, et au path des events 404 (réservé npm)
excludestring[]aucunPréfixes de chemin jamais suivis, ex. ['/app', '/account'] (borné au segment, vérifié à l’envoi ; réservé npm)
redactRoutesstring[]aucunMotifs de routes sensibles envoyés à la place du chemin réel, ex. ['/verify/[token]'] envoie /verify/[token] au lieu de /verify/abc123 (data-redact-routes sur takt.auto.js, depuis 0.10.0)
redactUndecodablePathsbooleantrueChemin illisible (échappement % mal formé, UTF-8 invalide) : /[redacted] dès qu’une route est configurée ; false le compare aux routes comme les autres, voir Chemins illisibles (depuis 0.12.0)
routeTemplatesbooleanfalseEnvoie chaque page sous la forme de son gabarit de route (/blog/[slug]) ; exige routeTemplate (réservé npm, depuis 0.10.0)
routeTemplate() => string \| nullaucunRenvoie le gabarit de la route courante, lu quand routeTemplates est actif ; les wrappers de framework le fournissent (réservé npm, depuis 0.10.0)
taggedbooleanfalseEvents custom depuis les éléments [data-takt-event] (snippet : data-auto="tagged")
notFoundbooleanfalseÉmet un event 404 sur les pages d’erreur (snippet : data-auto="404")

Par défaut, la query string et le hash sont strippés de toutes les URLs avant l’envoi. trackQuery/queryParams/scrubUrl (npm) ou data-track-query/data-query-params (snippet) permettent de l’ajuster. Voir Vie privée.

Le chemin, lui, part en clair : /verify/abc123 transmet le jeton. redactRoutes remplace le chemin des routes listées par leur motif, et routeTemplates envoie toutes les pages sous forme de gabarit, au prix des statistiques par page d’un site public. Le snippet minimal takt.js ne les gère pas, et takt.auto.js ne propose que redactRoutes, via data-redact-routes. Voir Masquage de routes.

Correspondance des noms : data-exclude-localhost → excludeLocalhost, data-script-origin → scriptOrigin, data-downloads-ext → fileExtensions. La sémantique est identique entre snippet et npm pour les réglages communs.