Maturité utilisateur
La maturité utilisateur est une classification automatique des utilisateurs en segments comportementaux. Au lieu de segmenter manuellement les utilisateurs, Presage calcule la maturité à partir des signaux comportementaux.
Segments de maturité
Section intitulée « Segments de maturité »| Segment | Description | Seuil par défaut |
|---|---|---|
new | Vient de commencer | 3 sessions ou moins |
onboarding | En phase d’apprentissage | 4-10 sessions |
active | Utilisateur régulier ayant dépassé l’intégration | Plus de 10 sessions, moins de 5 fonctionnalités utilisées |
power | Adopteur intensif de fonctionnalités | 5+ fonctionnalités distinctes utilisées |
dormant | Est devenu silencieux | 14+ jours depuis la dernière visite |
Comment la maturité est calculée
Section intitulée « Comment la maturité est calculée »Le calcul suit cet ordre de priorité :
- Vérification dormant — Si l’utilisateur n’a pas été vu depuis
dormantDaysInactivejours, il estdormant(indépendamment des autres signaux) - Vérification nouveau — Si
sessionCountest inférieur ou égal ànewMaxSessions, il estnew - Vérification power — Si le nombre de fonctionnalités distinctes utilisées est supérieur ou égal à
powerMinFeatures, il estpower - Vérification onboarding — Si
sessionCountest inférieur ou égal àonboardingMaxSessions, il estonboarding - Par défaut — Sinon, il est
active
// Simplified version of the actual computationfunction computeMaturity(signals: BehavioralSignals, config: MaturityConfig): Maturity { const daysSinceLastSeen = daysBetween(new Date(signals.lastSeenAt), new Date())
if (daysSinceLastSeen >= config.dormantDaysInactive) return 'dormant' if (signals.sessionCount <= config.newMaxSessions) return 'new'
const featuresUsed = Object.keys(signals.featureUsage).length if (featuresUsed >= config.powerMinFeatures) return 'power' if (signals.sessionCount <= config.onboardingMaxSessions) return 'onboarding'
return 'active'}Configurer les seuils
Section intitulée « Configurer les seuils »Surchargez n’importe quel seuil via la configuration maturity :
const client = createAdaptiveClient({ maturity: { newMaxSessions: 5, // Consider "new" for 5 sessions instead of 3 onboardingMaxSessions: 15, // Extend onboarding period powerMinFeatures: 8, // Require more features for "power" status dormantDaysInactive: 30, // Wait longer before marking as dormant }, // ...rules, persistence})L’interface de configuration complète :
interface MaturityConfig { newMaxSessions: number // Default: 3 onboardingMaxSessions: number // Default: 10 powerMinFeatures: number // Default: 5 dormantDaysInactive: number // Default: 14}Utiliser la maturité dans les règles
Section intitulée « Utiliser la maturité dans les règles »La maturité est accessible au niveau racine du contexte (pas imbriquée sous traits ou signals) :
{ id: 'new-user-onboarding', adaptationId: 'onboarding', priority: 10, conditions: { all: [ { field: 'maturity', operator: 'eq', value: 'new' }, ], }, action: { type: 'show', variantId: 'guided-tour' },}Vous pouvez combiner la maturité avec d’autres conditions :
{ id: 'dormant-enterprise-reactivation', adaptationId: 'banner', priority: 20, conditions: { all: [ { field: 'maturity', operator: 'eq', value: 'dormant' }, { field: 'traits.plan', operator: 'eq', value: 'enterprise' }, ], }, action: { type: 'show', variantId: 'reactivation-offer' },}Exemple : Un onboarding différent pour chaque niveau de maturité
Section intitulée « Exemple : Un onboarding différent pour chaque niveau de maturité »import { createAdaptiveClient, createLocalStorageDriver } from '@presage-kit/core'
const client = createAdaptiveClient({ rules: [ { id: 'new-guided-tour', adaptationId: 'onboarding', priority: 50, conditions: { all: [{ field: 'maturity', operator: 'eq', value: 'new' }], }, action: { type: 'show', variantId: 'guided-tour' }, }, { id: 'onboarding-tips', adaptationId: 'onboarding', priority: 40, conditions: { all: [{ field: 'maturity', operator: 'eq', value: 'onboarding' }], }, action: { type: 'show', variantId: 'contextual-tips' }, }, { id: 'active-whats-new', adaptationId: 'onboarding', priority: 30, conditions: { all: [{ field: 'maturity', operator: 'eq', value: 'active' }], }, action: { type: 'show', variantId: 'whats-new' }, }, { id: 'power-changelog', adaptationId: 'onboarding', priority: 20, conditions: { all: [{ field: 'maturity', operator: 'eq', value: 'power' }], }, action: { type: 'show', variantId: 'changelog-only' }, }, { id: 'dormant-reengagement', adaptationId: 'onboarding', priority: 60, conditions: { all: [{ field: 'maturity', operator: 'eq', value: 'dormant' }], }, action: { type: 'show', variantId: 'welcome-back' }, }, ], persistence: { driver: createLocalStorageDriver('my-app'), },})Puis dans votre composant React :
import { Adaptive, Variant } from '@presage-kit/react'
function OnboardingFlow() { return ( <Adaptive id="onboarding" defaultVariant="contextual-tips"> <Variant id="guided-tour"> <GuidedTour /> </Variant> <Variant id="contextual-tips"> <ContextualTips /> </Variant> <Variant id="whats-new"> <WhatsNew /> </Variant> <Variant id="changelog-only"> <Changelog /> </Variant> <Variant id="welcome-back"> <WelcomeBack /> </Variant> </Adaptive> )}Transition de maturité
Section intitulée « Transition de maturité »La maturité est recalculée chaque fois que les signaux changent (après chaque appel track()). Cela signifie qu’un utilisateur peut transiter entre segments au cours d’une même session :
- L’utilisateur arrive (session 1) →
new - L’utilisateur revient pour la session 4 →
onboarding - L’utilisateur utilise 5 fonctionnalités distinctes →
power - L’utilisateur disparaît pendant 14 jours →
dormant
Votre interface s’adapte à chaque transition sans aucune intervention manuelle.