takt

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 // nettoyage d'URL personnalisé
  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
OptionTypeDéfautRôle
domainstringlocation.hostnameIdentifiant du site
endpointstringhttps://taktlytics.com/api/eventURL d’ingestion — l’emporte sur scriptOrigin
scriptOriginstringhttps://taktlytics.comOrigine first-party dont dériver {origin}/api/event
respectDntbooleantrueRespecte Do Not Track et Global Privacy Control
excludeLocalhostbooleantrueIgnore localhost / IP privées
excludestring[]Préfixes de chemin jamais suivis, ex. ['/app','/account'] (borné au segment)
enabledbooleantrueCoupe tout envoi quand false
debugbooleanfalseTrace chaque event dans la console
sampleRatenumber1Échantillonnage (0–1) des events envoyés
trackQuerybooleanfalseConserve la query string telle quelle
queryParamsstring[]Paramètres de query à garder (allowlist)
scrubUrl(url) => urlFonction de nettoyage d’URL sur mesure
autobooleantruePageview initial + suivi SPA
outboundbooleanfalseSuit les liens sortants
filesbooleanfalseSuit les téléchargements
fileExtensionsstring[]pdf, zip, dmg, xlsx, csv, doc, docx, ppt, pptx, rar, 7z, gz, mp3, mp4, wav, avi, movExtensions de fichiers suivies
notFoundbooleanfalseÉmet un event 404 sur les pages d’erreur (snippet : data-auto="404")
taggedbooleanfalseEvents custom depuis les éléments [data-takt-event] (snippet : data-auto="tagged")
Par défaut, la query string et le hash sont strippés de toutes les URLs (page, referrer, liens sortants) avant l'envoi — un token ou un e-mail dans ?.../#... n'atteint jamais l'analytics. trackQuery conserve la query entière, queryParams n'en garde qu'une allowlist, scrubUrl remplace toute la logique.
Avec le snippet CDN, l'init est faite pour toi à partir des attributs 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 et exclude 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()

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

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' } })
Le global n'expose pas 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).