BetterAnalyticsService - An AnalyticsService API Wrapper

Roblox recently introduced Economy and Funnel dashboards under Creator Analytics along with some new APIs for AnalyticsService. These events let developers keep track of how in-game currency is being used and monitor player behaviour (For example, 20% of players left the game at stage 7).

I decided to write a simple module that acts as a wrapper for AnalyticsService. It implements better error handling with Pcalls and comes with a debug mode in the config to examine the data being published.

You can get the model on the Creator Store or on Github.

local ServerScriptService = game:GetService("ServerScriptService")
local BetterAnalyticsService = require(ServerScriptService.BetterAnalyticsService)

	player, -- Player Instance
	"Source", -- Flow Type: Can be "Source" or "Sink"
	"Cash", -- Currency
	100, -- Amount Of Currency
	player.leaderstats.Cash.Value, -- Current balance
	"Gameplay", -- Transaction Type: Can be "IAP", "Shop", "Gameplay", "ContextualPurchase", "TimedReward" or "Onboarding"
	"Winner" -- Item SKU: Optional

-- One-Time/Onboarding Funnel
	player, --Player Instance
	1, -- Step Number
	"Picked Starter Character" -- Step Name

-- Recurring Funnel
	player, -- Player Instance
	"Starter Pack", -- Funnel Name
	nil, -- Funnel Session ID: Optional, Module uses HttpService:GenerateGUID() as fallback 
	1, --Step Number
	"Opened Shop" --Step Name

Find Out More: Event Types | Documentation - Roblox Creator Hub
AnalyticsService: AnalyticsService | Documentation - Roblox Creator Hub
Economy Flow Types: AnalyticsEconomyFlowType | Documentation - Roblox Creator Hub
Economy Transaction Types: AnalyticsEconomyTransactionType | Documentation - Roblox Creator Hub

I plan to update this with more functionality over time as these analytics events are fairly new. While this isn’t something revolutionary, here are a few reasons to use this rather than directly using the service:

  • Better error handling
  • The module handles enumeration
  • Lower API calls, AnalyticsService has Rate Limits

This module uses the GPLv3 license. You can copy, modify, convey, adapt, and/or redistribute this work.

Bug reports and constructive criticism is highly appreciated, Thank you.