For the complete documentation index, see llms.txt. This page is also available as Markdown.

Banking (Deposits) Marketplace

Banking (Deposits) Embed: Implementation, Syntax, Demo, Tags, Tracking, and Best Practices

person-waving

Standard Embed Implementation

Basic Embed Syntax

Engine's embed code can be placed in any order within your page, but for optimal user experience we recommend placing the script tag within the same div where the content is being rendered.

PLEASE NOTE: Your Engine representative will provide you with your specific code snippet. Do not try to reproduce from the sample snippet outlined below.

<script
  async
src="https://www.moneylion.com/network/{channel}/{zone}/web-component/{component-name}/index.js"
  data-embed-type="auto-mount"
></script>

This is a representative example of what our embed code looks like, and contains placeholders as defined below. Placeholders and will be replaced with precise values in the embed code provided to you.

Embed Components

  • Channel: placeholder that will be replaced with precise values in the embed code provided to you.

  • Zone: placeholder that will be replaced with precise values in the embed code provided to you.

  • Component Name: corresponds to the specific product or Engine experience type that's being rendered.

  • data-embed-type: enables Engine's auto-mount functionality; without this attribute, the component will not render.

    • Acceptable Value: "auto-mount"

Customization & Auto Sizing

The web component loads iFrame and will automatically fill the container. Embeds are rendered wherever you include our HTML tag on your page and will responsively scale to fill the space available to it.

Banking Specific Syntax

Engine's banking embed requires an additional tag to be included at the end of the standard script to be able to mount correctly: <moneylion-banking></moneylion-banking>

Full sample embed script looks like the following:

Component Names

  • /web-component/banking/: A full application-style flow where consumers browse and compare banking deposit offers on your site, in a block that feels like part of your page instead of redirecting them elsewhere. It keeps the experience focused on exploring rates and products in context, so users stay in your environment while they shop for savings-related accounts.

Banking Embed Demo

Client Tags for Attribution

Banking Experience Data Pre-population

Engine's Banking experience does not use tags for the purpose of pre-populating consumer data like other Engine marketplaces do. This is because Banking doesn't require the same degree of fidelity when it comes to user information.

The one piece of consumer information that can be changed is zipcode. Instead of pre-populating with tags, Engine leverages programmatic geolocation-based information to pr-epopulate zipcode - the precedence is as follows:

  • An explicit ZIP filter (if defined)

  • The visitor's geolocation-derived zipcode (this is the default behavior for Engine embeds)

  • A fallback zipcode (10001), only if geolocation is unavailable)

Use Cases for Client Tags

  • Prefilling customer data for certain non-PII fields

    • Decreases friction in the user experience and increases application submission rates

    • Useful when you already have that info on hand for that user, or want the front-end to default to particular values

How to Implement Client Tags for Reporting & Customer Data Prefill

To add client tags in an embed, use the following syntax in the data-tags attribute within the embed script:

Sample Implementation

In the above example, clientId and source are available as tags for reporting purposes and the embed and the zipcode field will be prepopulated when the embed is rendered.

Supported Client Tag Keys

Below are the client tag keys that are currently supported:

  • agentId

  • campaignId

  • clickId

  • clientId

  • deviceId

  • medium

  • sourceId

  • subId

  • subId1

  • subId2

  • subId3

  • target

  • trafficsource

  • userId

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.

Tracking Events Emitted by Embed

When you embed the Banking experience, event callbacks fire automatically.

How It Works

As a consumer navigates through the experience, the embed emits partner messages: JSON objects with a name (the event type) and a payload (event-specific data). The iframe posts them to your host page via window.parent.postMessage(message, '*').

  • You do not register callbacks with Engine. You listen on your host page; messages arrive whether or not you handle them.

  • Not every UI action sends a message. Only the events listed below are part of the partner contract.

  • Messages are one-way. There is no acknowledgement or response channel.

Implementation Path

Partners using Web Embed receive events by listening for browser message events on the host page:

Message Envelope

Field

Description

name

The event name (e.g. "onCreate", "onRateTableRender")

payload

Event-specific data; always includes timestamp (ISO-8601 string)

Events & Data

onCreate: Emitted when a lead is created on the explore page.

Note: onCreate is suppressed if no leadUuid is available.

onRateTableRender: Emitted when offers are rendered on the explore page.

bankingOffers[] item

Field

Type

Definition

offerUuid

string

Offer UUID

financialInstitutionName

string

Partner name

financialInstitutionUuid

string

Partner UUID (empty string if unavailable)

productType

string

Product type (e.g. "savings")

productSubType

string

Product subtype (e.g. "savings_account")

accountName

string

Account name shown in the UI

annualPercentYield

number | string

APY, or "" if unavailable

minimumDeposit

number | string

Minimum opening deposit, or "" if unavailable

monthlyFee

number | string

Monthly maintenance fee, or "" if unavailable

Example:


onOfferClick: Emitted when the user clicks an offer call-to-action. Suppressed if no leadUuid is available.

Payload fields

Field

Type

Definition

timestamp

string

ISO-8601 time when the click occurred

leadUuid

string

Applicant lead UUID (required on click)

offerUuid

string

Clicked offer UUID

financialInstitutionName

string

Partner name

financialInstitutionUuid

string

Partner UUID

productType

string

Product type

productSubType

string

Product subtype

Note: onOfferClick does not include accountName, annualPercentYield, minimumDeposit, or monthlyFee. Use the offerUuid to correlate with the corresponding item from onRateTableRender if those fields are needed.


Common productSubType values

Value

Product

savings_account

Savings account

checking

Checking account (includes high_interest_checking)

money_market_account

Money market account

cash_management_account

Cash management account

certificate_of_deposit

Certificate of deposit

individual_retirement_account

Individual retirement account

Treat this as a representative set, not a frozen enum — new subtypes may appear as products are added.


onErrorPageView: Emitted when the error page is shown.

onErrorPageRetry: Emitted when the user clicks retry from the error page.

Embed Best Practices & Troubleshooting

Component Not Showing

  1. Check the required attribute:

    1. Make sure data-embed-type="auto-mount" is present

  2. Check browser console:

    1. Open developer tools and look for error messages

Loading Too Slowly

  1. Make sure async attribute is present on the <script> tag

    1. This prevents block page load

Last updated

Was this helpful?