> ## Documentation Index
> Fetch the complete documentation index at: https://docs.platform.embeddables.com/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](/get-started/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. We strongly recommend letting the CLI manage your project configuration for you, rather than editing it by hand.

    <Tabs>
      <Tab title="React">
        In your React app (React 18 or newer), wrap it once:

        ```tsx lines 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>
          )
        }
        ```

        Use **one** `EmbeddablesProvider` at the top of your app. When you add Analytics, Experiments, or
        Forms, pass `modules` on this same wrapper (as in each SDK guide) — do not nest a second provider
        around the same app.
      </Tab>

      <Tab title="JavaScript">
        ```typescript lines 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>
    </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](/sdks/analytics/overview) · [Experiments](/sdks/experiments/overview) · [Forms](/sdks/forms/overview).
  </Step>
</Steps>
