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

Lending Marketplace

Implementation, Syntax, Consumer Experience, Tags, Tracking, and Best Practices

person-waving

The Lending Marketplace

Engine's Lending embed can be configured to return prequalified offers for personal loans, student loan refinance, auto loan refinance, and home equity lines of credit (HELOC). The embed can be configured against two entrypoints where consumers can land:

  • Explore. A rate-trend chart built on current APR data. It shows how rates have moved rather than listing offers, so a consumer can arrive with no information and still see something useful. Its call-to-action hands off to Search.

  • Search. The question flow that qualifies the consumer and ends by creating an offer search with Engine's lending partners.

After completion of the Search funnel and providing consents to Engine, consumers will see a Results Page. where they will sort through their offers, narrow them with filters, and with each offer's call-to-action sending the consumer to that lender for application completion.

Your Engine representative will set the entrypoint per zone to either Explore or Search while configuring new experiences. Which entrypoint that you use should be decided strategically with you Engine team.

Lending Consumer Experience Demo

See the Lending Embed in action:

Standard Embed Implementation

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.

Adding a script tag wherever you want the embed to render. It loads an iframe that automatically fills its container and scales responsively.

Basic Embed Syntax

This is a high-level guide, and specific implementation details should be discussed with your Engine team. Placeholders and will be replaced with precise values in the embed code provided to you.

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

Embed Components

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

  • Component Name: corresponds to the specific product, experience, and consumer entrypoint that's being rendered.

    • lending-explore: a preview with experience where consumers can browse and filter offers before entering into the full search funnel.

    • lending-search: drops consumers into the full application Searcb funnel where they input data for the purpose of loan prequalification. At the end of the search funnel is Engine's Results page where prequalified offers are displayed.

  • Mounting: in order to render the embed, data-embed-type must be set to "auto-mount"

Including Tags for Data Prepopulation & Reporting Attribution

Add client tags to your embed to prefill known, non-PII fields and attribute leads for reporting. Both reduce friction and improve conversion.

Client tags (data-tags attribute, for reporting):

Prefill fields (data-tags attribute, for auto-populating the form):

Example — tags clientId and source for reporting, prefilled zip code:

Supported Client Tag Keys

Keys are case-sensitive — use consistent casing across all requests

agentId · campaignId · clickId · clientId · deviceId · medium · sourceId · subId · subId1 · subId2 · subId3 · target · trafficsource · userId

Need a different key? Ask your Partner Manager — nonstandard keys slow down reporting and aren't recommended.

Lending Supported Prefill Fields

Embed field
Client tag key
Notes

Loan Purpose

app.purpose

Requested Loan Amount

app.loanAmount

No dollar signs, e.g. 6000

Credit Rating

app.providedCreditRating

City*

app.city

Spaces as %20, e.g. New%20York

State*

app.state

Zip Code*

app.zipcode

5 digits, or 9 digits as 5+4

Property Status

app.propertyStatus

Date of Birth

app.dateOfBirth

Format mm/dd/yyyy

Highest Level of Education

app.educationLevel

Employment Status

app.employmentStatus

Annual Income

app.annualIncome

No dollar signs, e.g. 100000

Pay Frequency

app.employmentPayFrequency

*Overwritten if the user's location is detected.

Tracking Events Emitted by Embed

When you embed the Lending experience, event callbacks will fire automatically that you can read and track directly from the browser.

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:

Event Syntax, Payload, and Metadata

Message Envelope

Title
Description

name

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

payload

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

Funnel Navigation Events

onCreate is emitted when a lead-created model is mounted. For non-edit flows, editingPage is null.

onNavigate is emitted when the flow moves from one step to another.

onUpdate is emitted when a step is submitted. For normal submissions, editingPage is null. For confirmation edit submissions, editingPage is an array of edited pages.

onSubmit: Emitted when the final loan search is submitted.

Exit & Error Events

onExit: Emitted when the user closes the embed (e.g. via the close button). experience is "search" when closed from the form flow and "compare" when closed from the results page.

onErrorPageView: Emitted when a search error page is viewed.

onErrorPageRetry: Emitted when a user clicks retry from a search error page.

Offer & Click Events

onRateTableRender: Emitted when offers are rendered on the compare/results page.

Both loanOffers and specialOffers arrays are always present. Typically one is populated and the other is empty, depending on which compare view rendered.

Present when prequalified loans results are displayed to consumers on the Results Page.

Field
Type
Definition

offerUuid

string

Offer UUID

financialInstitutionName

string

Lender name

financialInstitutionUuid

string

Lender UUID (empty string if unavailable)

productType

string

Product type from the API (e.g. "loan", "Loan")

productSubType

string

Product subtype (e.g. "personal_loan", "secured_loan")

loanAmount

number | string

Maximum loan amount (maxAmount)

apr

number | string

APR — resolved from maxApr, then meanApr, then minApr, else ""

termLength

number | string

Term length in months, or "" if unavailable

monthlyPayment

number | string

Monthly payment — resolved from maxMonthlyPayment, then monthlyPayment, then meanMonthlyPayment, else ""

Sample Payload:

Emitted when static special offers (debt relief, credit builder, cash advance, bill reduction, etc.) are rendered on the Results Page.

Field
Type
Definition

offerUuid

string

Offer UUID

name

string

Offer headline / name shown in the UI

financialInstitutionName

string

Partner name

financialInstitutionUuid

string

Partner financial-institution UUID (empty string if unavailable)

productSubType

string

Product subtype (e.g. "credit_builder", "debt_relief", "bill_reduction")

Sample Payload:

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

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

Lender / partner name

financialInstitutionUuid

string

Lender / partner UUID

productType

string

"loan" for loan offers; "Special" for special offers

productSubType

string

Product subtype

loanAmount

number | string

Loan amount (loan offers) or "undefined for specialOffers" (special offers)

apr

number | string

APR (loan offers) or "undefined for specialOffers" (special offers)

termLength

number | string

Term length (loan offers) or "undefined for specialOffers" (special offers)

monthlyPayment

number | string

Monthly payment (loan offers) or "undefined for specialOffers" (special offers)

Uses the same field names, but productType is "Special" and the four metric fields are the literal string "undefined for specialOffers" (not null, not omitted):

Best Practices & Troubleshooting

Best practices

Troubleshooting

Last updated

Was this helpful?