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

# Applications with Corbado Observe

> Model channels like web and mobile as applications and send application context with Corbado Observe events.

Applications let you segment tracking data by product channel inside one **Corbado Observe** project, for example `web`, `ios`, and `android`.

Use applications when you want to compare authentication behavior across channels without splitting your analytics into multiple projects.

## 1. Default application behavior

Each Corbado project includes a default application automatically.

You only need to configure `applicationId` when you want to split analytics by channel.

<Info>
  If you only track one channel, you do not need to configure anything. **Corbado Observe** already has a default application for your project.
</Info>

## 2. When to create multiple applications

Create separate applications when the user journey differs by channel, for example:

* Web checkout login vs. native in-app login
* iOS vs. Android passkey UX differences

## 3. Send application context

The **Corbado Observe SDK** supports `applicationId` in tracker initialization options (`TrackerOptions`). The SDK normalizes this value to lowercase before sending it.

You can pass application context in two ways:

1. Set `applicationId` once during initialization.
2. Pass `applicationId` as an event tag when you need dynamic channel assignment.

<Tabs>
  <Tab title="NPM">
    <Info>
      **Corbado Observe SDK** installation and setup are explained in [Getting started](/corbado-observe/overview/getting-started).
    </Info>

    ### 3.1 Configure `applicationId` globally

    ```typescript theme={null}
    import { init, getTracker } from "@corbado/observe";

    init({
      projectId: "<ProjectID>",
      apiBaseUrl: "<APIBaseURL>",
      applicationId: "web",
    });

    getTracker().flowStarted({
      flowName: "login",
      touchpoint: "account",
    });
    ```

    ### 3.2 Set `applicationId` per event

    ```typescript theme={null}
    import { init, getTracker } from "@corbado/observe";

    init({
      projectId: "<ProjectID>",
      apiBaseUrl: "<APIBaseURL>",
    });

    getTracker().flowStarted(
      {
        flowName: "login",
        touchpoint: "checkout",
      },
      {
        applicationId: "ios",
      },
    );
    ```
  </Tab>

  <Tab title="CDN">
    <Info>
      **Corbado Observe SDK** installation and setup are explained in [Getting started](/corbado-observe/overview/getting-started).
    </Info>

    ### 3.1 Configure `applicationId` globally

    ```html theme={null}
    <script>
      Corbado.init({
        projectId: "<ProjectID>",
        apiBaseUrl: "<APIBaseURL>",
        applicationId: "web",
      });

      Corbado.get().flowStarted({
        flowName: "login",
        touchpoint: "account",
      });
    </script>
    ```

    ### 3.2 Set `applicationId` per event

    ```html theme={null}
    <script>
      Corbado.init({
        projectId: "<ProjectID>",
        apiBaseUrl: "<APIBaseURL>",
      });

      Corbado.get().flowStarted(
        {
          flowName: "login",
          touchpoint: "checkout",
        },
        {
          applicationId: "android",
        },
      );
    </script>
    ```
  </Tab>
</Tabs>

<Tip>
  Pick short, stable IDs such as `web`, `ios`, and `android`. Avoid renaming IDs frequently so trend charts stay comparable over time.
</Tip>

## 4. Recommended naming strategy

* Use one canonical ID per channel (`web`, `ios`, `android`)
* Keep IDs lowercase and immutable
* Avoid environment-specific IDs (for example `web-staging`) inside the same project

## 5. Environments: use separate projects

Use separate **Corbado Observe** projects for separate environments, for example:

* One project for `production`
* One project for `staging`
* Optional additional project for `development`

This keeps environment traffic isolated and prevents non-production data from distorting production analytics.

## 6. Next steps

* Continue with [Flows](/corbado-observe/tracking/flows) to model complete auth journeys.
* Continue with [Decisions](/corbado-observe/tracking/decisions) to track method choices within each application.
