Before Getting Started
- Create or select your Customer.io workspace and confirm its region.
- Add mobile SDK connections for the platforms you use and get their CDP API keys.
- Keep the existing Android package name and iOS bundle identifier.
- Record your Clix campaigns, account IDs, user properties, event schema, push handlers, and messaging preferences.
A CDP API key is used for the current SDK integration. It is different from a
server-side App API key or legacy Track API credentials. A first-time Clix
migration does not need
migrationSiteId; that option is for upgrading an
existing Customer.io integration.Migration Steps
1
Configure mobile push delivery
Configure FCM credentials for Android in your workspace. Reuse the Firebase project already configured for your Clix app when possible.For iOS, choose one transport:
- FCM: Keep Firebase Messaging and configure the Customer.io FCM integration for your existing Firebase project.
- APNs: Configure APNs credentials and collect APNs tokens using the Customer.io APNs module.
2
Replace the Clix SDK
Remove Clix initialization, permission calls, notification configuration, and listeners. Replace profile and event calls in the next step.
Check the current Android quick start when selecting SDK versions. For shared codebases, use the React Native or Flutter integration rather than a second native initialization.
Remove platform-specific Clix integration
Remove platform-specific Clix integration
- Android: Remove
so.clix:clix-android-sdkand Clix-specific manifest entries. Keep Firebase configuration and required shared dependencies. - iOS: Remove the Clix package or pod. Replace
ClixAppDelegateand replace its notification service extension with the appropriate Customer.io integration. - React Native: Remove
@clix-so/react-native-sdk, then use the Customer.io React Native SDK and its native or Expo configuration. - Flutter: Remove
clix_flutter, then use the Customer.io Flutter SDK and its native push setup.
- Android
- iOS
Use the current 4.x module structure. Replace Initialize in your existing, manifest-registered Change
CUSTOMER_IO_VERSION with one pinned supported version for both modules:app/build.gradle.kts
Application class:MainApplication.kt
Region.US to Region.EU if required by your workspace. Keep the Google Services plugin and Firebase configuration. Preserve Android 13+ permission prompting, and verify notification channels and icons.If you retain a custom FirebaseMessagingService, forward messages and token updates using CustomerIOFirebaseMessagingService as described in the Android push guide. Do not leave Clix as a competing message consumer.3
Identify people and move events
UserIntegration.kt
identify() after login and when restoring an authenticated session. Confirm the device appears on the intended person before enabling sends. If your Clix campaigns target anonymous users, redesign that flow for Customer.io’s mobile push identification requirements rather than assigning all anonymous devices one shared ID.Carry over profile and messaging preferences from your app or backend. Validate identification and device association during logout and account switching. Keep event names, timestamps, and property types consistent with your new campaign triggers.4
Rebuild campaigns and server integrations
Recreate segments and campaigns in Customer.io. Check trigger events, filters, delays, cancellation conditions, re-entry, user time zones, frequency limits, and quiet hours.Rewrite personalization for Customer.io’s supported template syntax. Replace Clix landing URL handling with the chosen Customer.io click behavior and your navigation code. Rebuild images, action handling, and iOS extension configuration for the destination payload.Replace Clix backend requests with the appropriate Customer.io APIs. Choose between tracking events that enter a workflow and sending a configured transactional message. Use the correct API credentials and region-specific endpoints; a Clix campaign ID has no meaning in Customer.io.Import profiles while production workflows are paused. Do not replay historical events into active campaigns without a plan for duplicate triggers. Update webhook consumers and keep historical Clix metrics separately.
5
Test and release gradually
Upgrade an existing installation and confirm its person ID, device registration, profile traits, and one test push. Test each selected iOS transport separately from Android.
- Check foreground, background, and cold-start taps, including deep links and rich media.
- Check denied permission, marketing opt-out, anonymous use, logout, account switching, and multiple devices.
- Confirm event-driven campaign entry and delivery or open metrics without double-counting custom callbacks.
Push Token Migration
The default is to let the SDK register the current device and associate it with an identified person. An authorized token export can help only if the destination’s import path supports the token type, credentials, and app payload. Confirm those requirements before importing. Keeping the same Firebase project may preserve compatible FCM tokens. Switching iOS to APNs requires APNs registration, not conversion of Clix FCM tokens. Neither path requires resetting OS notification permission.Related Guides
Clix User Management
Review account IDs and anonymous-user behavior before identifying people.
Clix Event Tracking
Map your current events to Customer.io campaign triggers.