WordPress
Le plugin WordPress vskstudio/takt-wordpress emballe le cœur PHP sous forme de plugin clé en main : il injecte le snippet dans wp_head et — quand WooCommerce est actif — remonte les commandes terminées en événements d'achat serveur-à-serveur. Nécessite WordPress 6.0+ et PHP 8.1+. Cette page décrit la version 0.3.1.
Installation
Le plugin est livré en ZIP autonome — pas de composer install sur le serveur. Télécharge takt-analytics.zip depuis la dernière release, puis dans Extensions → Ajouter → Téléverser une extension, dépose-le et active-le.
wp plugin install takt-analytics.zip --activate Toutes les dépendances (le cœur PHP et sa pile PSR-7) sont préfixées sous Takt\WP\Vendor\ : le plugin n’entre jamais en conflit avec les librairies d’une autre extension. Les requêtes serveur-à-serveur passent par le wp_remote_post natif de WordPress — aucun client HTTP embarqué.
Configuration
Tout se règle dans Réglages → Takt Analytics :
| Réglage | Description |
|---|---|
| Domaine | L’identifiant du site envoyé avec chaque événement (ex. exemple.fr). |
| Mode du script | inline (snippet embarqué, anti-adblock), cdn (jsDelivr), asset (fichier que tu héberges) ou sdk (module ES — seul mode qui accepte les chemins exclus et le nettoyage d’URL). |
| Origine du script | Origine first-party qui sert le runtime du tracker ; l’ingestion navigateur passe alors par cette origine plutôt que par le domaine Takt. |
| Exclure localhost | Ne pas suivre les hôtes locaux. Décochée par défaut : coche-la explicitement, sinon le trafic localhost et consorts est compté. |
| Clics sortants / Téléchargements / Événements balisés / Pages 404 | Bascules d’autocapture du tracker navigateur. |
| Extensions téléchargeables | Restreint les téléchargements comptés à ces extensions (pdf, zip, docx). Vide = liste par défaut du tracker. |
| Taux d’échantillonnage | Fraction des hits envoyés, entre 0 et 1 (0.5). Vide = tout est envoyé. |
| Conserver la query string | Garde la query string et le hash dans l’URL enregistrée ; sinon ils sont retirés. |
| Paramètres de requête conservés | Allowlist de paramètres conservés (utm_source, utm_medium). |
| Chemins exclus du suivi (mode SDK) | Préfixes de chemin jamais suivis (/app, /account). Ignoré hors mode sdk. |
| Ignorer Do-Not-Track | Cesse de respecter le signal Do Not Track du navigateur. |
| Suspendre le suivi | Coupe-circuit : le snippet est rendu mais n’envoie plus rien. |
| Suivi WooCommerce (achats) | Envoyer un événement d’achat quand une commande atteint le statut déclencheur. |
| Déclencheur de la commande | Statut de commande qui déclenche l’achat (Terminée ou En traitement). |
| Endpoint d’ingestion | L’origine d’ingestion Takt, sans chemin — https://taktlytics.com pour le service hébergé. Le plugin ajoute lui-même /api/event. Sert aux événements serveur-à-serveur uniquement. |
| Clé API | Jeton Bearer pour les événements S2S — champ en écriture seule. |
https://taktlytics.com/api/event dans Endpoint d'ingestion : l'URL d'envoi deviendrait …/api/event/api/event et les achats ne seraient jamais reçus, sans message d'erreur.En mode asset, le snippet pointe vers /takt/takt.auto.js (préfixé par Origine du script si elle est renseignée) : c’est à toi de déposer ce fichier à cette URL, le plugin ne le sert pas.
Clé API via wp-config.php
Pour les environnements où les secrets ne doivent pas vivre en base, définis la clé en constante. Elle prime sur la valeur stockée, et le champ admin est désactivé (grisé, non soumis) avec une note indiquant que la clé vient de la constante :
define('TAKT_API_KEY', 'ta-cle'); Nettoyage d’URL via wp-config.php
La réécriture d’URL est une fonction JS brute injectée verbatim dans la page : elle reste contrôlée par le dev et se définit elle aussi en constante, jamais depuis l’admin. Elle n’a d’effet qu’en mode sdk :
define('TAKT_SCRUB_URL', '(u) => u.split("#")[0]'); CSP
Le filtre takt_snippet_nonce fournit le nonce CSP posé sur la balise <script> du snippet — indispensable en mode inline (le mode par défaut) sous une politique script-src stricte :
add_filter('takt_snippet_nonce', fn () => my_csp_nonce()); Achats WooCommerce (serveur-à-serveur)
Le suivi des achats ne démarre que si les quatre conditions sont réunies : WooCommerce actif, bascule Suivi WooCommerce cochée, Endpoint d’ingestion renseigné et Clé API renseignée. S’il en manque une, le plugin n’accroche simplement pas le hook, sans message d’erreur.
Le plugin écoute alors woocommerce_order_status_changed et émet un événement Purchase avec le revenu depuis ton serveur — les ventes sont donc suivies même quand la commande se termine hors-session (callback de paiement, admin, cron), là où un snippet navigateur ne peut pas se déclencher :
// Émis par le plugin au statut déclencheur :
$takt->withVisitor($order->get_customer_ip_address(), $order->get_customer_user_agent())
->event('Purchase', ['order_id' => '1234', 'items' => '2'], new Revenue('99.90', 'EUR')); Les classes du cœur sont renommées sous Takt\WP\Vendor\ dans le ZIP publié : cet extrait illustre ce que le plugin envoie, il n’est pas réutilisable tel quel depuis un thème.
L’IP et l’User-Agent du client issus de la commande sont forwardés pour l’attribution. Chaque commande n’est comptée qu’une fois : le plugin marque la commande d’un méta _takt_tracked, pour qu’un hook de statut ré-entrant (processing → completed, double clic en admin, extension qui re-sauve la commande) ne remonte jamais deux fois le même achat. Le client S2S avale les erreurs de transport par défaut : un événement en échec ne casse jamais le tunnel d’achat.
Vie privée
Les événements d’achat sont envoyés depuis ton serveur vers l’origine d’ingestion Takt et incluent l’IP et l’User-Agent du client pour l’attribution. Ils sont forwardés, jamais journalisés par le plugin. Le tracker navigateur respecte Do Not Track et un opt-out takt_ignore en localStorage.