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 Braze. Plan for users to open the updated app. Importing a profile alone does not make an installation ready for Braze push.
  • Check token types. Android uses FCM; the Braze Swift integration uses APNs. A Clix iOS FCM token is not an APNs token.
  • Keep permissions and preferences. Existing OS permission stays with the same installed app. Reapply marketing opt-outs and subscription rules.
  • Rebuild automation and reporting. Campaigns, Canvas flows, history, and users waiting in Clix campaigns do not transfer automatically.
This guide walks you through moving your Clix integration to Braze. Keep the same account identifiers, replace the SDK in an app release, and move campaign traffic after you verify device registration.

Before Getting Started

  • Create Android and iOS apps in your Braze workspace as needed.
  • Get each app’s SDK API key and the workspace’s SDK endpoint. These differ from the REST API key and REST endpoint used by your backend.
  • Keep the existing Android package name and iOS bundle identifier.
  • Record Clix campaign definitions, account IDs, properties, events, notification handling, and opt-outs.

Migration Steps

1

Configure push credentials

In Braze App Settings, configure Android FCM HTTP v1 credentials for your existing Firebase project. Configure iOS APNs credentials for your existing bundle identifier.Keep server-side credentials in the provider console or your backend. Use the SDK API key and SDK endpoint in the app. Follow Braze SDK integration and push setup for your platform.
2

Replace Clix initialization and notification handling

Remove Clix initialization, notification configuration, permission calls, and listeners. Replace user and event calls in the next step.
  • Android: Remove so.clix:clix-android-sdk and its Clix-specific manifest entries. Keep your Firebase config and add any shared dependency that was previously supplied by Clix.
  • iOS: Remove the Clix package or pod. Replace ClixAppDelegate and replace ClixNotificationServiceExtension with the extension required by your selected Braze features.
  • React Native: Remove @clix-so/react-native-sdk, then follow Braze’s React Native setup, including native configuration or your Expo integration.
  • Flutter: Remove clix_flutter, then follow Braze’s Flutter setup and its native push configuration.
Review app delegate forwarding and Android messaging services. Remove competing Clix handlers or implement Braze’s documented custom-service routing so each payload is processed once.
Add a pinned supported version in your app module, replacing BRAZE_VERSION:
app/build.gradle.kts
Add your SDK credentials and Firebase sender ID:
app/src/main/res/values/braze.xml
Register session lifecycle handling in your existing, manifest-registered Application class:
MainApplication.kt
Keep Firebase Messaging and the Google Services plugin configured. Set notification channels and icons, and preserve your Android 13+ permission flow. Verify automatic FCM registration in Braze before sending a test.
Use Braze’s platform-specific setup for a shared codebase rather than copying native initialization into the app twice.
3

Map user IDs, properties, and events

UserIntegration.kt
Identify the restored authenticated account before sending account-specific events. Review standard attributes such as email and language rather than importing every Clix property as a custom attribute. Keep anonymous installations distinct until you have a verified account mapping.
Logout behavior needs an explicit decision. Current Braze SDKs provide logout() and unregisterPush(); Android support starts at 43.0.0 and Swift at 18.0.0. Full logout disables the SDK after successful cleanup, so implement its documented re-enable and registration flow at the next login. Handle failures and retries. Do not use a shared placeholder account ID on logout. See Braze user IDs and logout.
Map your marketing preferences to the appropriate Braze subscription state and audience exclusions. OS authorization, token registration, and marketing consent are separate checks.
4

Recreate campaigns and backend integrations

Rebuild Clix scheduled campaigns as Braze campaigns and multi-step event flows as campaigns or Canvas flows. Review delays, re-entry, cancellation events, time zones, frequency caps, quiet hours, and user-versus-device targeting.Rewrite personalization using the destination’s supported syntax and defaults. Recreate deep links, image attachments, action buttons, and categories. On Android, explicitly configure automatic deep-link handling if you want Braze to navigate on a tap; otherwise connect the callback to your existing navigation.Replace Clix sends with the appropriate Braze REST operation:Use Braze identifiers and your workspace’s REST endpoint. Rotate backend configuration and update webhook or export consumers. Import profile data while automation is paused; replaying old events can cause immediate campaign entry.Keep historical Clix metrics separately and establish a new reporting baseline. Delivery and attribution definitions can differ between providers.
5

Validate and move notification traffic

Upgrade an existing installation and confirm the expected external ID, push registration, properties, and one test message. Check Android FCM and iOS APNs separately.
  • Test foreground, background, cold-start taps, deep links, rich media, and actions.
  • Test denied permission, marketing opt-out, logout failures, re-login, account switching, and multiple devices.
  • Confirm custom events and test campaign entry without enabling production automation.
Record successful Braze registration per installation. Exclude ready installations from Clix before enabling Braze sends. For campaigns that fan out to all devices for an external ID, use an account-level cutoff or tested device filtering so the two providers cannot overlap.Expand from a small release cohort after registration, delivery, and crash checks pass. Keep compatible old installations on Clix only until your cutoff, which must be before November 30, 2026. Archive the old campaigns and reports before the service shuts down. A replacement app without Clix handlers cannot rely on a backend-only rollback to Clix payloads.

Push Token Migration

SDK registration is the default. If you have an authorized token export and want an assisted import, confirm Braze’s supported import process, app mapping, token types, and payload compatibility before using it. Do not assume that importing user attributes also imports push eligibility. Keep the Firebase project and app identity compatible where possible. Re-registering with Braze does not require resetting OS permission or deliberately rotating every token.

Clix Event Tracking

Review the event names and property types used by your campaigns.

Clix Campaign Types

Map existing automation to campaigns and Canvas flows.