# Quickstart (/docs/getting-started/quickstart)

<CopyPrompt preset="install" primary>
  Rather hand it to your coding agent? This prompt sets up the RoChart module in your game's server code, wraps ProcessReceipt and adds your key events. Inside the app, **Project settings → Data collection** gives you the same prompt with your project token filled in.
</CopyPrompt>

<Steps>

### Sign up and create a project [#sign-up-and-create-a-project]

Create an account at [app.rochart.co](https://app.rochart.co). Name your organization and your first project (one project per game is a good default), and pick a timezone. The timezone decides where days start in every chart, so "today so far" means *your* today. You can change it later.

### Copy your project token [#copy-your-project-token]

Open **Project settings → Data collection**. Your **project token** (`rc_…`) is filled into ready-made snippets. It can only send events and read feature flags, never read your data.

### Allow HTTP requests [#allow-http-requests]

In Roblox Studio, open **Game Settings → Security** and turn on **Allow HTTP Requests**. The module sends events with `HttpService`, which is off by default. Publish the place so live servers get the setting.

### Add the module [#add-the-module]

Put the **RoChart** ModuleScript in **ServerScriptService**, then start it from a Script next to it:

```luau title="ServerScriptService/Analytics.server.luau"
local RoChart = require(game.ServerScriptService.RoChart)

RoChart.init({ token = "rc_your_project_token", host = "https://app.rochart.co" })
```

That's enough for joins, leaves, playtime, concurrent players, platform, country and join source. Next, route purchases through RoChart and send the moments that matter in your game:

```luau
-- instead of MarketplaceService.ProcessReceipt = function(receiptInfo) … end
RoChart.processReceipt(function(receiptInfo)
  -- grant the product here, as you do today
  return Enum.ProductPurchaseDecision.PurchaseGranted
end)

RoChart.track(player, "match_ended", { mode = "duos", placement = 2, kills = 4 })
```

See [Install in Roblox Studio](/docs/getting-started/install) for the full setup.

### Play and watch it arrive [#play-and-watch-it-arrive]

Join the published game (or start a test server from Studio with HTTP requests allowed). Open **Live** in the sidebar: `$session_start` and `$server_heartbeat` show up within a few seconds. **Game analytics** shows you as one player online.

New event names also appear under **Data**. Add a one-line description to your key events there: it helps teammates and agents use the right ones.

### Connect an agent (optional) [#connect-an-agent-optional]

Create a key in **Project settings → API keys & MCP**, then add RoChart to your agent:

```bash
claude mcp add --transport http rochart https://app.rochart.co/mcp \
  --header "Authorization: Bearer rc_sk_…"
```

Ask it something like *"How many players finished the tutorial today, compared with last Tuesday?"* See [Agents](/docs/agents) for other clients.

</Steps>

## Next steps [#next-steps]

<Cards>
  <Card icon="game" title="Game analytics" href="/docs/game-analytics">
    What every number on the Game analytics page means.
  </Card>
  <Card icon="person" title="Players and properties" href="/docs/getting-started/identify">
    How players are identified, and what's stored on them.
  </Card>
  <Card icon="graph" title="Onboarding funnel" href="/docs/guides/onboarding-funnel">
    Find where new players drop out of your first five minutes.
  </Card>
</Cards>
