Tracker (pixel JavaScript)
Installation
Section intitulée « Installation »Ajouter le script sur toutes les pages du site (idéalement dans le <head>) :
<script async src="https://tracker.adstrike.io/t.js?id=SITE_ID"></script>SITE_IDest l’identifier du site, visible dans le dashboard (paramètres du site).- Le script est servi par l’API (
GET /t.js) qui vérifie que le domaine appelant (en-têteReferer) fait partie desacceptedDomainsdu site — un identifier valide sur un domaine non déclaré renvoie une 404. - Domaines CNAME personnalisés supportés (certificats gérés automatiquement) : remplacer
tracker.adstrike.iopar votre CNAME.
Le script injecte la configuration du site (window._ADSTRIKE_CONFIG) puis le tracker. Les événements sont mis en file localement et envoyés par batch à POST /c (debounce 1 s, flush forcé au déchargement de la page et au passage en arrière-plan).
Événements suivis automatiquement
Section intitulée « Événements suivis automatiquement »| Événement | Déclenchement |
|---|---|
page_view |
À chaque chargement de page et à chaque navigation SPA (pushState, replaceState, popstate, pageshow sont interceptés). Dédupliqué si l’URL n’a pas changé. Nécessite que le suivi page_view soit activé dans la configuration du site |
session_start |
Au démarrage d’une nouvelle session (30 min d’inactivité = nouvelle session). Porte les données d’attribution du landing (référent, UTM, click IDs si consentement). En mode anonyme, la déduplication est faite côté serveur |
consent_upgrade |
Quand un visiteur passe de « refusé » à « accordé » (liaison de la session anonyme) |
| Événements configurés | Le dashboard permet de configurer des écouteurs DOM (sélecteur CSS + type d’événement) sans modifier le site |
Événements personnalisés
Section intitulée « Événements personnalisés »Une fois le tracker chargé, window.as(nomEvenement, params) est disponible :
window.as("add_to_cart", { sku: "TSHIRT-42", value: 29.9, currency: "EUR" });Événement d’achat (purchase)
Section intitulée « Événement d’achat (purchase) »Contrat de l’événement d’achat côté pixel :
window.as("purchase", { tid: "ORDER-10042", // id de commande — clé de déduplication value: 129.5, // montant de la commande currency: "EUR" // ISO 4217});tidest l’identifiant de commande, unique par site. C’est la clé de déduplication entre le pixel et l’API de conversions : une même commande envoyée par les deux canaux n’est comptée qu’une fois.valueetcurrencyalimentent le chiffre d’affaires attribué (conversion automatique dans la devise de base du compte).
Identification (identify) — pattern recommandé : la file de commandes pré-init
Section intitulée « Identification (identify) — pattern recommandé : la file de commandes pré-init »Le tracker se charge en asynchrone. Un appel direct window.adstrike.identify(...) lancé par le bootstrap d’authentification de votre app peut s’exécuter avant que le tracker soit chargé — il serait alors perdu. Utilisez la file de commandes adstrikeQ, qui fonctionne avant et après le chargement du tracker :
// À la connexion (ou au chargement si l'utilisateur est déjà connecté)(window.adstrikeQ = window.adstrikeQ || []).push(["identify", "USER_12345"]);
// À la déconnexion(window.adstrikeQ = window.adstrikeQ || []).push(["resetIdentity"]);Au chargement, le tracker draine la file puis remplace push par un proxy qui exécute immédiatement les commandes : le même code fonctionne quel que soit l’ordre de chargement.
À propos du clientId passé à identify() :
- Identifiant opaque (votre id utilisateur interne — jamais d’email en clair). Max 256 caractères, caractères autorisés : lettres, chiffres,
. @ : = _ -. - Avec consentement : stocké dans le cookie
_astr_cid(persiste entre les pages). Sans consentement : conservé en mémoire pour la page courante uniquement. - Sert au suivi cross-device (les sessions d’un même
clientIdsont reliées pour l’attribution) et de clé de jointure pour l’API de conversions. resetIdentityefface le cookie à la déconnexion pour ne pas relier les sessions suivantes.
Consentement
Section intitulée « Consentement »Détection automatique, sans intégration nécessaire si vous utilisez :
- Google Consent Mode : le tracker lit
dataLayer(consent default/consent update) et observe les mises à jour. Consentement accordé sianalytics_storageouad_storageestgranted. - IAB TCF 2.0 (
__tcfapi) : purposes 1, 7 ou 8.
Pour une bannière maison, appelez l’API custom :
window.adstrike.setConsent(true); // accordéwindow.adstrike.setConsent(false); // refuséComportement :
- Sans signal après 5 secondes, le consentement passe à « refusé » (mode anonyme, voir architecture.md).
- Les événements émis pendant l’attente sont mis en file et envoyés une fois le consentement résolu.
- Un passage refusé → accordé est géré (les cookies sont créés et la session anonyme est reliée).
- Autres méthodes disponibles :
window.adstrike.getConsent(),window.adstrike.onConsentChange(cb),window.adstrike.flush().
Aucun cookie n’est posé tant que le consentement n’est pas accordé.
| Cookie | Durée | Contenu |
|---|---|---|
_astr_vid |
~13 mois | Identifiant visiteur (UUID) |
_astr_sid |
30 minutes, prolongé à chaque activité | Identifiant de session (UUID) |
_astr_cid |
~13 mois | clientId passé à identify() (cross-device) |
Attributs : Path=/; Secure; SameSite=None.