Skip to Content
ReferenceImplementation coverage

Implementation coverage

This documentation describes implemented source surfaces, not a speculative target architecture. Availability still depends on adding the corresponding SDK module and configuring its backend feature.

Mobile capability matrix

CapabilityAndroidiOSFlutter
Installation bootstrap/recoveryNativeNativeNative bridge
Server-mediated profile bindingYesYesYes
Installation/profile attributesYesYesYes
Tags and subscription listsYesYesYes
Durable events and screensYesYesYes
Push transportFCMAPNsNative bridge
Permission promptHost appHost appHost/platform app
Notification display/eventsYesYesNative bridge
Rich mediaAndroid moduleService extensionNative setup
In-app overlaysDivKitDivKitNative Platform View
Embedded placementsCompose/ViewSwiftUINative Platform View
Custom actionsYesYesYes
Preference CenterReady-made/headlessReady-made/headlessReady-made/headless
Message CenterReady-made/embedded/headlessReady-made/embedded/headlessReady-made/embedded/headless
Feature flagssynchronous local readlocal readasync bridge to local read
Runtime feature controlsYesYesYes
Privacy opt-out/wipeYesYesYes

Product capability coverage

AreaImplemented surfaces
Workspaceaccount, team, roles/permissions, security, audit, billing
Projectenvironments, shared media, design tokens, reusable components, localization
Environmentapps, provider credentials, access keys, usage/quotas, diagnostics, retention
Audienceprofiles, identities, installations, events, consent, segments, test groups, privacy
Messagingpush campaigns, transactional templates, in-app experiences, Message Center
Orchestrationevent/screen/audience/API entry, waits, conditions, push, in-app, webhooks, profile updates
Experimentationfeature flag and experience variants, allocation, conversion tracking
Operationsdurable outboxes/workers, provider diagnostics, webhooks, exports, scheduled reports
Analyticsmessaging, in-app, inbox, segments, funnels, automations, experiments, usage

Deliberate contract boundaries

  • Mobile SDKs do not accept a user ID directly; binding is server-mediated.
  • SDKs do not request notification permission; the host owns user timing and education.
  • App keys are public identifiers; privileged server endpoints require an access key.
  • Flutter delegates Engage business behavior to native SDKs rather than reimplementing it with Dart HTTP/storage plugins.
  • In-app sync uses HTTPS and local caches, not a persistent application WebSocket/SSE connection.
  • iOS Engage push is direct APNs, not FCM-to-APNs.

Source authority

Released SDK tags define public mobile APIs. The backend controllers and mobile OpenAPI contract define HTTP behavior. The console source defines operator workflows. If this page diverges, treat it as a documentation defect.