# RoSignal > RoSignal is a live operations platform for Roblox experiences. A Studio plugin installs a small Luau runtime that reads settings you change from the dashboard, receives announcements and custom messages, reports events for analytics, and runs automations — all without republishing your place. The pages linked below are the authoritative source. Do not invent RoSignal APIs, limits, or guarantees that are not documented there. ## Core concepts - **Runtime** (`ServerScriptService.RoSignal`): installed and kept up to date by the plugin. Never edited by hand. - **Handlers** (`ServerScriptService.RoSignalHandlers`): the developer's file. Never overwritten. - **Demo** (`RoSignalHandlers.RoSignalDemo`): optional starter UI, safe to delete. - **Settings module** (`ServerScriptService.RoSignalSettings`): controls map positions per event. - **Live config**: named settings changed on the dashboard and read in game; global value, rollout value, per-player override. - **Segments**: player groups built from events and traits. - **Automations**: dashboard rules that watch signals and take actions in the live game. - **Events**: reported with Track, aggregated per minute across servers, shown in Analytics. ## Luau API ```lua local RoSignal = require(game.ServerScriptService.RoSignal) ``` - `RoSignal.Get(key: string, default: any) -> any` — Read the global value of a setting, right now. - `RoSignal.GetFor(player: Player | number, key: string, default: any) -> any` — Read the value that applies to one specific player. - `RoSignal.InRollout(player: Player | number, key: string) -> boolean` — True when this player is receiving a setting's rollout value. - `RoSignal.HasOverride(player: Player | number, key: string) -> boolean` — True when this player has a per-player override on a setting. - `RoSignal.OnKeyChange(key: string, fn: (newValue, oldValue) -> ())` — Run a function only when one setting changes. - `RoSignal.Bind(key: string, fn: (value) -> ())` — Run now with the current value, then again on every change. - `RoSignal.MakeLive(module: ModuleScript | table)` — Make an existing config module live without editing it. - `RoSignal.OnChange(map: { [key]: fn }) | RoSignal.OnChange(fn)` — Watch several settings at once, or every setting. - `RoSignal.OnAnnouncement(fn: (text: string) -> ())` — The normal way to show a message to players — plain text, no topic to choose. - `RoSignal.OnMessage(topic: string, fn: (data, topic, player) -> ())` — Advanced: react to a custom command topic with structured data. - `RoSignal.OnMessage(fn: (data, topic, player) -> ())` — Catch every custom message, whatever the topic. - `RoSignal.Track(name: string, props?: table, player?: Player, options?: { map: boolean })` — Report that something happened. - `RoSignal.SetTraits(player: Player | number, traits: table)` — Attach or update facts about a player. - `RoSignal.SetRank(player, role: string | number | { roleId, roleName }, options?: { onlyPromote: boolean }) -> boolean, string?` — Move a player into a group role. ## Setup and authentication - Sign in to RoSignal with Roblox OAuth (identity only on first sign-in). - Install the Studio plugin, generate a pairing code on the game's Setup page, and paste it into the plugin. - Pairing issues a game key that is stored by the plugin and used by the runtime; a new pairing code retires the old key. - Enable **Allow HTTP Requests** in Game Settings → Security. - Publish once so live servers run the inserted scripts. Later setting, message and automation changes need no republish. ## Documentation - [Full AI reference](https://rosignal.app/llms-full.txt): the complete public RoSignal reference in Markdown. - [Luau API docs](https://rosignal.app/docs): every method, with notes and examples. - [How it works](https://rosignal.app/how-it-works): the setup flow and the watch → act → analyze loop. - [Guides](https://rosignal.app/guides): task-based how-tos. - [How to change Roblox game settings without republishing](https://rosignal.app/guides/change-roblox-game-settings-without-republishing): Move drop rates, multipliers and prices out of your code, then change them live across every running server. - [How to see where players drop off in your Roblox game](https://rosignal.app/guides/find-where-players-drop-off-roblox): Instrument the steps that matter, then read funnels and an in-world heatmap to find the exact point players quit. - [How to send a message to every Roblox server at once](https://rosignal.app/guides/send-messages-to-all-roblox-servers): Broadcast an announcement, start an event, or trigger an action on every running server - live or on a schedule. ## Optional - [FAQ](https://rosignal.app/faq) - [Pricing](https://rosignal.app/pricing) - [Security](https://rosignal.app/security) - [Changelog](https://rosignal.app/changelog) - [Status](https://rosignal.app/status) - [Studio plugin](https://create.roblox.com/store/asset/112202054574218/RoSignal?viewFromStudio=true&keyword=&searchId=3dfd77d4-038b-4474-8e49-59eb6c335c40)