Roblox experience analytics, from every server.

A ModuleScript in ServerScriptService batches events from every running server (players, heartbeat, purchases) and sends them out over HttpService every 30 seconds. Players are sent as per-experience pseudonyms, never UserIds.

Roblox already gives you retention and funnels. ServerStats adds server health, Discord webhook alerts and comparisons across your experiences. AI answers are coming soon.

Free for one server. No card needed.

Questions it answers for Roblox experiences

What the demo dashboard answers for this game.

How many players right now, across every server?

Concurrent players live, summed over every running server of your experience.

Which passes and products earn the most?

Robux players spent by game pass and developer product (before Roblox's cut), once ProcessReceipt goes through the module.

Are servers struggling?

Heartbeat time against the 60 Hz budget, with alerts when it slips.

Which servers are still on an old place version?

Inspect each live JobId, place, version, player count and last report during a rollout.

Are new players coming back?

Day-1, day-7 and day-30 retention for every week of new players.

How do my experiences compare?

Every experience you run side by side: players, retention and revenue.

Can I get pinged in Discord?

Alerts for player drops, revenue dips and struggling servers, straight to your channel.

What ServerStats tracks on Roblox experiences

A ModuleScript in ServerScriptService. Every running server of your experience reports, and the dashboard adds them up.

Players

  • Concurrent players summed across every running server, live
  • Sessions, session length and D1, D7 and D30 retention
  • How players arrived: followed a friend, invite, deeplink, teleport or direct
  • Countries (from Roblox's LocalizationService, never an IP; Operator), premium players, account age

Robux

  • Robux spent by players, by game pass and developer product (before Roblox's cut)
  • Purchase prompts and their results
  • Counted once per purchase, only when you grant it

Server health

  • Each server instance: JobId, place, version, players and last report
  • Heartbeat step time and the engine's heartbeat time
  • Physics step and physics FPS, memory, instance count
  • Data sent and received, DataStore budget, script errors by script
  • Players per server

Your events

  • Funnels, progression, economy and custom events with the AnalyticsService calls you already use
  • Optional forwarding to Roblox's own AnalyticsService, so you instrument once

Choose a progression, rounds or social dashboard for your experience. These views use the economy, funnel, progression and custom events you send through the module; uninstrumented charts stay empty.

The number that matters: heartbeat

16.7ms
One Heartbeat step at 60 Hz
Measured
Every Heartbeat
Per
Server instance
Batched
Every 30 seconds
Also
Physics step, memory

Roblox servers step at 60 Hz, so each Heartbeat has about 16.7 ms. When a server's scripts or physics take longer, the step stretches and players feel it as lag. ServerStats records the Heartbeat step on every running server, plus the engine's own heartbeat time, physics step and memory.

Every instance reports. The dashboard charts experience-level health and lists each live server's place, version, player count and last report, so you can spot a stalled server or mixed rollout. Per-instance performance traces are still on the roadmap.

The module does its signing and encoding in small slices that yield after 1 ms of work in a frame, so it stays out of your frame budget.

One script. About five minutes.

Works with

  • Roblox experiences
  • HttpService
  • Roblox Secrets
  • Game passes
  • Developer products
  • Discord
  • Connects out only, over HttpService. Nothing connects in to your experience.
  • Your experience key lives in a Roblox Secret restricted to serverstats.cc; each server signs with its own in-memory key.
  • Players are sent as per-experience pseudonyms, never UserIds, names or chat.
ServerScriptService (Script)
-- 1. Game Settings → Security → Allow HTTP Requests
-- 2. Creator Hub → Secrets: "serverstats" = your experience key, domain serverstats.cc
local SS = require(game:GetService("ServerScriptService").ServerStats)
SS.start({ mode = "experience" })
-- Wrap ProcessReceipt with SS.wrapProcessReceipt to count product sales.

Roblox questions

How is this different from Roblox analytics?

Roblox's own analytics covers retention, funnels and the economy well. ServerStats adds per-server health, cross-experience comparisons and alert rules with Discord webhook delivery. Its AI assistant and Discord bot are coming soon.

Does it respect HttpService limits?

Yes. Each server batches events and sends every 30 seconds, well under Roblox's 500 requests a minute per server.

What about player privacy?

By default the module sends a per-experience pseudonym, never the Roblox UserId, and never names or chat. ServerStats can't turn the pseudonym back into a UserId.

How do I count developer product sales?

Route your ProcessReceipt through SS.wrapProcessReceipt. Only one ProcessReceipt can exist per server, so the module wraps yours and counts a purchase once, when you grant it.

Has it run on a live experience?

Not yet. The module has been tested against mock servers and Lune, not a live Roblox server. Treat it as a beta.

How much does it cost?

Roblox is in beta, and its limits aren't enforced during the beta. Free, Operator and Network include 1, 5 or unlimited experiences and up to 100, 2,500 or 25,000 concurrent players.

Related games

One ServerStats account covers every game you run.

Start with one Roblox server, free

Add the script and see your first numbers today.