Zeno
Se connecter

Un visitor ID, quelle que soit la façon dont ils reviennent

L'agent transforme plus de 100 signaux de l'appareil en visitor ID sur le serveur. Le mode incognito, les cookies effacés et les mises à jour du navigateur ne créent pas un nouveau visiteur.

Ce qu'un visiteur de retour peut modifier

L'ID correspond à l'appareil, et non au cookie ni à la connexion.

Ils reviennent avecMême visitor IDPourquoi
Une fenêtre privée ou de navigation incognitoIdentiqueLe stockage est vide, pas le matériel.
Cookies et données du site effacésIdentiqueL'ancre matérielle et l'empreinte correspondent toujours.
Une mise à jour du navigateurIdentiqueUne nouvelle version modifie quelques signaux ; la correspondance floue les absorbe.
Un VPN ou une nouvelle adresse IPIdentiqueL'IP ne fait pas partie de l'ID. Elle apparaît plutôt dans les flags.
Un nouveau compte sur le même appareilIdentiqueC'est ainsi que les multi-comptes apparaissent : un appareil, plusieurs external IDs.
Autre navigateur sur le même appareilNouveau visiteurChaque navigateur affiche différemment, c'est donc une autre empreinte.
Un autre appareilNouveau visiteurL'ID est l'appareil.

Correspondance dans l'ordre

Chaque identification est vérifiée auprès des visiteurs du projet, de la correspondance la plus sûre à la moins sûre, et l'événement indique laquelle a été retenue.

ID stocké
ID conservé par l'agent dans le stockage et un cookie first-party, tant que le matériel correspond.
Ancrage matériel
Graphiques, cœurs, mémoire et plateforme, que la mise à jour du navigateur ou le vidage du stockage ne modifie pas.
Empreinte connue
Exactement les mêmes signaux déjà vus dans votre projet.
Correspondance approximative
Composant par composant face aux visiteurs récents sur le même matériel, avec une marge sur le meilleur suivant.
Sensible au bruit
Canvas et audio sont exclus lorsqu'un navigateur les randomise, comme Brave et les fenêtres privées.
login.ts
import { start } from 'zeno-id'

const agent = start({ publicKey: 'pk_...' })

// A stable ID per device, and whether it was seen before.
const { visitorId, returning, requestId } = await agent.get({
	externalId: user.id,
	action: 'login',
})

Plus de 100 signaux

Collecté à partir de zéro, sans adresses réseau WebRTC.

  • Rendu

    Canvas, fournisseur et renderer WebGL, extensions et paramètres, adaptateur WebGPU et audio.

  • Appareil

    Écran, profondeur de couleur, ratio de pixels, cœurs, mémoire, tactile, plateforme, client hints, polices et voix.

  • Paramètres

    Fuseau horaire, langues, calendrier, préférences multimédias, quota de stockage et états des autorisations.

  • Intégrité

    Traces d'automatisation, natives remplacées et valeurs qui diffèrent entre la page, un worker et un iframe.

Voir le flag signals →

Transparent sur les limites

Un ID sur lequel fonder vos décisions car il indique son degré de certitude.

  • Un ID par projet

    L'ID est haché avec votre projet, donc le même appareil a un autre ID ailleurs. Personne ne peut suivre vos visiteurs d'un service à l'autre.

  • Confiance à chaque événement

    Fiabilité de la correspondance, de 0 à 1. Une correspondance approximative sur un appareil courant obtient un score plus bas qu'un ID enregistré sur un matériel rare.

  • Une piste, jamais une preuve

    Des appareils identiques, comme le même modèle de téléphone avec le même OS, peuvent partager un ID. Vérifiez un ID partagé avec les external IDs, flags et la connexion.

Identifiez votre premier visiteur aujourd'hui

Installez l'agent, lisez l'événement sur votre serveur et c'est terminé.