Les événements du tunnel vous permettent de suivre la progression de votre utilisateur à travers les étapes clés de votre expérience. Cela inclut :
- Intégration - Où les utilisateurs déposent-ils lorsqu'ils commencent leur expérience ?
- Progression - Où les utilisateurs s'arrêtent-ils d'avancer à travers votre expérience ?
- Boutique - Où les utilisateurs abandonnent-ils leurs achats ?
Une fois que votre expérience commence à suivre les événements du tunnel, vous débloquerez la page du tunnel du tableau de bord d'Analytics sur le hub des créateurs.Vous pouvez ajouter des onglets au tableau de bord pour jusqu'à dix conduits.
Suivre les événements du funnel
Pour suivre les événements du tunnel, identifiez d'abord les tunnels les plus importants dans votre expérience et les segmentez en étapes.Votre flux d'embarquement est un bon endroit pour commencer, car c'est là que vous pouvez perdre la plupart de vos utilisateurs.
Suivre les funnels uniques
Un tunnel unique surveille les événements de conversion qui se produisent une seule fois par utilisateur.
Un exemple commun est un entonnoir d'embarquement qui est crucial pour comprendre comment améliorer la rétention des nouveaux utilisateurs et le temps de session de votre expérience.L'exemple suivant est un tunnel d'embarquement pour Plante, une expérience de tycoon où les nouveaux utilisateurs entrent dans une ferme, plantent des graines, arrosent une plante et plus dans l'ordre séquentiel :
Suivre les étapes d'embarquement dans l'usine
local AnalyticsService = game:GetService("AnalyticsService")-- Enregistrer la première étape du FTUEAnalyticsService:LogOnboardingFunnelStepEvent(player,1, -- Numéro d'étape"In Farm" -- Nom de la étape)-- Enregistrer la deuxième étapeAnalyticsService:LogOnboardingFunnelStepEvent(player,2, -- Numéro d'étape"Plant Seed" -- Nom de la étape)
Suivre les funnels récurrents
Un tunnel récurrent surveille les événements de conversion qui se produisent plusieurs fois par utilisateur.
Un exemple commun est un entonnoir de boutique qui est crucial pour comprendre comment améliorer la conversion du payeur de votre expérience, Revenu moyen par utilisateur payantet les revenus.L'exemple suivant est un tunnel de boutique où les utilisateurs ouvrent la boutique, affichent l'item, ajoutent l'article au panier et plus encore.
Utilisez funnelSessionId pour distinguer les différentes sessions d'un même utilisateur dans un tunnel récurrent, comme l'ouverture de la boutique plusieurs fois dans une seule session.
Suivre les étapes de la boutique
local AnalyticsService = game:GetService("AnalyticsService")local HttpService = game:GetService("HttpService")funnelSessionId = HttpService:GenerateGUID()-- Journaliser lorsque l'utilisateur ouvre la boutiqueAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- Nom du tunnel utilisé pour regrouper les étapes ensemblefunnelSessionId, -- ID de session de tunnel pour cette session de paiement unique1, -- Numéro d'étape"Opened Store" -- Nom de la étape)-- Enregistrer lorsque l'utilisateur affiche un itemAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- Nom du tunnel utilisé pour regrouper les étapes ensemblefunnelSessionId, -- ID de session de tunnel pour cette session de paiement unique2, -- Numéro d'étape"Viewed Item" -- Nom de la étape)-- Enregistrer lorsque l'utilisateur ajoute des articles au panierAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- Nom du tunnel utilisé pour regrouper les étapes ensemblefunnelSessionId, -- ID de session de tunnel pour cette session de paiement unique3, -- Numéro d'étape"Added to Cart" -- Nom de la étape)
Implémenter funnelSessionId
Lors de la mise en œuvre de funnels, un funnelSessionId peut vous aider à suivre vos événements, mais peut ne pas être requis dans chaque instance. Utilisez les directives suivantes :
- Tunnels uniques - Vous n'avez pas besoin d'utiliser funnelSessionId pour les tunnels uniques car ils ne se produisent qu'une fois par utilisateur.
- Stocker les entonnoirs - Utilisez pour distinguer entre différentes sessions de l'utilisateur dans un entonnoir récurrent, comme l'ouverture de la boutique plusieurs fois dans une seule session dans l'exemple précédent .Dans des cas comme celui-ci, où le joueur peut ouvrir la boutique plusieurs fois en une seule session, il est recommandé d'utiliser un GUID comme le funnelSessionId .
- Améliorations d'objets - Utilisez funnelSessionId pour distinguer différents chemins d'amélioration d'objets, généralement sur une période plus longue qu'une seule session de jeu.Au lieu d'utiliser un GUID comme dans le cas du tunnel de magasin, vous pouvez souvent construire une clé unique en fonction de l'élément qui est amélioré, par exemple : <playerId>-<itemId> .
Pas initial
Les funnels commencent lorsque la première étape est enregistrée.Si vous voulez démarrer une funnel immédiatement lors de l'adhésion du joueur, vous devrez enregistrer la première étape sur l'événement PlayerAdded.
Enregistrement de la première étape dans l'événement PlayerAdded
local AnalyticsService = game:GetService("AnalyticsService")
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
AnalyticsService:LogOnboardingFunnelStepEvent(
player,
1, -- Numéro d'étape
"Player Joined" -- Nom de la étape
)
end)
Pas répétés
Si un utilisateur répète une étape dans un entonnoir, l'entonnoir ne prend en compte que la première instance de l'étape.Par exemple, si un utilisateur enregistre deux fois l'étape 2 d'un entonnoir, l'entonnoir ne compte que la première instance de l'étape 2.
Pas sautés
Si, pour une raison quelconque, vous sautez une étape dans le funnel, les étapes précédentes sont automatiquement terminées.
Par exemple, si vous avez un tunnel avec les étapes 1, 2 et 3.Si vous enregistrez l'étape 3 sans enregistrer les étapes 1 ou 2, le funnel considérera les étapes 1 et 2 comme terminées.
Utiliser les filtres de canal
Roblox fournit des filtres pour vous aider à analyser vos données de funnel.Ceux-ci incluent les données du joueur, les données du périphérique, et vous pouvez également envoyer des données personnalisées.Dans certains cas, le statut d'un joueur peut changer pendant le funnel, comme lorsque le joueur change de dispositif du mobile au bureau.
Pour éviter les comptages doubles des conduits, les filtres s'appliquent toujours seulement à la première étape du conduit .Cela signifie que si un joueur change de dispositif pendant le tunnel, le tunnel ne sera attribué à son dispositif qu'au moment où il entre dans le tunnel.
De même, les conduits s'affichent par cohorte, ce qui signifie que si un joueur entre dans le conduit le 6/19, le conduit sera attribué à la cohorte 6/19 même s'il termine le conduit le 6/20.
Modifier les conduits
Après avoir fait une mise à jour des étapes de votre entonnoir, il est important de définir la bonne plage de dates pour voir le dernier entonnoir.Si la date actuelle est 6/21 et que vous avez mis à jour l'étape 2 de votre funnel d'embarquement le 6/14, vous devez définir la plage de dates à 6/14 - 6/21 pour voir le dernier funnel.
Si vous sélectionnez une plage de dates incluant une mise à jour de passe en cascade, un avertissement s'affiche sur l'étape pertinente :

Protégez vos funnels des exploiteurs
Afin de garder vos données propres, il est important d'ajouter un certain niveau de validation des données dans le code de votre serveur pour empêcher les exploiteurs d'envoyer des données invalides à votre service d'analyse.
Par exemple, si vous avez un funnel d'embarquement avec 3 étapes, vous pouvez utiliser un RemoteEvent pour que le client notifie le serveur lorsque le joueur a terminé chaque étape et ajoutez une vérification du serveur pour garantir que le numéro d'étape est valide avant d'enregistrer l'événement :
coded'événement côté client
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local onboardingEvent = ReplicatedStorage:WaitForChild("OnboardingEvent")
local function fireOnboardingEvent(step: number)
onboardingEvent:FireServer({ step = step })
end
fireOnboardingEvent(1)
fireOnboardingEvent(2)
fireOnboardingEvent(10) -- invalid step
coded'événement côté serveur
local AnalyticsService = game:GetService("AnalyticsService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local onboardingEvent = ReplicatedStorage:WaitForChild("OnboardingEvent")
local maxStep = 3
local function onPlayerEventFired(player: Player, args: { step: number })
local step = args.step
if(step > maxStep) then
warn(`Invalid tutorial step {step} received from client.`)
return
end
print(`{player.Name} completed step: {step}`)
AnalyticsService:LogOnboardingFunnelStepEvent(player, step)
end
onboardingEvent.OnServerEvent:Connect(onPlayerEventFired)
Utiliser des champs personnalisés
Les événements du tunnel permettent également de décomposer sur des champs personnalisés pour faciliter la comparaison entre segments.Par exemple, vous pouvez suivre la voiture de départ qui donne aux joueurs la meilleure progression, ou attacher différentes cartes pour voir si une certaine carte a un meilleur cycle de jeu que d'autres.

Pour plus d'informations, voir champs personnalisés.
Utilisez des entonnoirs pour faire grandir votre expérience
L'un des tunnels les plus importants à suivre est l'onboarding car de nombreuses expériences se battent avec la rétention et l'participationdes nouveaux utilisateurs.
Dans le funnel d'embarquement pour Plante ci-dessous, la plus grande décharge est l'étape 2 ("Semence de Plante").

Sur la base de ces données, vous pouvez :
- Ajoutez des indicateurs contextuels pour mieux diriger les utilisateurs à planter des graines lorsqu'ils commencent.
- Concevez une nouvelle expérience utilisateur qui nécessite que les utilisateurs plantent des graines et développent une plante réussie avant d'explorer le reste de l'expérience.Vous pouvez améliorer cet événement en créant des éléments de rétroaction positifs ou d'autres techniques de conception de jeu.
