People

Identifiez les utilisateurs et gérez les propriétés utilisateur avec le module People d'analytique du tracker OpenReplay.

People

Ce module sert à identifier les utilisateurs et à modifier les propriétés du profil utilisateur (définir, définir une seule fois, ajouter, incrémenter, supprimer).

Disponible via :

tracker.analytics.people

Alias de premier niveau : tracker.analytics.identify(...) → équivalent à tracker.analytics.people.identify(...)

// Identify a user (required before other operations except reset)
tracker.analytics.people.identify(user_id: string, options?: { fromTracker: boolean }): void

// Reset local user context & properties (optionally, destroy device id)
// should be called on logout and session end
tracker.analytics.people.reset(hard?: boolean): void

// Delete user on backend, then reset local properties
tracker.analytics.people.deleteUser(): void

// Set properties (overwrite existing values)
tracker.analytics.people.setProperties(properties: Record<string, string | number>): void
tracker.analytics.people.setProperties(key: string, value: string | number): void

// Set properties only if they don't exist yet
tracker.analytics.people.setPropertiesOnce(properties: Record<string, string | number>): void

// Append values to an existing property (string becomes array)
tracker.analytics.people.appendValues(key: string, value: string | number): void

// Append value only if it’s not already present (requires property to exist locally)
tracker.analytics.people.appendUniqueValues(key: string, value: string | number): void

// Increment (or decrement) a numeric property
tracker.analytics.people.increment(key: string, value: number): void

// Read current user id
tracker.analytics.people.user_id: string | null | undefined

Identifie l’utilisateur actuel à l’aide d’un id de type chaîne (email, nom d’utilisateur, id interne, etc.) et met en file d’attente un événement d’identité.

tracker.analytics.people.identify("nikita@openreplay.com")

Si un utilisateur différent avait déjà été identifié, le SDK réinitialise les propriétés people locales avant de basculer vers le nouvel id.

options.fromTracker est utilisé en interne pour éviter d’appeler deux fois le hook d’id au niveau du tracker ; en règle générale, vous n’en avez pas besoin.

Réinitialise l’id de l’utilisateur actuel ainsi que toutes les propriétés people locales.

// soft reset
tracker.analytics.people.reset()

// hard reset (also clears persistent device id)
tracker.analytics.people.reset(true)

Supprime l’utilisateur actuellement identifié sur le backend (en envoyant une mutation de suppression), puis efface l’état local.

tracker.analytics.people.deleteUser()

Si aucun utilisateur n’est identifié, l’appel n’a aucun effet.

Après cet appel, user_id sera effacé et les propriétés locales seront supprimées.

Définit les propriétés utilisateur, en écrasant les valeurs existantes.

tracker.analytics.people.setProperties({
	plan: "pro",
	seats: 5,
})

// or key/value
tracker.analytics.people.setProperties("plan", "enterprise")

Les clés réservées/par défaut (clés internes du tracker) sont ignorées pour le cache local du SDK.

Un événement est mis en file d’attente avec la charge utile properties complète que vous passez.

Définit des propriétés uniquement si elles n’existent pas encore (du point de vue local du SDK).

tracker.analytics.people.setPropertiesOnce({
	signup_source: "docs",
	first_seen_at: Date.now(),
})

Seules les propriétés qui ne sont pas déjà présentes dans le cache people local seront écrites localement.

Un événement de mutation setPropertyOnce est tout de même mis en file d’attente avec les propriétés que vous passez.

Ajoute une valeur à une propriété existante. Si la propriété est actuellement une chaîne/un nombre, elle devient un tableau.

// start with something
tracker.analytics.people.setProperties({ tags: "new" })

// append
tracker.analytics.people.appendValues("tags", "beta-user")

Le SDK ne met à jour le cache local que si cette propriété existe déjà localement.

Un événement de mutation d’ajout est toujours mis en file d’attente.

Ajoute une valeur uniquement si elle n’est pas déjà présente.

tracker.analytics.people.setProperties({ tags: ["new"] })
tracker.analytics.people.appendUniqueValues("tags", "new") // no change
tracker.analytics.people.appendUniqueValues("tags", "beta-user") // appended

Si la propriété n’existe pas encore localement, cet appel ne fait rien (il retourne immédiatement). Définissez-la d’abord via setProperties / setPropertiesOnce.

Ajoute un nombre (y compris des valeurs négatives) à une propriété numérique.

tracker.analytics.people.increment("logins", 1)
tracker.analytics.people.increment("credits", -10)

Si la propriété n’existe pas localement, elle est initialisée à 0 avant d’être incrémentée.

Si la propriété existe mais n’est pas numérique, le SDK lève une erreur.

Alias compatibles avec Mixpanel

Section titled Alias compatibles avec Mixpanel

Toutes les méthodes prennent en charge une couche de compatibilité fournie par souci de familiarité :

tracker.analytics.people.set // setProperties
tracker.analytics.people.set_once // setPropertiesOnce
tracker.analytics.people.append // appendValues
tracker.analytics.people.union // appendUniqueValues
tracker.analytics.people.incrementBy // increment

Flux typique

tracker.analytics.people.identify("user_123")

tracker.analytics.people.setProperties({
	email: "user@example.com",
	plan: "pro",
})

tracker.analytics.people.increment("sessions", 1)
tracker.analytics.people.appendUniqueValues("features_used", "analytics")

Gardez à l’esprit que les sessions OpenReplay ne prennent en charge qu’un seul utilisateur à partir de la version 1.24.0, ce qui signifie que le nouvel utilisateur écrase le précédent dans la session. Lorsque vous changez d’utilisateur, redémarrez également le tracker avec l’option forceNew.

tracker.analytics.people.identify("user_a")
tracker.analytics.people.setProperties({ plan: "free" })

// switching user resets local people properties automatically
tracker.analytics.people.identify("user_b")

Si vous rencontrez des problèmes, rejoignez notre Slack ou consultez notre Forum et obtenez de l’aide auprès de notre communauté.