Flutter
Flutter Banking Mobile SDK Integration Guide
Overview
This documentation covers installation, required prerequisites, the configuration properties surfaced for the Banking product type (channel, zone, queryParams, clientTags), and a basic usage example.
Setup Instructions
You'll need the correct channel and zone values for your integration. Ask your Partner Manager to provide these values for Flutter Banking.
Step 1: Confirm Software Requirements
Flutter 3.0.0 or higher
Dart 3.10.7 or higher
Step 2: Install the SDK
Install the SDK via pub get:
flutter pub add engine_mobile_flutter_sdkNote: This installs the latest compatible SDK version. For a specific version, pin it explicitly in pubspec.yaml.
Step 3: Initialize the SDK
In your app, initialize the SDK by adding the following imports to any Dart file where you want to use it. The second import exposes ProductType (imported with the engine prefix to avoid name collisions with Flutter):
Basic Example
Place the EngineSDK widget anywhere in your widget tree to render the Banking flow.
Properties
Pass these properties to EngineSDK:
channel
String
Yes
Identifies your integration in Engine. Provided by your Partner Manager (e.g. 'direct').
zone
String
Yes
Identifies the placement or distribution surface for the SDK. Provided by your Partner Manager (e.g. 'banking').
productTypes
List<ProductType>
Yes
Product flow(s) to render. ProductType is imported from the Engine SDK package — use [engine.ProductType.savings] for Banking, which maps to the string value "savings".
queryParams
Map<String, String>
No
Query parameters appended to the Banking experience. Supported key: zip. See Query Parameters below.
clientTags
Map<String, List<String>>
No
Arbitrary key/value tags for reporting and attribution. See Client Tags for Reporting below.
onExit
OnExitCallback
Yes
Fired when the user exits the flow.
onInitialize, onCreate, onRateTableRender, onOfferClick, onErrorPageView, onErrorPageRetry, onEmbedError, onEmbedErrorRetry
Callbacks
No
Optional tracking hooks. See Event Handlers below.
Query Parameters
queryParams is a Map<String, String> of parameters appended to the Banking experience the SDK loads. Use it to preselect what the user sees on the explore screen.
Supported Keys
zip
String
5-digit US ZIP code. Preselects the user's location.
Example
Client Tags for Reporting
The Engine Flutter SDK supports adding your unique Client Tags to track performance of specific campaigns or users. All Client Tag data is attributed to the lead level.
Client Tags can be added by including a clientTags attribute at the top level of the EngineSDK widget, where the value is a Map<String, List<String>>.
We strongly recommend including only one element per list for ease of reporting and attribution—if you want two separate tags, include the second tag under a different key. There is no limit to the number of keys in the clientTags map
Example
Supported Client Tag Keys for Reporting
If you plan for the Engine team to set up reporting (i.e., you do not plan to hit the Analytics API), these are the only keys that are currently fully supported. If a different key is needed, please reach out to your partner manager—we may be able to accommodate, but adding nonstandard keys will increase the time it takes Engine to report Client Tag values back to you and is therefore not recommended.
agentId
campaignId
clientId
deviceid
medium
sourceId
subid
subid1
subid2
subid3
target
trafficsource
userid
See the GET Lead Client Tags endpoint for information on attributing lead analytics to your own client tags, if you decide to hit the Analytics API for reporting.
Event Handlers
EngineSDK exposes optional callback arguments that notify your app when key moments occur during the user's journey. Each callback receives a strongly-typed event object containing a timestamp (ISO 8601 UTC) and event-specific fields.
All callbacks are optional except onExit. Pass any combination when constructing EngineSDK. If a callback is not provided, the SDK will still log the event to the debug console in development mode.
Available Events
For Banking, onRateTableRender populates bankingOffers, and onOfferClick carries leadUuid, offerUuid, financialInstitutionName, financialInstitutionUuid, productType, and productSubType.
onInitialize
InitializeEvent
SDK finished loading the embed
onCreate
CreateEvent
New lead created
onRateTableRender
RateTableRenderEvent
Rate table displayed with offers
onOfferClick
OfferClickEvent
User clicked an offer
onErrorPageView
ErrorPageViewEvent
Error page displayed in the flow
onErrorPageRetry
ErrorPageRetryEvent
User retried from the error page
onExit
ExitEvent
User exited the SDK
onEmbedError
EmbedErrorEvent
Web embed failed to load
onEmbedErrorRetry
EmbedErrorRetryEvent
User retried after embed failure
Every event includes a timestamp (ISO 8601 UTC). All other fields are optional and may be null or absent.
onInitialize
Fired once, when the SDK finishes loading the embedded experience for the first time.
timestamp
String
ISO 8601 UTC timestamp of when the event was emitted
onCreate
Fired when a new lead is created.
timestamp
String
ISO 8601 UTC timestamp of when the event was emitted
leadUuid
String
Unique identifier for the newly created lead
createPage
String
The page where the lead was created. Always explore
onRateTableRender
Fired when the rate table is rendered with offers.
timestamp
String
ISO 8601 UTC timestamp of when the event was emitted
rateTableUuid
String
Unique identifier for the Engine rate table
bankingOffers
List
Array of banking offers returned for the lead
onOfferClick
Fired when the user clicks an offer in the rate table.
timestamp
String
ISO 8601 UTC timestamp of when the event was emitted
leadUuid
String
Unique identifier for the lead
offerUuid
String
Unique identifier for the clicked offer
financialInstitutionName
String
Name of the institution offering the account (e.g. Example Bank)
financialInstitutionUuid
String
Unique identifier for the institution
productType
String
Type of product (e.g. savings)
productSubType
String
Account product sub-type (e.g. savings_account)
onErrorPageView
Fired when the error page is displayed within the embedded flow. This is different from onEmbedError, which fires when the embedded experience itself fails to load.
timestamp
String
ISO 8601 UTC timestamp of when the event was emitted
leadUuid
String
Unique identifier for the lead
fromPage
String
The page the user was on before the error. Always explore
onErrorPageRetry
Fired when the user taps "Retry" on the error page within the embedded flow.
timestamp
String
ISO 8601 UTC timestamp of when the event was emitted
leadUuid
String
Unique identifier for the lead
toPage
String
The page the user is retrying to navigate to. Always explore
onExit
Fired when the user dismisses the SDK.
timestamp
String
ISO 8601 UTC timestamp of when the event was emitted
onEmbedError
Fired when the embedded experience fails to load (network error, or an HTTP status of 400 or above). The SDK then shows an error screen with "Retry" and "Close" options.
timestamp
String
ISO 8601 UTC timestamp of when the event was emitted
errorMessage
String
Description of the error that occurred
onEmbedErrorRetry
Fired when the user taps "Retry" on the SDK's error screen after a load failure.
timestamp
String
ISO 8601 UTC timestamp of when the event was emitted
errorMessage
String
Description of the original error that triggered the retry
Changelog
Last updated
Was this helpful?

