漏斗事件

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

漏斗事件 让你跟踪用户在体验的关键阶段的进度。这包括:

  • 入职 - 用户在开始使用您的体验时会掉落到哪里?
  • 进度 - 用户在哪里停止通过您的体验前进?
  • 商店 - 用户在哪里放弃购买?

一旦您的体验开始跟踪漏斗事件,您就会解锁创建者中心的分析仪表板的漏斗页。您可以为仪表板添加多达十个管道的选项卡。

跟踪漏斗事件

要跟踪通道事件,首先识别您体验中最重要的通道并将其分为步骤。您的入职流程是一个很好的开始地点,因为这是您可能会失去大部分用户的地方。

跟踪一次性漏斗

一次性漏斗监控仅发生一次每用户的转换事件。

一个常见的例子是一个 入职漏斗 ,这对理解如何提高您的体验新用户保留率和会话时间至关重要。以下示例是为 植物 启动的漏斗,新用户在这里进入农场、种植种子、浇水植物等,按顺序进行:

在植物中跟踪入职步骤

local AnalyticsService = game:GetService("AnalyticsService")
-- 记录FTUE的第一步
AnalyticsService:LogOnboardingFunnelStepEvent(
player,
1, -- 步数
"In Farm" -- 步的名称
)
-- 记录第二步
AnalyticsService:LogOnboardingFunnelStepEvent(
player,
2, -- 步数
"Plant Seed" -- 步的名称
)

跟踪重复漏斗

一个重复的漏斗监控用户多次发生的转换事件。

一个常见的例子是一个 商店漏斗 ,它对于理解如何提高您的体验支付转换、ARPPU 和收入至关重要。以下示例是用户打开商店、查看物品、添加物品到购物车等的商店漏斗。

使用 funnelSessionId 来区分重复漏斗中不同用户的不同会话,例如在单个会话中多次打开商店。

跟踪商店步骤

local AnalyticsService = game:GetService("AnalyticsService")
local HttpService = game:GetService("HttpService")
funnelSessionId = HttpService:GenerateGUID()
-- 当用户打开商店时记录
AnalyticsService:LogFunnelStepEvent(
player,
"ArmoryCheckout", -- 用于将步骤组合在一起的通道名称
funnelSessionId, -- 此独特支付会话的漏斗会话ID
1, -- 步数
"Opened Store" -- 步的名称
)
-- 当用户查看物品时记录
AnalyticsService:LogFunnelStepEvent(
player,
"ArmoryCheckout", -- 用于将步骤组合在一起的通道名称
funnelSessionId, -- 此独特支付会话的漏斗会话ID
2, -- 步数
"Viewed Item" -- 步的名称
)
-- 当用户查看添加到购物车时记录
AnalyticsService:LogFunnelStepEvent(
player,
"ArmoryCheckout", -- 用于将步骤组合在一起的通道名称
funnelSessionId, -- 此独特支付会话的漏斗会话ID
3, -- 步数
"Added to Cart" -- 步的名称
)

实现funnelSessionId

当实现漏斗时,funnelSessionId 可以帮助您跟踪事件,但可能不适用于每个情实例。使用以下指南:

  • 一次性漏斗 - 你不需要使用 funnelSessionId 为一次性漏斗,因为它们只发生一次每个用户。
  • 商店漏斗 - 使用 funnelSessionId 来区分不同会话的同一用户在重复漏斗中,例如在单个会话中多次打开商店在 以前的例子 中。在这种情况下,玩家可能在单个会话中多次打开商店,建议使用GUID作为funnelSessionId
  • 物品升级 - 使用 funnelSessionId 来区分不同的物品升级路径,通常超过单个游戏会话的更长时间期间。而不是使用商店漏斗案中的GUID,你经常可以根据正在升级的物品建立独特的键,例如:<playerId>-<itemId>

初始步骤

当第一步被记录时,漏斗开始运行。如果你想立即在玩家加入时启动漏斗,你需要在 PlayerAdded 事件上记录第一步。

记录玩家添加事件的第一步

local AnalyticsService = game:GetService("AnalyticsService")
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
AnalyticsService:LogOnboardingFunnelStepEvent(
player,
1, -- 步数
"Player Joined" -- 步的名称
)
end)

重复步骤

如果用户在隧道中重复步骤,隧道只考虑步骤的第一个实例。例如,如果用户两次记录了漏斗的步骤 2,漏斗只计算第一次步骤 2。

跳过步骤

如果由于某些原因你在漏斗中跳过了一步,那么更早的步骤将自动完成。

例如,如果你有一个漏斗包括步骤 1、2 和 3。如果您没有记录步骤 1 或 2 而记录步骤 3,管道会将步骤 1 和 2 视为已完成。

使用筛选器管道

Roblox 提供过滤器来帮助您分析您的漏斗数据。这些包括玩家数据、设备数据,你也可以发送自定义数据。在某些情况下,玩家的状态可能会在漏斗期间发生变化,例如当玩家从移动设备切换到桌面设备时。

为了避免重复计数管道,过滤器总是 仅适用于管道的第一步 。这意味着如果玩家在漏斗期间切换设备,漏斗只会在他们进入漏斗时将其设备归为漏斗。

类似地,通道会按照群组显示,这意味着如果玩家于 6/19 进入通道,即使他们于 6/20 完成通道,通道也会归于 6/19 群组。

修改管道

在你对你的管道步骤进行更新之后,设置正确的日期范围以查看最新的管道是很重要的。如果当前日期为 6/21 且你于 6/14 更新了你的入职漏斗的步骤 2,你应该将日期范围设置为 6/14 – 6/21 来查看最新的漏斗。

如果您选择包含漏斗步更新的日期范围,相关步骤上会显示警告:

A warning displays on the funnel dashboard indicating a name change within the selected date range.

保护您的漏斗免受滥用者的侵害

为了保持数据清洁,在服务器代码中添加一定程度的数据验证很重要,以防止恶意程序向您的分析服务发送无效数据。

例如,如果您有 3 步的入门管道,您可以使用 RemoteEvent 通知服务器当玩家完成每一步后,并添加服务器检查以确保步骤数字在记录事件之前是有效的:

客户端事件代验证码

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
服务器端事件代验证码

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)

使用自定义字段

漏斗事件还允许对自定义字段进行分解,以支持更轻松地比较不同部分之间。例如,您可以跟踪哪辆起始车给玩家提供最佳进度,或附加不同的地图以确定是否有某地图的游戏循环比其他地图更好。

A dropdown indicating the three custom fields you can compare across, along with standard breakdowns like age, gender, operating system and more.

了解更多信息,请参阅自定义字段

使用管道来增长您的体验

要跟踪的最重要的漏斗之一是新手教程,因为许多体验与新用户的保留率和互动与率存在问题。

在下面的 植物 入职漏斗中,最大的掉落是步骤 2(“植物种子”)。

Funnels chart for Plant experience showing a 70% drop-off between In Farm, step 1, and Plant Seed, step 2.

基于这些数据,你可以:

  • 添加上下文指示器以更好地指导用户在开始时种植种子。
  • 设计一个新用户体验,需要用户种植种子并生长成功的植物才能探索体验的其余部分。您可以通过创建 正面反馈元素 或其他游戏设计技巧来改善这个事件。
In-experience view of Plant experience showing prompts to plant seeds above the flowerpots.