# Feature Tracking

> Map events to product features and measure adoption among your active users.

A **feature** maps one or more events to a meaningful part of your product, so you can measure **adoption**: how many of your active users actually use it.

| Feature | Adoption (% of active users) |
| --- | --- |
| Quote builder | 72% |
| Invoicing | 48% |
| Deals pipeline | 35% |
| Reports | 19% |

<sub>Sample adoption across a rolling window.</sub>

## Define a feature

Features are defined in the dashboard, in **Features setup** (`/developers/features`): give the feature a name, pick the events that count as using it (from the catalog or as custom codes), and set the active users window. The configurator then generates the `track()` calls to add to your code, as an agent prompt, a snippet or a typed TypeScript module. See [Journeys and features setup](/docs/guides/journeys-and-features).

Saved, a feature is a set of event specs:

```json
{
  "name": "Quote builder",
  "events": [
    { "source": "event", "code": "time_on_screen", "filters": { "section": "quotes" } },
    { "source": "event", "code": "quote_created" }
  ]
}
```

Custom codes used by a feature are registered in your workspace catalog when you save it, so the ingest accepts them.

## How adoption is computed

<AccordionGroup>
  <Accordion title="Adoption %" icon="percent">
    Distinct visitors who hit **any** of the feature's events, divided by active workspace visitors, in a rolling window.
  </Accordion>
  <Accordion title="Filters" icon="filter">
    Filters match event properties (for example `section: "quotes"`) via JSONB containment, so one `time_on_screen` event can power many features.
  </Accordion>
</AccordionGroup>

<Tip>
  Adoption is computed from pre-aggregated rollups (materialized views refreshed on a schedule), not by scanning raw events on each request, so the feature list loads in milliseconds no matter how many events you have.
</Tip>

## Next steps

<CardGroup cols={2}>
  <Card title="Journeys and features setup" icon="route" href="/guides/journeys-and-features">
    Configure features and get the code to send.
  </Card>
  <Card title="Event Tracking" icon="signal-stream" href="/sdk/event-tracking">
    The events that power features.
  </Card>
</CardGroup>
