> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getmilana.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# JavaScript Setup

> Install the Milana SDK as an npm package.

<Steps>
  <Step title="Get your Product ID and Client Key">
    Open your [Milana Settings](https://app.getmilana.ai/settings) page.

    Copy your **Product ID** (starts with `prd_`) and your **Client Key** (starts with `key_`).
  </Step>

  <Step title="Install the SDK">
    ```bash theme={null}
    npm install milana-js
    ```
  </Step>

  <Step title="Initialize recording">
    Import and call `init()` early in your application startup:

    ```typescript theme={null}
    import { init } from "milana-js";

    await init("prd_YOUR_PRODUCT_ID", "key_YOUR_CLIENT_KEY", {
      environment: "production",
      version: "1.0.0",
    });
    ```

    <Note>
      Your Client Key is a public identifier meant to be included in client-side code. It does not grant access to your data.
    </Note>

    <Note>
      If your site sends a `Content-Security-Policy` header, add `https://in.getmilana.ai` to `connect-src` so the SDK can send recorded data.
    </Note>
  </Step>

  <Step title="Identify users">
    When user information is available, call `identify()` to attach their identity to the session:

    ```typescript theme={null}
    import { identify } from "milana-js";

    await identify({
      userId: "usr_12345",
      email: "jane@example.com",
      name: "Jane",
      metadata: {
        createdAt: "2024-03-15T00:00:00Z",
      },
    });
    ```
  </Step>

  <Step title="Track custom events (optional)">
    ```typescript theme={null}
    import { trackEvent } from "milana-js";

    trackEvent("feature_used", { featureName: "export", format: "csv" });
    ```
  </Step>

  <Step title="Verify in the dashboard">
    Open the [Integration](https://app.getmilana.ai/integration) page. Within a few seconds of loading a page with the SDK, a new session should appear under **Latest Sessions**.

    If you don't see sessions after a minute:

    * Open the browser console and look for `Milana:` log messages
    * Confirm you see `Milana: Ready` in the console
    * Check that your Product ID starts with `prd_` and your Client Key starts with `key_`
    * See the [Troubleshooting](/troubleshooting) guide for more help
  </Step>
</Steps>

***

## Feature-flagged rollout

To roll out Milana gradually or target specific user segments/flows, see the [Feature-flagged Rollout](/guides/rollout) guide.

***

## What's next

<CardGroup cols={2}>
  <Card title="Track custom events" icon="bolt" href="/sdk/track-events">
    Mark important actions so the AI can surface them in query results.
  </Card>

  <Card title="Privacy controls" icon="shield" href="/sdk/privacy">
    Block, mask, or ignore sensitive elements in recordings.
  </Card>
</CardGroup>
