Before Getting Started
- Create a OneSignal app and get its App ID.
- Keep your Android package name and iOS bundle identifier unchanged.
- Record your Firebase project, push credentials, user IDs, campaign rules, and notification click handlers.
- Use the same stable account ID you pass to
Clix.setUserId(). Keep an explicit mapping for anonymous installations; do not treat Clix-generated IDs as account IDs.
Keep a copy of your campaign settings and reports before changing the
integration. A user import does not recreate campaign execution history or
users already waiting in a campaign.
Migration Steps
1
Configure push credentials
- Android
- iOS
Configure Google Android (FCM) in OneSignal and upload credentials for the Firebase project used by your app. Reuse that project when possible to avoid changing the sender.Follow OneSignal Android setup to check SDK and build requirements.
2
Replace the Clix SDK
Remove
For a shared codebase, use the official React Native or Flutter integration instead of initializing an additional native SDK instance.
Clix.initialize(), Clix notification configuration, permission calls, and notification listeners. Replace user and event calls in the next step.Remove platform-specific Clix integration
Remove platform-specific Clix integration
- Android: Remove
so.clix:clix-android-sdkor its version catalog alias. Remove Clix-specific manifest entries and receivers. - iOS: Remove the Clix package or
pod 'Clix'. ReplaceClixAppDelegatewith your app’s normal delegate and replaceClixNotificationServiceExtensionbefore removing the dependency. - React Native: Remove
@clix-so/react-native-sdkand its imports. Review native configuration and Expo plugins. - Flutter: Remove
clix_flutterand its imports. Review native configuration as well as Dart code.
- Android
- iOS
Add a pinned, supported OneSignal 5.x version to your app module. Replace Initialize in your existing Keep your permission flow at its existing point in the UI. For users who have not granted permission, call
ONESIGNAL_VERSION before syncing Gradle.app/build.gradle.kts
Application class and ensure that class is registered in AndroidManifest.xml:MainApplication.kt
OneSignal.Notifications.requestPermission(false) from a coroutine. Configure the Android notification icon and channels.3
Move user identification and events
Use this mapping when replacing your Clix calls:Confirm that your SDK version and OneSignal plan support the Custom Events features you need. A tag update is a profile change and does not replace an event stream.Reapply your app’s messaging preferences to the new subscription and audience rules. Login alone does not carry over consent stored in Clix.
UserIntegration.kt
4
Rebuild campaigns and backend sends
Recreate scheduled campaigns and event-based journeys in OneSignal. Check time zones, re-entry rules, delays, frequency limits, quiet hours, and personalization defaults against each Clix campaign.Replace calls to Clix’s send and campaign-trigger APIs with the OneSignal Create message API. Target External IDs or Subscription IDs instead of Clix user or device IDs. Move backend credentials into server configuration and update webhook consumers.Translate landing URLs and custom data into OneSignal’s supported payload fields. Connect the notification click listener to your existing navigation code; Clix’s automatic landing URL handling is removed with the SDK.Do not replay historical events into active journeys. Import profile attributes first, then enable triggers after you have checked eligibility and suppression rules.
5
Test and move traffic
First, upgrade an existing installation with permission already granted. Verify that the device appears in OneSignal under the expected External ID and receives one test message.
- Test foreground, background, and cold-start taps, including deep links, images, and actions.
- Test denied permission, marketing opt-out, logout, account switching, and multiple devices.
- Check subscription updates, custom events, and notification reporting. Provider acceptance does not prove the device displayed the message.
Push Token Migration
SDK registration is the default migration path. You do not need to force token rotation, reinstall the app, or reset permission. If you can obtain an authorized export, OneSignal supports importing users and subscriptions through its documented APIs. Verify token type and Firebase sender compatibility first. An Android token import does not make an old Clix-only app understand OneSignal payloads. An iOS import requires an APNs token, which is different from the FCM token stored by a Clix integration. See OneSignal migration guidance.Related Guides
Clix User Management
Review existing account and anonymous user behavior.
Clix Deliverability
Review permissions and device registration before switching sends.