> ## Documentation Index
> Fetch the complete documentation index at: https://embeddables-platform.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Generate config with the CLI, install Core, and make your first call in under five minutes

## Prerequisites

* Node.js 20 or newer

<Steps>
  <Step title="Generate project config">
    Install and run the [Embeddables CLI](/reference/em-cli) from your app root:

    ```bash theme={null}
    npm install -g @embeddables/em-cli
    em login
    em init
    ```

    This generates your project config with your `projectId`, forms, and experiments. `init`
    also prints your sandbox and live publishable keys — save the one you need for the next step.
  </Step>

  <Step title="Install Core">
    Every other SDK composes on top of Core, so install it first.

    <CodeGroup>
      ```bash npm theme={null}
      npm install @embeddables/core
      ```

      ```bash pnpm theme={null}
      pnpm add @embeddables/core
      ```

      ```bash yarn theme={null}
      yarn add @embeddables/core
      ```
    </CodeGroup>
  </Step>

  <Step title="Initialize it">
    Import the generated config — do not build the object yourself:

    <Tabs>
      <Tab title="Vanilla / Node">
        ```typescript theme={null}
        import { initEmbeddables } from '@embeddables/core'
        import { config } from './embeddables/_dist'

        const embeddables = initEmbeddables({
          ...config,
          publishableKey: 'pk_sandbox_<your-key>',
        })

        embeddables.getAppUserId()
        embeddables.getProjectId()
        ```
      </Tab>

      <Tab title="React">
        Install the React peer dependency, then wrap your app once:

        ```bash theme={null}
        npm install react
        ```

        ```tsx theme={null}
        import { EmbeddablesProvider } from '@embeddables/core/react'
        import { config } from './embeddables/_dist'

        function App() {
          return (
            <EmbeddablesProvider
              config={{
                ...config,
                publishableKey: 'pk_sandbox_<your-key>',
              }}
            >
              <YourApp />
            </EmbeddablesProvider>
          )
        }
        ```

        Every hook from Analytics, Experiments, and Forms reads the instance from this provider — mount it once, above everything else.
      </Tab>
    </Tabs>
  </Step>

  <Step title="Add the SDK you actually need">
    Core alone doesn't track anything or run experiments — it just resolves identity. Install whichever of the three product SDKs your feature needs:

    <CodeGroup>
      ```bash Analytics theme={null}
      npm install @embeddables/analytics
      ```

      ```bash Experiments theme={null}
      npm install @embeddables/experiments
      ```

      ```bash Forms theme={null}
      npm install @embeddables/forms
      ```
    </CodeGroup>

    Then continue to that SDK's guide: [Analytics](/reference/sdks/analytics-sdk) · [Experiments](/reference/sdks/experiments-sdk) · [Forms](/reference/sdks/forms-sdk).
  </Step>
</Steps>
