Référence API
Surface publique du package @vskstudio/takt-core (intégration npm). Côté snippet, seule la fonction track est exposée. Voir la section Global window.takt en bas de page.
init(options)
Crée et stocke l’instance partagée, puis (par défaut) câble la navigation SPA et émet le pageview initial. À appeler une seule fois au démarrage. Retourne l’instance Analytics. init() est idempotent : un nouvel appel dispose proprement les écouteurs de l’instance précédente avant d’en recréer une.
function init(options?: {
domain?: string
endpoint?: string // défaut: https://taktlytics.com/api/event
scriptOrigin?: string // origine dont dériver {origin}/api/event
respectDnt?: boolean // défaut: true
excludeLocalhost?: boolean // défaut: true
exclude?: string[] // préfixes de chemin jamais suivis (borné au segment)
enabled?: boolean // défaut: true
debug?: boolean // défaut: false
sampleRate?: number // défaut: 1
trackQuery?: boolean // défaut: false (query + hash strippés)
queryParams?: string[] // allowlist de paramètres à conserver
scrubUrl?: (url: string) => string // page, referrer, url des liens sortants et téléchargements
redactRoutes?: string[] // motifs de routes envoyés à la place du chemin réel
redactUndecodablePaths?: boolean // vrai : chemin illisible masqué quand une route existe
routeTemplates?: boolean // défaut: false (chaque page envoyée en gabarit)
routeTemplate?: () => string | null | undefined // gabarit de la route courante
auto?: boolean // défaut: true (pageview auto + SPA)
outbound?: boolean // défaut: false
files?: boolean // défaut: false
fileExtensions?: string[] // extensions suivies si files=true
notFound?: boolean // défaut: false (event 404 sur les pages d'erreur)
tagged?: boolean // défaut: false (events custom depuis data-takt-event)
}): Analytics | Option | Type | Défaut | Rôle |
|---|---|---|---|
domain | string | location.hostname | Identifiant du site |
endpoint | string | https://taktlytics.com/api/event | URL d’ingestion, qui l’emporte sur scriptOrigin |
scriptOrigin | string | https://taktlytics.com | Origine first-party dont dériver {origin}/api/event |
respectDnt | boolean | true | Respecte Do Not Track et Global Privacy Control |
excludeLocalhost | boolean | true | Ignore localhost / IP privées |
exclude | string[] | aucun | Préfixes de chemin jamais suivis, ex. ['/app','/account'] (borné au segment) |
enabled | boolean | true | Coupe tout envoi quand false |
debug | boolean | false | Trace chaque event dans la console |
sampleRate | number | 1 | Échantillonnage (0 à 1) des events envoyés |
trackQuery | boolean | false | Conserve la query string telle quelle |
queryParams | string[] | aucun | Paramètres de query à garder (allowlist) |
scrubUrl | (url) => url | aucun | Fonction de nettoyage d’URL sur mesure, appliquée aussi au url des events Outbound Link: Click et File Download |
redactRoutes | string[] | aucun | Motifs de routes sensibles : un chemin qui correspond part sous la forme du motif, ex. /verify/abc123 → /verify/[token] (depuis 0.10.0) |
redactUndecodablePaths | boolean | true | Chemin 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) |
routeTemplates | boolean | false | Envoie chaque page sous la forme de son gabarit de route ; exige routeTemplate (depuis 0.10.0) |
routeTemplate | () => string \| null | aucun | Renvoie le gabarit de la route courante (/blog/[slug], /users/:id), lu quand routeTemplates est actif (depuis 0.10.0) |
auto | boolean | true | Pageview initial + suivi SPA |
outbound | boolean | false | Suit les liens sortants |
files | boolean | false | Suit les téléchargements |
fileExtensions | string[] | pdf, zip, dmg, xlsx, csv, doc, docx, ppt, pptx, rar, 7z, gz, mp3, mp4, wav, avi, mov, exe, apk, mkv, txt | Extensions de fichiers suivies |
notFound | boolean | false | Émet un event 404 sur les pages d’erreur (snippet : data-auto="404") |
tagged | boolean | false | Events custom depuis les éléments [data-takt-event] (snippet : data-auto="tagged") |
?.../#... n'atteint jamais l'analytics. trackQuery conserve la query entière, queryParams n'en garde qu'une allowlist, scrubUrl remplace toute la logique. Ta fonction reçoit aussi la propriété url des events Outbound Link: Click et File Download (origine et chemin), pour masquer un identifiant glissé dans le chemin d'un lien sortant ou d'un fichier.Le chemin, lui, part en clair. redactRoutes remplace le chemin des routes listées par leur motif (page, referrer interne, liens sortants et téléchargements, events 404). routeTemplates envoie toutes les pages en gabarit via le résolveur routeTemplate, que les wrappers de framework fournissent ; sur un site public, il fusionne tous les articles en une ligne. Quand le résolveur ne renvoie rien, redactRoutes s’applique quand même. Détails et syntaxe des motifs dans Masquage de routes.
init({ domain: 'exemple.fr', redactRoutes: ['/verify/[token]', '/reset/:code'] }) data-*, dont data-script-origin, data-endpoint, data-enabled, data-respect-dnt, data-sample-rate, data-track-query et data-query-params. Les captures automatiques (outbound, files, tagged, notFound, fileExtensions) demandent le bundle takt.auto.js et passent par data-auto / data-downloads-ext. Seuls auto, debug, scrubUrl, exclude, redactRoutes, routeTemplates et routeTemplate restent réservés à npm.track(name, options)
Émet un événement. Le nom pageview est réservé (utilise pageview()). Le type public de track() n’accepte que props :
function track(name: string, options?: { props?: Record<string, string> }): void
track('Signup', { props: { plan: 'pro' } }) Les valeurs de props sont des chaînes (les non-chaînes sont converties) ; une valeur vide ('', null, undefined) est ignorée. Les props sont plafonnées à 30 clés, clés ≤ 64 caractères, valeurs ≤ 1024 caractères ; au-delà, l’event part quand même et un avertissement console est émis une fois.
Pour attacher du revenue, passe par l’instance retournée par init() (dont la méthode track accepte revenue, avec un montant en chaîne). Le montant doit matcher \d+(\.\d{1,2})? et la devise être un code de 3 lettres, sinon le revenue est abandonné (avec avertissement) :
const takt = init({ domain: 'exemple.fr' })
takt.track('Purchase', {
props: { plan: 'pro' },
revenue: { amount: '29', currency: 'EUR' }
}) Le format exact envoyé sur le réseau est décrit dans Events & payload.
pageview()
Émet manuellement une page vue. Rarement nécessaire : init() suit déjà la navigation côté client : pushState, replaceState, popstate et hashchange déclenchent tous un pageview automatique.
function pageview(): void optOut() / optIn() / isOptedOut()
Pilotent le consentement par visiteur. Le choix est persisté dans localStorage (takt_ignore).
function optOut(): void // pose takt_ignore='1', aucun event envoyé
function optIn(): void // retire le drapeau, reprend le tracking
function isOptedOut(): boolean // true si le visiteur a refusé la mesure Ces trois fonctions n’ont besoin d’aucune instance : elles marchent avant init() (une bannière de consentement rendue en premier), et toute instance créée ensuite respecte le choix. Côté serveur, sans localStorage, elles ne font rien et isOptedOut() renvoie false. L’instance retournée par init() ou createTakt() expose les mêmes méthodes optOut(), optIn() et isOptedOut(), branchées sur le même état.
Voir Vie privée pour l’ordre exact des garde-fous.
Global window.takt
Côté snippet, seule la fonction track est exposée sur le global. Elle accepte props et revenue (montant en chaîne) :
window.takt('Signup', { props: { plan: 'pro' } })
window.takt('Purchase', { revenue: { amount: '29', currency: 'EUR' } }) optOut/optIn/pageview. Côté snippet, l'opt-out se pilote directement via localStorage (clé takt_ignore), voir Vie privée. Le pageview, lui, est automatique (initial + navigation SPA).