> This page is part of the [Customer.io documentation](https://docs.customer.io). For the complete index, see [llms.txt](https://docs.customer.io/llms.txt).
> Last updated: October 25, 2026
> To take actions in Customer.io from an agent, use the [Customer.io CLI](https://docs.customer.io/ai/cli/get-started.md) or the [MCP server](https://docs.customer.io/ai/mcp/get-started.md).

# Migrate to Firebase Installation IDs

Register Firebase Installation IDs (FIDs) with Customer.io instead of FCM registration tokens. FID mode is optional, and your existing token-based integration keeps working until you choose to migrate.

Firebase Cloud Messaging can register devices with [Firebase Installation IDs (FIDs) ↗](https://firebase.google.com/docs/cloud-messaging/manage-tokens) instead of FCM registration tokens. When you turn on Firebase’s FID setting, your app is in *FID mode*. Starting in version 4.24.0, the Customer.io Android SDK registers the FID when your app is in FID mode. Until you turn on the setting, the SDK registers FCM tokens instead.

When someone opens your app in FID mode, the SDK replaces the device’s FCM token with the FID on their profile. You don’t need to change anything in Customer.io. See [Device IDs](https://docs.customer.io/messaging/channels/push/developer-guide/#device-ids) to learn how FIDs differ from FCM tokens and how Customer.io supports each kind of ID.

## Turn on FID mode

1.  Update the Customer.io SDK to 4.24.0 or later, and `firebase-messaging` to 25.1.2 or later.

2.  Turn on Firebase’s FID setting in your `AndroidManifest.xml`, inside `<application>`. See [Firebase’s Android setup guide ↗](https://firebase.google.com/docs/cloud-messaging/android/client) for details.

    ```
    <meta-data
        android:name="firebase_messaging_installation_id_enabled"
        android:value="true" />
    ```

3.  If your app has its own `FirebaseMessagingService`, forward `onRegistered` to Customer.io instead of `onNewToken`. Firebase calls only `onRegistered` in FID mode.

    ```
    override fun onRegistered(installationId: String) {
        CustomerIOFirebaseMessagingService.onRegistered(this, installationId)
    }
    ```

4.  If your app calls `CustomerIO.instance().registerDeviceToken()`, pass the FID from `FirebaseInstallations.getInstance().id` instead of an FCM token. Firebase doesn’t return an FCM token in FID mode.

    Reading the FID doesn’t register it with FCM, and FCM can’t deliver to the FID until Firebase registers the app. Firebase registers the app at startup by default. If you turned off FCM auto-initialization, call `FirebaseMessaging.getInstance().register()` first, and read the FID after it completes.

To go back to FCM tokens, remove the `meta-data` element and forward `onNewToken` again.
