Skip to main content
Clix will shut down on November 30, 2026.Complete your migration before this date to continue sending notifications. Preserve your campaign settings and reports before the service shuts down.If you would like to migrate to Notifly, email [email protected] for migration assistance.
Migration impact
  • Register devices with Notifly. Users normally need to open the updated app before Notifly can register them. Existing Clix profiles and tokens do not transfer automatically.
  • Keep permissions and opt-outs. The same installed app retains OS permission. Preserve marketing preferences separately and exclude opted-out users from campaigns.
  • Rebuild campaigns. Audience rules, templates, schedules, history, and campaign progress need a separate migration plan.
  • Avoid overlapping sends. Stop Clix targeting for migrated installations before enabling equivalent Notifly sends.
This guide walks you through replacing the Clix Android SDK with Notifly. Installation and SDK calls follow the official Notifly Android SDK guide.
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.json in 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:
settings.gradle.kts
Add the SDK to the app module:
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
Register this class with android:name=".MainApplication" on the existing application element in AndroidManifest.xml. Keep other application settings intact.
The fourth initialization argument is a legacy compatibility placeholder. Notifly’s current guide says to pass the same non-empty Username value. Do not put an actual password or API Secret Key in this argument or anywhere in the app.
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
Keep account data in your application or backend so it can be restored after login. The SDK’s internal Notifly user ID is different from the account ID supplied to 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:
EventIntegration.kt
The Android guide allows at most one 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.
Track destination readiness per installation and account. Exclude migrated installations from Clix before enabling equivalent Notifly sends. Use backend routing or a conservative account-level cutoff when your campaign filters cannot separate devices.Release to a small cohort first and monitor registration, delivery, opens, and crashes. Keep compatible old installations on Clix until they update or reach your cutoff, which must be before November 30, 2026. Preserve Clix reports before retiring the old campaigns. Backend rollback can restore Clix sends only where the installed app still supports their payloads.

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.