Migration Checklist

Use this checklist to validate your migration to the Flutter unified plugins.

These items aren’t mapped automatically, so review them manually.

  • Identity-event patterns from the previous plugin code.
  • EventCategory usage (identity, engagement, system) in the previous plugin’s CustomEvent.
  • Deprecated commerce event models (CartEvent, OrderEvent, CatalogObjectEvent) and their subtype value changes.
  • Dynamic event names and dynamic attribute keys.
  • InboxMessage date fields use a raw UTC String, instead of the DateTime used in the previous plugin.
  • Native push notification customization and URL and delegate handling logic.
  • Existing Firebase and APNs setup and permissions behavior.
  • Mobile App Messaging registration listener migration from a callback to the registrationEvents stream.

Verify that all the required migration updates are complete before you publish your app.

  • The toolchains for Flutter, Dart, iOS, and Android meet the minimum requirements.
  • The sfmc and mam packages from the previous package are removed, and unified packages are added.
  • Dart call sites are updated to use the requestSdk() module.
  • Identity migration is completed by moving setContactKey to SFMCSdkModule.setProfileId and getContactKey to getProfileId.
  • Attribute and event tracking calls are moved to SFMCSdkModule.
  • Push APIs are migrated to PushModule.
  • Inbox and message-status API renames applied (getMessages changes to getAllMessages, setMessageRead changes to markMessageRead, and deleteMessage changes to markMessageDeleted).
  • Analytics boolean setter patterns are replaced with enable and disable methods.
  • Event class usage is migrated to unified event objects, or replaced with CustomEvent.
  • Event listeners are migrated to Stream subscriptions, such as registrationEvents, pushTokenStream, and inAppMessageEvents.
  • In-App Messaging is integrated through sfmc_iam if your app uses it.
  • Android and iOS native configurations are migrated to module-based setup.
  • Items flagged for manual review are resolved.
  • End-to-end runtime validation is complete on both Android and iOS.