takt

Installation

Trois façons d’ajouter Takt à ton site, selon ta stack.

CDN

Une balise <script>. Idéal pour un site statique, du HTML, WordPress, Webflow…

npm

Un import dans ton bundle. Idéal pour une app React, Vue, Svelte, Solid, Angular, Astro, Next…

File d'attente

Capture les appels takt() émis avant que le script soit prêt.

CDN (recommandé)

La méthode la plus simple : une seule balise dans le <head>. Le fichier est servi depuis un CDN mondial, mis en cache et versionné.

<script defer src="https://cdn.jsdelivr.net/npm/@vskstudio/takt-core/dist/takt.js" data-domain="exemple.fr"></script>

unpkg fonctionne aussi : remplace cdn.jsdelivr.net/npm par unpkg.com.

Pour figer une version précise (et éviter toute surprise lors d'une mise à jour), épingle-la dans l'URL : @vskstudio/[email protected]/dist/takt.js.

npm

Si tu as déjà un bundler, installe le package et pilote Takt par code. C’est la voie à privilégier pour les applications à framework.

pnpm add @vskstudio/takt-core
# ou : npm install @vskstudio/takt-core
# ou : yarn add @vskstudio/takt-core
# ou : bun add @vskstudio/takt-core
import { init, track } from '@vskstudio/takt-core'

// Une fois, au démarrage de l'app : déclenche le pageview initial,
// câble la navigation SPA et crée l'instance partagée.
init({ domain: 'exemple.fr' })

// Partout ailleurs : émets tes événements.
track('Signup', { props: { plan: 'pro' } })

Toutes les options de init() sont détaillées dans la configuration.

Wrappers de framework

Tu utilises React, Vue, Svelte, Solid, Angular ou Astro ? Plutôt que de piloter le cœur à la main, prends le wrapper dédié — composant, hooks/composables, directive/action et web component inclus, le tout SSR-safe :

Chacun s’appuie sur @vskstudio/takt-core et expose un sous-chemin /element pour le web component <takt-analytics>, utilisable même hors de ton framework.

Côté serveur, Takt s’intègre aussi à PHP : rendu du snippet directement dans ton HTML et envoi d’événements serveur-à-serveur (S2S), via trois packages Composer publiés sur Packagist :

File d’attente (appels avant chargement)

Le script étant chargé en defer, il peut ne pas être prêt quand ton code appelle takt(). Ce shim crée une file d’attente : les appels sont stockés puis rejoués une fois le script chargé. Aucun événement n’est perdu.

<script>
  window.takt = window.takt || function () { (window.takt.q = window.takt.q || []).push(arguments) }
</script>
Avec le snippet CDN, cette file est déjà gérée pour toi : tu peux appeler window.takt(...) immédiatement. Ce shim n'est utile que si tu charges le script de façon personnalisée.