> 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 27, 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

If you send push notifications through FCM, 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.

If you send push notifications through FCM, Firebase 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 3.12.0 of `customerio-expo-plugin`, you can turn on the setting with a plugin option, and the Customer.io SDK registers the FID. Until you turn on the setting, the SDK registers FCM tokens instead.

When someone opens a version of 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. To learn how FIDs differ from FCM tokens and how Customer.io sends to each, see [Device IDs](https://docs.customer.io/messaging/channels/push/developer-guide/#device-ids).

## Turn on FID mode

1.  Update `customerio-expo-plugin` to 3.12.0 or later and `customerio-reactnative` to 6.14.0 or later. Use `firebase-messaging` 25.1.2 or later on Android and `FirebaseMessaging` 12.19.0 or later on iOS. On iOS, if you use the `fcm` provider with React Native Firebase 26.1 or later, set `ios.pushNotification.useFirebaseFromApp` to `true`, which needs `customerio-expo-plugin` 4.1.0 or later, with the `customerio-reactnative` version that plugin release requires (7.1.0 for plugin 4.1.0). See [React Native Firebase 26.1 and later](https://docs.customer.io/integrations/sdk/expo/whats-new/4.x-upgrade/#known-limitation).

2.  Add the `firebaseInstallationId` option at the top level of your plugin config in `app.json` or `app.config.js`. The plugin turns on Firebase’s FID setting on Android, and on iOS when you use the `fcm` provider.

    ```
    {
      "plugins": [
        [
          "customerio-expo-plugin",
          {
            "ios": { "pushNotification": { "provider": "fcm" } },
            "firebaseInstallationId": {
              "enabled": true
            }
          }
        ]
      ]
    }
    ```

3.  Run `npx expo prebuild`.

4.  If your app calls `CustomerIO.registerDeviceToken()`, pass the FID instead of a token from another package, because Firebase doesn’t return an FCM token in FID mode. You can get the FID with `getId()` from React Native Firebase’s Installations module.

    On a fresh iOS install, if you set `ios.pushNotification.autoFetchDeviceToken` to `false` and turned off FCM auto-initialization (`FirebaseMessagingAutoInitEnabled`), neither the SDK nor Firebase registers the FID with FCM. In that case, call `Messaging.messaging().register(completion:)` in native code before you read the FID.

To go back to FCM tokens, set `enabled` to `false` and run `npx expo prebuild` again.
