Trackily Docs

Visites du site par contact

Savoir ce qu'un contact a regardé sur tes pages — la landing, le produit, l'étape de funnel — et t'en servir : sa chronologie, un segment « a vu le produit X ces 7 jours sans acheter », une condition de parcours, une variante de contenu dynamique, une règle d'étiquette « a visité → poser intéressé-caftan ». Désactivé par défaut, réglé domaine par domaine, avec le consentement du visiteur.

Concept

Trackily ne suit que les pages qu'il sert lui-même sur un domaine où tu as activé le suivi : landings (/l/, /lp/, landing locale d'une campagne /c/, page servie par un smartlink en ligne /s/), vitrine native (accueil, catalogue, offres, page produit /p/, /demo), étapes de funnel (/f/…). Jamais l'admin, jamais les pages de désinscription ou de préférences, jamais la page blanche servie à un robot.

Chaque page vue devient une ligne, sous un identifiant aléatoire gardé dans un cookie du suivi qui lui est propre (_tly_v) — jamais celui des clics publicitaires, aucune couture avec eux.

Quand un appareil est rattaché à une adresse

Seuls les rattachements prouvés comptent (chronologie, segments, parcours, contenu dynamique, règles d'étiquettes) :

  • un vrai clic dans un de tes e-mails vers un domaine suivi (un préchargement de messagerie ou un robot ne compte pas). Le jeton du lien ne sert qu'une fois : le premier appareil qui le présente est rattaché ; un e-mail transféré et recliqué ailleurs ne rattache rien. Limite assumée (comme Mautic) : si le destinataire n'a jamais cliqué, le premier qui clique un e-mail transféré est rattaché à sa place. ;
  • une commande payée (au paiement, pas à sa création) — checkout natif et funnels ;
  • le clic de confirmation d'un double opt-in.

Un formulaire (landing ou funnel) ne donne qu'un rattachement provisoire : gardé mais invisible ; il devient prouvé quand ce même appareil prouve la même adresse ; il expire au bout de 30 jours. Il ne remplace jamais un rattachement prouvé.

Règles de séparation :

  • un identifiant n'appartient qu'à une adresse, pour toujours : si un appareil déjà rattaché à Alice s'identifie à Bob, il reçoit un nouvel identifiant rattaché à Bob ; les pages d'avant restent à Alice. Effacer Alice efface donc tout ce qui la concerne ;
  • au rattachement, seules les pages anonymes de la même session (la demi-heure qui précède) sont rattachées ; les plus anciennes restent anonymes jusqu'à la purge ;
  • une adresse garde ses 20 appareils les plus récents ; un appareil évincé est effacé avec ses pages.

Le jeton d'un e-mail ne fuit jamais : la page qui le reçoit répond aussitôt par une redirection vers la même adresse sans le jeton, et le garde 10 minutes dans un cookie technique (_tly_e, inaccessible au JavaScript de la page) ; seul /api/v le lit, et seulement avec consentement. Aucun pixel tiers ni aucun journal ne le voit. Le reste de l'adresse du lien n'est jamais réécrit.

Les quatre modes

Mode Ce qui se passe
Désactivé (défaut, et la valeur de tout domaine existant) Rien ne change : aucun script, aucun cookie, les pages sortent identiques à l'octet près.
Avec le bandeau de consentement de Trackily Un petit bandeau en bas de page demande l'accord et dit ce qui se passe (« elles peuvent être rattachées à votre adresse e-mail et servir à vous envoyer des e-mails adaptés »), deux boutons de même poids, un lien « En savoir plus ». Rien n'est déposé ni envoyé avant « Accepter ». Langue : celle de la page (fr, en, ar de droite à gauche), sinon celle réglée sur la landing ou la boutique, sinon celle du navigateur, sinon l'anglais.
Avec ma propre bannière (banniere_externe) Ta bannière appelle window.trackilyConsentement(true) après l'accord du visiteur, window.trackilyConsentement(false) s'il refuse ou retire son accord. Rien n'est envoyé avant true. Le lien « Cookies » reste affiché. Exige ta déclaration (texte versionné).
Hors champ (hors_champ) Tu déclares que le trafic de ce domaine n'est soumis ni au RGPD ni à la loi marocaine 09-08 : le suivi part sans bandeau, mais le lien « Cookies » permet au visiteur de s'y opposer. Exige ta déclaration (texte versionné).

Les déclarations sont propres à chaque mode, horodatées, gardées avec leur auteur et la version exacte du texte accepté : un texte modifié plus tard ne réécrit pas ce qui a été accepté. Choisir à nouveau un de ces modes exige une nouvelle déclaration.

Dans tous les modes, un navigateur qui envoie Global Privacy Control ou Do Not Track n'est jamais suivi. Le choix du visiteur est gardé 6 mois dans _tly_consent avec la version du texte et la date (oui.b1.20261024) ; le serveur compte les accords et les refus par domaine et par jour, sans identité (« consentements sur 30 jours » dans le réglage). Refuser efface l'identifiant du visiteur.

Brancher ta bannière (banniere_externe)

<script>
  // Dans le rappel de TA bannière, après le choix du visiteur :
  window.trackilyConsentement && window.trackilyConsentement(true);   // accord
  window.trackilyConsentement && window.trackilyConsentement(false);  // refus ou retrait
</script>

La fonction existe dès que la page a chargé le script de Trackily (il est en defer) ; appelle-la depuis le rappel de ta bannière, à chaque page si ta bannière le fait. Un second true ne recompte rien.

Ce qui est collecté (et ce qui ne l'est jamais)

On garde : l'identifiant aléatoire, le chemin de la page (jamais la chaîne de requête ni les paramètres ;… — sauf utm_source, utm_medium, utm_campaign), son titre (200 caractères au plus), son type (landing, produit, catalogue, panier, paiement, étape de funnel, autre) et sa ressource (la landing, le produit, l'étape), l'hôte du site d'où vient le visiteur, la date, et si l'appareil est un mobile. Tout motif d'adresse e-mail dans le chemin, le titre ou les utm est remplacé par [e-mail].

Jamais : l'adresse IP, le contenu d'un formulaire, l'agent utilisateur complet, une empreinte (canvas, polices…), un identifiant tiers ; rien n'est envoyé à un tiers.

Écriture sobre : une même page revue dans les 30 secondes ne compte qu'une fois, 300 pages vues au plus par visiteur sur 24 heures (même sous des envois simultanés), robots connus ignorés, limite de débit par IP (une IPv6 compte par /64). La page ne l'attend jamais.

Conservation : 13 mois pour les pages vues et les rattachements ; 30 jours pour un rattachement provisoire. Quand plus aucune ligne d'abonné ne porte une adresse (suppression unitaire ou en masse), ses rattachements et ses visites sont effacés ; une purge bornée passe chaque jour dans le moteur.

Tes obligations

Le suivi des visites est un traitement de données personnelles. En mode avec bandeau, Trackily recueille le consentement pour toi et sert la page d'information /cookies, qui nomme l'éditeur du site (la marque du domaine ou le nom de la boutique) et un moyen de le contacter (l'e-mail de contact de la boutique, settings.contact_email, sinon l'e-mail de support de l'instance), et dit les quatre droits du visiteur : accès, effacement, opposition, retrait de son accord. En mode ma propre bannière, c'est ta bannière qui porte le consentement : mentionne ce suivi et appelle la fonction seulement après l'accord. En mode hors champ, ne le choisis que si ton trafic n'est réellement pas soumis au RGPD ni à la loi 09-08. Dans tous les cas, mentionne ce suivi dans ta politique de confidentialité et réponds aux demandes d'effacement (voir plus bas).

Comment l'activer

  1. Domaines → le domaine → « Suivi des visites » : choisis le mode (pour « ma propre bannière » et « hors champ », coche la déclaration affichée). Le domaine principal de l'instance se règle de la même façon.
  2. Le réglage s'applique à toutes les pages servies sur ce domaine : tout de suite sur le conteneur qui l'enregistre, en 30 secondes au plus sur les autres.
  3. Réveiller un domaine archivé ou le renommer remet son suivi à « Désactivé » et efface sa déclaration.
  4. « Pages vues sur 30 jours » et « consentements sur 30 jours » te disent si le suivi reçoit des visites.

API : GET / PUT /admin/api/domains/:id/suivi-visites (et /admin/api/domains/principal/suivi-visites), corps { "mode": "consentement" } ou { "mode": "hors_champ", "declaration": true } — sans declaration: true, refus declaration_requise.

S'en servir

  • Chronologie d'un abonné : le bloc « Visites » — dernière visite, pages vues sur 30 jours, les dernières pages (date, titre, type, domaine). GET /admin/api/email/visites/contact/:email rend les 50 dernières.
  • Segments, parcours, contenu dynamique : le champ visite (a_visite, n_a_pas_visite) — voir Segments.
  • Règles d'étiquettes : le déclencheur visite — voir Étiquettes.

Effacer les visites d'un contact

Une demande d'effacement : « Effacer ses visites » dans sa chronologie, DELETE /admin/api/email/visites/contact/:email, ou l'outil MCP delete_email_contact_visits (aperçu puis confirmation). Toutes les pages vues de ses appareils et ses rattachements (prouvés comme provisoires) sont effacés, définitivement ; la réponse le dit en une phrase (message).

Agent MCP

get_email_contact_visits (les titres y arrivent marqués comme texte non fiable, titre_non_fiable), delete_email_contact_visits (niveau 2), get_domain_visit_tracking et update_domain_visit_tracking (niveau 2 ; mêmes droits que les autres outils de domaines, settings:read / settings:write ; « ma propre bannière » et « hors champ » exigent declaration: true, que l'agent ne donne qu'avec ton accord explicite sur la déclaration de l'aperçu).

Voir aussi

L'entrée par une campagne (/c/…) pose un cookie visiteur _tly_vid (1 an) qui sert à reconnaître un visiteur qui revient (condition « visiteur de retour » des flows) et à relier ses clics entre eux (parcours, attribution). Depuis le 2026-10-24, ce cookie suit le réglage « Suivi des visites » du domaine :

  • Désactivé : comme avant, le cookie est posé.
  • Avec le bandeau de Trackily ou avec ta propre bannière : il n'est posé (ni même lu) qu'après « Accepter ».
  • Hors champ : il est posé, sauf si le visiteur a refusé (lien « Cookies », GPC ou Do-Not-Track).

Sans cookie, le clic est enregistré normalement ; seul le « visiteur de retour » ne peut pas être reconnu. Les clics uniques ne dépendent pas de ce cookie.