# Product analytics (/docs/product-analytics)

Product analytics answers four questions about any event, from `$session_start` to your own `match_ended`:

- **How much, over time?** [Trends](/docs/product-analytics/insights#trends) count events, players or groups, or add up a number like `$robux`.
- **Where do people drop off?** [Funnels](/docs/product-analytics/insights#funnels) measure conversion through a series of steps.
- **Do they come back?** [Retention](/docs/product-analytics/insights#retention) follows groups of players day by day or week by week.
- **What's happening right now?** [Activity](#activity) shows every event as it arrives.

Save any of these as an insight and put it on a [dashboard](/docs/product-analytics/dashboards). Product analytics is always on, and it includes [players, cohorts and groups](/docs/people). For the standard game numbers (DAU, playtime, CCU, D1, Robux) there's [Game analytics](/docs/game-analytics).

<Cards>
  <Card icon="graph" title="Insights" href="/docs/product-analytics/insights">
    Trends, funnels and retention.
  </Card>
  <Card icon="dashboards" title="Dashboards" href="/docs/product-analytics/dashboards">
    Build, customise and share boards of metrics and charts.
  </Card>
</Cards>

## Activity [#activity]

**Activity** in the sidebar lists every event, newest first. Use it to check that a new tracking call works, or to follow one player's session.

- With **live** on, the feed refreshes every few seconds. Turn it off to read without the list moving.
- Filter by event, date range, properties, person, group or cohort.
- Click a row to see all its properties, or click the person to open their profile.
- **Load more** goes further back in time.

<Callout type="info" title="Activity vs Changes">
  **Activity** shows the *events* your game sends. **Changes** on the Home page shows what *people and agents changed* in RoChart: insights saved, flags switched, experiments launched.
</Callout>

## Data [#data]

**Data** lists every event and property RoChart has seen, with its type, sample values and volume. You don't declare anything up front: a new event appears here a few seconds after it first arrives. There are four tabs: **Events**, **Event properties**, **Person properties** and **Group properties**.

### Describe your events [#describe-your-events]

Click **Add description…** next to an event or property, type, and press Enter. Everyone in the project sees descriptions, and so do agents, which read them before they write a query.

Compare what an agent sees without and with a description:

- `match_ended` (28,560 events)
- `match_ended` (28,560 events): "Sent for every player still in the round when it ends, not for players who left early. `placement` is 1 for the winner. `duration` is in seconds."

With the second, the agent knows quitters aren't included and what the numbers mean. A good description says:

- **when** it fires (on join, at the end of a round, only for some players);
- the **units** of numbers (seconds, Robux, in-game coins);
- **known quirks** ("before version 112 this was also sent in private servers");
- **what not to use it for** ("for revenue, use `$purchase`, not this").
