The walkthrough below is for native Android. For iOS, React Native, or
Flutter, use the matching Notifly setup guide in the platform section below
and apply the same identity, campaign, and rollout checks.
Before Getting Started
- Create or select a Notifly project and get its Project ID and Username from its settings.
- Configure Firebase using Notifly’s Firebase integration guide. Reuse the existing Firebase project and Android package name where possible.
- Keep
google-services.jsonin the app module and retain the Google Services plugin. - Record Clix account IDs, user properties, events, campaigns, notification handlers, and messaging preferences.
Notifly’s Android guide states that in-app popup campaigns require Android
11 (API level 30) or later. Treat this as a requirement for that feature and
check the SDK’s own build requirements separately.
Migration Steps
1
Remove the Clix Android integration
Remove
so.clix:clix-android-sdk from your dependencies or version catalog. Remove Clix.initialize(), Clix.Notification.configure(), permission calls, and Clix listeners. Replace user and event calls in the following steps.Review the merged manifest for Clix-specific messaging services and receivers. Remove competing Clix handlers and confirm the Notifly SDK’s registration and delivery behavior with your chosen version. If your app has a custom Firebase Messaging service, verify the supported forwarding arrangement before shipping; adding another service without routing can break notification delivery.Keep Firebase and other shared dependencies used by your app. Rebuild the app after removing Clix to catch remaining imports and dependency references.2
Install and initialize Notifly
Add JitPack to your existing Gradle repositories. For a modern Gradle project using Kotlin DSL:Add the SDK to the app module:Register this class with
settings.gradle.kts
app/build.gradle.kts
1.12.0 is the version shown in the referenced Android guide. Check Notifly’s published releases and pin a supported version you have reviewed before releasing.Initialize in your existing Application class:MainApplication.kt
android:name=".MainApplication" on the existing application element in AndroidManifest.xml. Keep other application settings intact.Retain your Android 13+ POST_NOTIFICATIONS declaration and runtime permission flow. Configure and test notification channels, icons, and click behavior for Notifly; removing Clix also removes any behavior it supplied.3
Map users and profile properties
Use your existing stable account ID after SDK initialization and when restoring an authenticated session:
UserIntegration.kt
setUserId(); do not substitute it for your application’s user ID.Carry over custom properties and opt-outs from your source of truth. Test anonymous browsing, login, logout, and account switching to confirm that devices and events attach to the intended profile.4
Move event tracking and rebuild campaigns
Preserve event names and supported property types when replacing Clix tracking:The Android guide allows at most one
EventIntegration.kt
segmentationEventParamKeys entry. This list selects an event parameter for segmentation; it is not the complete set of properties sent with the event. Choose the parameter your campaign needs, or omit the optional argument when it is unnecessary.Rebuild your Clix campaigns using Notifly campaigns and user journeys. Review triggers, delays, cancellation conditions, recurring schedules, user time zones, re-entry, frequency limits, quiet hours, and personalization.Replace Clix backend send or trigger calls with the supported Notifly workflow or API for your use case. Check the Notifly API overview for authentication and available operations. Use destination campaign and project identifiers, and keep API secrets on the backend. Do not assume a Clix endpoint has a one-to-one Notifly replacement.Keep campaigns paused while importing profiles or validating events. Avoid replaying historical events into active journeys. Reconnect landing URLs, action handling, and rich push to the destination payload and app handlers.5
Verify the integration and switch traffic
Upgrade an existing Clix installation and launch it. Confirm registration and the expected user ID in Notifly, then use Notifly’s push testing flow to send a message to that device.
- Test foreground, background, and cold-start taps, including deep links, icons, images, and actions.
- Test denied permission, marketing opt-outs, anonymous use, login, logout, account switching, and multiple devices.
- Confirm user properties and event parameters appear correctly and drive only the intended test campaign.
- If you use in-app popups, test foreground behavior on Android 11+ separately from push delivery.
Push Token Migration
Use Notifly SDK registration as the default. Keeping the same Firebase project may preserve an FCM token, but Notifly still needs a registered device and the correct user association. Do not assume the SDK’s installation alone imports Clix’s token database. If you have an authorized token export, confirm a supported import process with Notifly before relying on it. Verify token type, Firebase project, account mapping, and client payload compatibility with test devices first. Re-registration does not require reinstalling the app or resetting notification permission.Other Platforms
Notifly iOS SDK
Replace the Clix delegate and extension using the iOS integration.
Notifly React Native SDK
Replace the Clix package and check native or Expo configuration.
Notifly Flutter SDK
Replace the Clix package and configure both native platforms.
Clix Deliverability
Review permission and registration checks before moving sends.