Dashboard

Sending events

Automatic events, your own milestones, stages, devices and flushing.

Last updated Sep 29, 2026

Automatic events

EventWhenIncludes
session_startedA player joins—
player_diedA character diesPosition of the HumanoidRootPart
player_quitA player leavesLast known position
session_endedA player leavesdurationSeconds in metadata

Your own events

Luau
analytics:track(player, "stage_completed", {
	stageId = "stage_3",
	position = true,                 -- or a Vector3
	metadata = { seconds = 41, attempts = 3 },
})

analytics:setStage(player, "stage_4") -- default stageId for this player's later events
analytics:setDevice(player, "touch")  -- keyboard | touch | gamepad | vr | unknown

position = true samples the player's character. Positions are Roblox studs with no axis conversion, rounded to 0.01. Send positions on meaningful events such as deaths and checkpoints, not on a timer.

Flushing and stats

Luau
analytics:flush()        -- yields; sends what is queued
print(analytics:stats()) -- queued, inFlight, requests, sentEvents, droppedEvents, retries

On server shutdown the SDK ends open sessions and flushes for up to 20 seconds automatically.