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

# SDK Initialization

> Initialize the MoEngage Android SDK in your Application class using your Workspace ID and data center.

# SDK Configuration

Get the Workspace ID from the Settings Page of the dashboard **Dashboard** --> **Settings** --> **App** --> **General** on the MoEngage dashboard and initialize the MoEngage SDK in the Application class `onCreate()`.

<Info>
  **Updated in SDK version 15.00.00** Starting this version, the SDK throws an `IllegalStateException` if any API is invoked before the SDK is initialized. Ensure `MoEngage.initialiseDefaultInstance()` is called in `Application.onCreate()` before invoking any other SDK APIs. For details, see the [release notes](/release-notes/sdks/android#7th-july-2026).
</Info>

<Info>
  **Note** Initialize the SDK on the main thread inside `onCreate()` and not create a worker thread and initialize the SDK on that thread.
</Info>

<Info>
  **Updated in SDK version 15.00.00** The Java `MoEngage.Builder` constructor now accepts a `String` for the data center instead of a `DataCenter` enum object. Update your Java initialization code as shown below. This change does not affect Kotlin. For details, see the [release notes](/release-notes/sdks/android#7th-july-2026).
</Info>

<CodeGroup>
  ```kotlin Kotlin wrap theme={null}
  import com.moengage.core.DataCenter
  import com.moengage.core.MoEngage

  val moEngage = MoEngage.Builder(this, "YOUR_Workspace_ID", DataCenter.DATA_CENTER_X)
                       .build()
  //replace X with your data center number
  MoEngage.initialiseDefaultInstance(moEngage)
  ```

  ```java Java theme={null}
  import com.moengage.core.MoEngage;

  // replace X with the correct data center
  		MoEngage moEngage = new MoEngage.Builder(this, "YOUR_Workspace_ID", DataCenter.getDataCenterX())
  			.build();
  		MoEngage.initialiseDefaultInstance(moEngage);
  ```
</CodeGroup>

## Portfolio (Optional)

In your MoEngage account, if your [portfolio](https://www.moengage.com/docs/user-guide/settings/account/portfolio/portfolio) is configured with multiple projects, use the methods as shown below.

<CodeGroup>
  ```kotlin Kotlin wrap theme={null}
  val moEngage = MoEngage.Builder(this, "YOUR_Workspace_ID", DataCenter.DATA_CENTER_X)
                .configureProject(ProjectConfig("<YOUR ProjectID>"))
                .build()
  MoEngage.initialiseDefaultInstance(moEngage)
  ```

  ```java Java wrap theme={null}
  // replace X with the correct data center
  		MoEngage moEngage = new MoEngage.Builder(this, "YOUR_Workspace_ID", DataCenter.getDataCenterX())
  			.configureProject(new ProjectConfig("<YOUR ProjectID>"))
  			.build();
  		MoEngage.initialiseDefaultInstance(moEngage);
  ```
</CodeGroup>

Following details of the different data centers you need to set based on the dashboard hosts:

| Data Center                | Dashboard host            |
| :------------------------- | :------------------------ |
| `DataCenter.DATA_CENTER_1` | dashboard-01.moengage.com |
| `DataCenter.DATA_CENTER_2` | dashboard-02.moengage.com |
| `DataCenter.DATA_CENTER_3` | dashboard-03.moengage.com |
| `DataCenter.DATA_CENTER_4` | dashboard-04.moengage.com |
| `DataCenter.DATA_CENTER_5` | dashboard-05.moengage.com |
| `DataCenter.DATA_CENTER_6` | dashboard-06.moengage.com |

For more information about the detailed list of possible configurations, refer to the [API reference](https://moengage.github.io/android-api-reference/core/com.moengage.core/-mo-engage/-builder/index.html).

<Warning>
  **Critical** All the configurations are added to the builder before initialization. If you are calling initialize at multiple places, ensure that all the required flags and configurations are set each time you initialize to maintain consistency in behavior.
</Warning>

# Data Flow

SDK detects the build type of the installed application and the basis that it decides whether data should be sent to the Test/Live Environment of the MoEngage Platform.

* UnSigned/Debug Build — Data flows to Test environment
* Signed/Live Build — Data flows to Live environment.
