Analytics: Track any custom event you want and use custom fields for segmentation

Thank you! I will implement it soon. I love using AnalyticsService as it’s helped me a lot since I started using it.

One last thing I wanted to implement was tracking items obtained in my experience, currently, whenever a user obtains an item, it logs an economy event with the items name as the SKU. This is working fine, except I read on the documentation that after 100 SKU’s it all gets grouped into “Other”, which does not help me in my goal of trying to see how many times a specific item has been obtained. Would it be smarter to:

Log one economy event with just a “ItemPurchased” SKU.

Then log a custom event saying the user obtained the item? (With a custom field of the items name)

Yup sounds reasonable! You could see some cool stuff like avg times an item is obtained per user or unique number of users that obtained an item.

Ok thank you so much! The AnalyticsService is very useful and fun to use! Excited to see any future updates for it!

1 Like
local AS = game:GetService("AnalyticsService")

game.Players.PlayerAdded:Connect(function(plr: Player)
	AS:LogCustomEvent(plr, "APlayerJoined", os.time(), {
		[Enum.AnalyticsCustomFieldKeys.CustomField01.Value] = plr.Name .. " has joined the game.",
	})
end)

I made this code yet it does not show on charts at all

Hi! You can check your events in the View Events window in real time to make sure that they are coming in since the charts take ~24 hours. Some slight notes about your event tho:

  • We only show aggregations of the value so if you use time as the value we will only be able to show you min/max/avg of the time
  • Make sure you use CustomField01.Name instead of .Value - read more here: Custom Fields | Documentation - Roblox Creator Hub
  • Using the player name in the value will deplete your cardinality limit for custom fields really fast since we only support up to 8,000 unique values.

If you want to see when your players are playing the experience I’d recommend also checking out the Engagement and Performance dashboards.

Oh ok thanks. Yeah ill rewrite the code as told
But on another note, I think it should be explained better on the Docs because its too complicated to understand. I personally had to go to youtube and forms just to understand how it works

I added a event in a skip loading screen button to see how much people click it I made two one with the time it player waited and one without but both doesn’t appear on the dashboard the game is private though

Were you only playing in Studio? Events only can correctly sent in for chart creation if in a live game server.

It’s in live game server and private game

Is there any errors in the console? Also maybe the game being private cancels any Analytics? I am not sure.

I’ve also had issues getteing this to work, I’ve had this in here since this announcement first went out, and yet my events on the site are empty.

local PLR = game:GetService("Players")
local ANS = game:GetService("AnalyticsService")
local player = PLR.LocalPlayer

... (below is in the event that fires when the teleport button is pressed)

print(currentMap.shortName)
ANS:LogCustomEvent(player, currentMap.shortName)
print('sent')

image

This is in a live, public game. I’ve refreshed the events on the site multiple times and nothing comes up, there’s no error, so I’m pretty confused on why its not doing anything.

UPDATE

So after posting this I had a hunch that it might only work server-side, so I did that and I actually got an error:
29 - 18-04-28

Okay, so I fixed the strings and tried again. No error. Refreshed the events on the site and it’s there!

I did not realize that this was server-side only, I reread the annoucement and the docs and either it’s not mentioned or I’m very blind, either way I’m putting this here in case anyone else had the same issues. Server side only, filter out punctuation chars. Would be nice to see this mentioned on the docs (if it isnt already, i may have just missed it)

2 Likes

Hi! We’ve just rolled out an update to fix this issue. You should now be able to send events on player remove without additional changes.

Ok, so I have it working, but how do I remove all the other custom events that I’ve already logged

They will automatically go away in 90 days. Cardinality limits are also calculated daily so once you stop sending the old events they won’t count towards your limit.

1 Like

Hey, one last thing: Is it possible to filter by two custom fields at a time, but instead of requiring both, can the data shown be either? For example, I’m also logging the bricks recipes, like Energy + Red = Ash. The recipes can be in either order (Red + Energy = Ash.) If I wanted to compare the rarities of bricks created with Energy, I would need to filter Custom Field 1 & 2 to be Energy, but that would only show bricks made with Energy + Energy. Essentially, is there a way to make the filtering by “or” instead of “and”?

Unfortunately not right now - we’re still exploring options that would allow more free form queries. I’d recommend ordering the recipes before sending them so it’s deterministic or building your custom fields in a different way e.g. you could send HasEnergy as custom field 3.

I am not entirely sure if it just bugged, but I had a Custom Event go through without a custom_field_1 value.

Here is my code:

AnalyticsService:LogCustomEvent(
	Player,
	"ItemObtained",
	1,
	{
		[Enum.AnalyticsCustomFieldKeys.CustomField01.Name] = "Item Name: " .. MusicName,
		[Enum.AnalyticsCustomFieldKeys.CustomField02.Name] = "Item Type: Music",
		[Enum.AnalyticsCustomFieldKeys.CustomField03.Name] = "Obtainment Method: Shop"
	}
)

Here is what I got in return:

{
“user_id”: “1234567890”,
“event_name”: “ItemObtained”,
“value”: “1”,
“custom_field_1”: “”,
“custom_field_2”: “Item Type: Music”,
“custom_field_3”: “Obtainment Method: Shop”
}

As you can see, my custom_field_1 value is just totally blank when my script should not even being letting that happen in the first place? Anyways, everything has been working great other than this. (I replaced the UserId for privacy reasons)

Hey, that’s me! Yes, it seems like it. Gamebeast’s features include a lot more than just custom events, also heatmaps, A/B testing, remote configurations, audience segmentation, cross-game insights, and more offerings to empower developers. It looks like Roblox won’t be releasing any of those for at least a year and our larger ecosystem of tools aims to support Roblox developers in optimizing their games and let them get back to creating great content rather than fighting the algorithm.

Oh. Since you’re here. Would you like to collaborate with me?

I could use some… uh… economic moat for my machine and deep learning libraries for Roblox. You can view them here:

DataPredict

DataPredict Neural

1 Like

You can join our server to learn more and get access to all of these features!