Before Getting Started
- Keep the existing Firebase project, Android package name, and iOS bundle identifier when possible.
- Check that
google-services.jsonandGoogleService-Info.plistbelong to that project. - Prepare an authenticated backend registration endpoint and a server-side send worker.
- Record Clix user mappings, notification handlers, campaign schedules, and messaging preferences.
Firebase’s Notifications composer can support some campaign workflows. The FCM
send API does not reproduce Clix’s campaign engine, so plan a replacement for
each workflow you use.
Migration Steps
1
Keep Firebase and remove Clix
Remove Clix initialization, notification configuration, user and event calls, and Clix listeners. Keep Firebase initialization and configuration files.
Follow the official Android setup or Apple setup. Use SDK versions that support the registration path you choose. Pin compatible versions rather than copying old version numbers from your Clix integration.
Remove platform-specific Clix integration
Remove platform-specific Clix integration
- Android: Remove
so.clix:clix-android-sdkor its version catalog alias. Keep the Google Services plugin and declare Firebase Messaging directly if Clix previously supplied it transitively. - iOS: Remove the Clix package or pod. Replace
ClixAppDelegatewith your normal app delegate and implement the Firebase and notification callbacks it previously supplied. - React Native: Remove
@clix-so/react-native-sdk. Keep Firebase modules used by your app and reconnect foreground, background, and notification-open handlers. - Flutter: Remove
clix_flutter. Keepfirebase_coreandfirebase_messagingand reconnect message and token listeners.
2
Register installations with your server
The examples below use the current FID registration flow. Upload the identifier returned by Firebase Messaging after registration, together with its type and Firebase project. Reading an unregistered Firebase Installations ID alone is not enough.If your SDK or cross-platform wrapper still uses token registration, retrieve its current FCM token on startup and upload token changes through its documented callback. Use the send API’s
- Android
- iOS
Enable FID registration inside your existing manifest’s Register one messaging service in the same element:With auto-initialization enabled, registration callbacks keep your server updated. If it is disabled, call
application element:AndroidManifest.xml
AndroidManifest.xml
AppMessagingService.kt
FirebaseMessaging.getInstance().register() at app startup and handle failure with retries. Reassociate the stored current registration after login or an account switch.The upload and display comments above are application integration points, not a complete backend or notification renderer. Implement them before enabling sends. Store registration uploads durably and retry network failures.
token field for those records. Do not label a token as an FID or enable FID mode before your entire send path supports it. See registration management.3
Move user data and campaign logic
Store registrations per installation so an account can have multiple devices. Include account association, platform, identifier type, Firebase project, app version, permission state, preferences, and last registration time. Validate the account from the authenticated session rather than trusting a submitted user ID.On logout, remove the account association and account-specific topic subscriptions. On login, associate the current registration with the new account. Keep anonymous messaging eligibility explicit.Recreate each Clix campaign’s trigger, schedule, audience, delay, cancellation rule, and personalization in your backend. Carry over frequency limits and quiet hours before launching any automated sends.
4
Replace Clix send requests and payloads
Send from a trusted backend using a current Firebase Admin SDK or the FCM HTTP v1 API. Use an OAuth access token backed by server-side credentials; never bundle service-account private keys in the app.This is an example HTTP v1 request body targeting a registered FID:Translate Clix payloads into your new schema. FCM
data values must be strings. Implement deep_link handling in your app; FCM does not automatically interpret this custom key.Android background notification messages are displayed by the system, while foreground messages need app handling. Create notification channels and request Android 13+ permission at the appropriate point in your UI. On iOS, configure foreground presentation and replace Clix’s service extension for image attachments. See Android message handling and Apple message handling.Set message expiry and collapse behavior deliberately. Remove invalid registrations from your server based on documented responses; distinguish invalid identifiers from malformed payload errors.5
Test and switch the sender
Upgrade an existing Clix installation and verify registration upload, account association, one visible notification, and correct navigation. Also test a fresh installation, denied permission, logout, account switching, token or FID changes, and multiple devices.Compare delivery outcomes and crashes for a small release cohort. Record the selected sender per installation and use a stable business message ID to prevent the same event being sent twice.Exclude migrated installations from Clix before routing their messages through your backend. Keep old installations on Clix until they are upgraded or deliberately retired, and retire any remaining Clix integrations before November 30, 2026. Retain a rollback path only where the receiving app supports the chosen payload.
Existing Push Tokens
An existing FCM token can remain usable when the Firebase project and app identity remain compatible. If you have an authorized export with account mappings, test a small set through the legacy token send path before importing it. Do not assume Clix exposes a token export, or that a token reveals the corresponding registered FID. The safer default is to collect current registrations from the updated app. You do not need to delete Firebase installations or force a new notification permission prompt. Treat a later FID rollout as an explicit client-and-server change.Related Guides
Clix Campaign Types
Inventory the scheduled, event-triggered, and API-triggered workflows to
replace.
Clix Notification Components
Review the payload features your app currently uses.