Eventos de Funil

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Eventos de Funil deixam você rastrear o progresso do seu usuário através de estágios-chave de sua experiência. Isso inclui:

  • Boarding - Onde os usuários desembarcam ao iniciar sua experiência?
  • Progressão - Onde os usuários param de avançar através de sua experiência?
  • Loja - Onde os usuários abandonam as compras?

Uma vez que sua experiência comece a rastrear eventos de funil, você desbloqueará a página de funil no painel de análise de dados no Hub do Criador. Você pode adicionar abas ao painel para até dez funis.

Rastreamento de Eventos de Funil

Para rastrear eventos de funil, primeiro identifique os funis mais importantes em sua experiência e agrupe-os em etapas. Seu fluxo de integração é um ótimo lugar para iniciar, pois é onde você pode estar perdendo a maioria de seus usuários.

Rastreamento de Funis de Uso Único

Um funil de uma vez só monitora eventos de conversão que ocorrem apenas uma vez por usuário.

Um exemplo comum é um funil de integração que é crucial para entender como melhorar a nova retenção de usuários e tempo de sessão de sua experiência. O seguinte exemplo é um funil de integração para Plant ', uma experiência de tycoon onde novos usuários entram em uma fazenda, plantam sementes, plantas de água e muito mais em ordem sequencial:

Rastreamento de etapas de integração no navio

local AnalyticsService = game:GetService("AnalyticsService")
-- Logar o primeiro passo do FTUE
AnalyticsService:LogOnboardingFunnelStepEvent(
player,
1, -- Número de passo
"In Farm" -- Nome do passo
)
-- Logo o segundo passo
AnalyticsService:LogOnboardingFunnelStepEvent(
player,
2, -- Número de passo
"Plant Seed" -- Nome do passo
)

Rastreamento de Funis Recorrentes

Um funil recorrente monitora eventos de conversão que ocorrem várias vezes por usuário.

Um exemplo comum é um funil da loja que é crucial para entender como melhorar a conversão do experiência, RMPUPe receita. O seguinte exemplo é um funil da loja onde os usuários abrem a loja, visualizam o item, adicionam o item ao carrinho e muito mais.

Use funnelSessionId para distinguir entre diferentes sessões do mesmo usuário em um funil recorrente, como abrir a loja várias vezes em uma única sessão.

Rastreamento de Passos da Loja

local AnalyticsService = game:GetService("AnalyticsService")
local HttpService = game:GetService("HttpService")
funnelSessionId = HttpService:GenerateGUID()
-- Log quando o usuário abre a loja
AnalyticsService:LogFunnelStepEvent(
player,
"ArmoryCheckout", -- Nome do funil usado para agrupar etapas
funnelSessionId, -- Ajusta o ID da sessão para esta sessão de checkout única
1, -- Número de passo
"Opened Store" -- Nome do passo
)
-- Log quando o usuário vê um item
AnalyticsService:LogFunnelStepEvent(
player,
"ArmoryCheckout", -- Nome do funil usado para agrupar etapas
funnelSessionId, -- Ajusta o ID da sessão para esta sessão de checkout única
2, -- Número de passo
"Viewed Item" -- Nome do passo
)
-- Log quando o usuário visualiza adiciona ao carrinho
AnalyticsService:LogFunnelStepEvent(
player,
"ArmoryCheckout", -- Nome do funil usado para agrupar etapas
funnelSessionId, -- Ajusta o ID da sessão para esta sessão de checkout única
3, -- Número de passo
"Added to Cart" -- Nome do passo
)

Configurando funnelSessionId

Ao implementar funéis, um funnelSessionId pode ajudá-lo a rastrear seus eventos, mas pode não ser necessário em todos os instância. Use as seguintes diretrizes:

  • Funis de Uso Único - Você não precisa usar funnelSessionId para funis de uso único, porque eles só ocorrem uma vez por usuário.
  • Funil de Armazenamento - Use funnelSessionId para distinguir entre diferentes sessões do mesmo usuário em um funil recorrente, como abrir a loja várias vezes em uma única sessão na exemplo anterior. Em casos como este, onde o jogador pode abrir a loja várias vezes em uma única sessão, recomenda-se usar um GUID como o <
  • Melhorias de Itens - Use funnelSessionId para distinguir entre diferentes caminhos de melhoria de itens, geralmente sobre um período de tempo mais longo do que uma única sessão de jogo. Em vez de usar um GUID como no caso do funil da loja, você pode muitas vezes construir uma chave única com base no item sendo atualizado, por exemplo: <playerId>-<itemId> .

Passo Inicial

As funis começam quando o primeiro passo for registrado. Se você quiser iniciar uma funil imediatamente após o ingresso do jogador, você precisará registrar o primeiro passo no evento PlayerAdded.

Logando o primeiro passo no evento PlayerAdded

local AnalyticsService = game:GetService("AnalyticsService")
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
AnalyticsService:LogOnboardingFunnelStepEvent(
player,
1, -- Número de passo
"Player Joined" -- Nome do passo
)
end)

Passos Repetidos

Se um usuário repetir um passo em um funil, o funil só considera a primeira instância do passo. Por exemplo, se um usuário registrar o passo 2 de um funil duas vezes, o funil só contará a primeira instância do passo 2.

Pulando Passos

Se por algum motivo você pular uma etapa no funil, as etapas anteriores são completadas automaticamente.

Por exemplo, se você tiver um funil com etapas 1, 2 e 3. Se você registrar o passo 3 sem registrar os passos 1 ou 2, o funil considerará os passos 1 e 2 como concluídos.

Usando Filtros de Funil

O Roblox oferece filtros para ajudá-lo a analisar seus dados de funil. Esses incluem dados do jogador, dados do dispositivo e você pode enviar dados personalizados também. Em alguns casos, o status de um jogador pode mudar durante o funil, como quando o jogador troca de dispositivo para Área de trabalho.

Para evitar contagem dupla de funis, filtros sempre somente se aplicam ao primeiro passo do funil. Isso significa que se um jogador mudar de dispositivo durante o funil, o funil será atribuído apenas ao seu dispositivo no momento em que eles entrarem no funil.

Da mesma forma, funis são exibidos por coorte, o que significa que se um jogador entrar no funil em 6/19, o funil será atribuído ao coorte 6/19, mesmo que eles completem o funil em 6/20.

Modificando Canais

Depois de fazer uma atualização em seus passos de funil, é importante definir o alcance de data correto para ver o último funil. Se a data atual é 6/21 e você atualizou a etapa 2 do seu funil de integração em 6/14, você deve definir o alcance de data para 6/14 – 6/21 para ver o último funil.

Se você selecionar um intervalo de data que inclua uma atualização de etapa de funil, uma janela de aviso será exibida na etapa relevante:

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

Protegendo seus Funis dos Exploiters

Para manter seus dados limpos, é importante adicionar algum nível de validação de dados no seu código de servidor para impedir que os exploradores enviem dados inválidos para seu serviço de análise de dados.

Por exemplo, se você tiver um funil de integração com 3 etapas, você pode usar um RemoteEvent para o cliente notificar o servidor quando o jogador completou cada etapa e adicionar um cheque de servidor para garantir que o número de etapa seja válido antes de registrar o evento:

códigode evento do lado do cliente

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
códigode evento do lado do servidor

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)

Usando Campos Personalizados

Os eventos de funil também permitem que você quebre em campos personalizados para apoiar a comparação mais fácil entre segmentos. Por exemplo, você pode rastrear qual carro de iniciante dá aos jogadores a melhor progressão ou anexar diferentes mapas para ver se um determinado mapa tem um bom ciclo de jogo que os outros.

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

Para mais informações, see campos personalizados .

Usando Funnels para Crescer sua Experiência

Uma das funis mais importantes para rastrear é o onboarding, porque muitas experiências lutam com novos usuários e engajamento.

No funil de integração para Plant abaixo, o maior drop-off é o passo 2 ("Plant Seed").

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

Com base nesses dados, você poderia:

  • Adicione indicadores contextuais para melhor direcionar os usuários a plantar sementes quando eles estão começando.
  • Projete uma nova experiência de usuário que requer que os usuários plantem sementes e colha plantas de sucesso antes de explorar o resto da experiência. Você pode melhorar este evento criando elementos de feedback positivos ou outras técnicas de design de jogos.
In-experience view of Plant experience showing prompts to plant seeds above the flowerpots.