Channel Partner Reporting - Analytics API
For partners who would prefer to receive their reporting programmatically, we offer an Analytics API for you to receive lead-level reporting on funnel metrics.
Please see Engine's API Reference for technical instructions on how to ping Engine's Analytics API and for more specific explanations of expected responses.
The analytics API has 3 endpoints:
Endpoints
1. Lead Events
The Lead Events endpoint will return info and timestamps by lead, to highlight the current status of any given lead, and to give a sense of conversion rates at diferent stages of the funnel.
Request/Response Structure
Make a request to the following endpoint:
GET https://api.engine.tech/supplyAnalytics/leadEvents?timestamp={timestamp}
The request response will look something like the following:
Event Types to expect by product type
Loans
Top of funnel / mid funnel events
leadCreated
- an Engine Lead UUID was registered in our data warehouseappSubmitted
- the lead submitted the form to check eligibility for offersapiApproved
- the lead was pre-qualified/pre-approved by the specified Financial InstitutionapiRejected
- the lead was rejected at prequal by the specified Financial InstitutionofferClicked
- the lead clicked on an offer from the specified Financial institution
Bottom of funnel / monetization events
funded
- the lead funded a loan with the specifiedlenderQualifiedLead
- the lead converted into a HELOC product with the specified Financial Institution (only applicable to HELOC)
Fields that may sometimes, but will not always be present for Loans leads*:
applied
- the lead applied with the specified Financial Institution on that FI's siteapproved
- the lead was approved (on hard pull) by the specified Financial Institutionlisted
- the loan was listed on an exchange/marketplace by the specified Financial Institution and is pending funding
*Some Financial Institutions report these events to Engine, while others do not, hence why these events may or may not be present in responses for leads
2nd Look Marketplace / Special Offers
leadCreated
- an Engine Lead UUID was registered in our data warehouseappSubmitted
- the lead submitted the form to check eligibility for offersofferClicked
- the lead clicked on an offer from the specified Financial institutionconversion
- the lead converted into a secondary offer with the specified Financial Institution
Fields that may sometimes, but will not always be present for 2LM funnel leads*:
apiApproved
- the lead was pre-qualified/pre-approved by the specified Financial InstitutionapiRejected
- the lead was rejected at prequal by the specified Financial Institution
*As many offers in the 2nd Look Marketplace are static offers, leads who saw a static offer on their offer table will not show events of apiApproved
or apiRejected
, but may still have an offerClicked
event
is_contacted
- the specified Financial institution has contacted the lead post-offer-click and is pending a future conversion eventfirst_payment
- the lead has made a first payment on an account with the specified Financial Institution post-conversion into that product
Savings
leadCreated
- an Engine Lead UUID was registered in our data warehouseappSubmitted
- the lead submitted the form to check eligibility for offersofferClicked
- the lead clicked on an offer from the specified Financial institutionopened
- the lead opened an account with the specified Financial Institutionfunded
- the lead funded the account they opened with the specified Financial Institution
Credit Cards
leadCreated
- an Engine Lead UUID was registered in our data warehouseappSubmitted
- the lead submitted the form to check eligibility for offersofferClicked
- the lead clicked on an offer from the specified Financial institution
applied
- the lead applied for a card with the specified Financial Institution on that FI's siteapproved
- the lead was approved for a card with the specified Financial Institution after applying
2. Lead Payouts
The Lead Payouts endpoint will return info and timestamps by lead for any lead that has had a monetization event (the events signifying a monetization/payout differ by Product Type; please see Lead Events above). This will show the total of payouts you can expect, by lead, with timestamps for those payouts.
Request/Response Structure
Make a request to the following endpoint:
GET https://api.engine.tech/supplyAnalytics/leadPayouts?timestamp={timestamp}
The request response will look something like the following:
Deleted Payouts
On occasion, payouts may be deleted after creation. When applicable, you will see a deletedAt
attribute present in that data
object. If so, please take this into account - these will not be included in month-end invoices.
Here is an example of a response object with a present deletedAt
timestamp:
This event would have initially been returned in a response to:
GET /supplyAnalytics/leadPayouts?timestamp={timestamp}
, where timestamp is the timestamp where the monetization event was initially reported to / processed by Engine (here, it would have likely been on 9/3/24 or 9/4/24). This record had the same uuid
as seen in this second deleted response.
The deleted payout would be returned in a request to:
GET /supplyAnalytics/leadPayouts?timestamp=2024-09-06T16%3A00%3A00Z
The payout associated with the uuid
"37ec4dde-f305-4d9a-bd92-8f64df219ecb" in this case should be deleted from your records.
Reasons for deleted payouts
Payouts can be deleted
When a funded loan / conversion event is canceled within the specified timeframe
When a record was initially reported by a Financial Institution by mistake (i.e. duplicate record for the same event)
When a Channel Partner contract is updated with an
effectiveAt
date in the past
In the third scenario, you would see an simultaneous deletion and creation in the same response (the new created event would have a different uuid
), for example:
This should be understood as, the payout denoted by eventRecordUuid1
is deleted and replaced by the payout denoted by eventRecordUuid2
.
Comprehensive Example of Deleted Payout
In one call to /leadPayouts at a particular timestamp
, you might get a response that includes:
In a later call, you might get a response that includes:
In that second response, you may or may not also get a replacement for the deleted payout (if due to a contract change):
Please note that the /leadEvents endpoint does not currently report on deleted funding/monetization events as of 10/1/24.
3. Lead Client Tags
The Lead Events and Lead Payouts endpoints report on metrics broken out by Engine's Lead UUID, our identifier for each individual lead going through our ecosystem. Many partners prefer to analyze metrics according to their own identifier, which is why we provide the ability to append Client Tags to leads you send through Engine's marketplace. See these sections for instructions on appending Client Tags depending on your integration type:
Requests to the Lead Client Tags endpoint will return a mapping of Engine's Lead UUID to your own Client Tag. For example, if you append the Client Tag subId
to your leads, responses from the Lead Client Tags endpoint will look something like this:
Request/Response Structure
GET https://api.engine.tech/supplyAnalytics/leadClientTags?timestamp={timestamp}
For a given timestamp
in the request, a response will contain all Leads / Client Tags created during that time period of timestamp
+ 1 hour, each as an object in the data
array.
Timing
Timestamps in requests
Timestamps in a request to an Analytics API endpoint will return records for that timestamp
plus 1 hour (in UTC). Requests can be made up until the start of the most recent completed hour, e.g. if it is currently September 24, 2024, at 17:05 UTC, the most recent request you can make has a timestamp
of "2024-09-24T16:00:00Z". That timestamp
will return all records created betwee 16:00:00 UTC and 16:59:59.999 UTC.
Fields in Responses
Records are returned by the Supply Analytics API based on the timestamp of when the record was entered into Engine's Data Warehouse. This is particularly important to keep in mind for the /leadEvents and /leadPayouts endpoints:
For /leadEvents
Events are reported with an eventCreatedAt
timestamp, which is when the record itself entered our data warehouse. Confusion can arise here due to the fact that a conversion/monetization event's timestamp is not necessary the eventCreatedAt
timestamp - eventCreatedAt
denotes the timestamp where the record was processed by Engine (which can occur 1-2 days after the event actually occurred, depending on FI reporting and processing lags). Please see the flow charts below for more details.
For /leadPayouts
Events are reported with a bookedAt field, which denotes when the event actually occurred. This typically does not match the timestamp of when the record was processed into Engine's data warehouse. E.g. a loan that funded on 9/15 at 17:30:00 UTC, might be reported to Engine on 9/16 at 15:30:00 UTC, and might processed into our data warehouse on 9/17 at 12:30:00 UTC (we typically process incoming reporting once daily). In this case, if you GET /leadPayouts?timestamp=2024-09-17T12%3A00%3A00Z
, you will see the funded event with the attribute bookedAt:"2024-09-15T17:30:30Z"
. The bookedAt
timestamp will not match the timestamp
used to hit Engine's API, and that is by design. Please see the flow charts below for more details.
Identical response for a given request every time
Now that you know how the timestamp
parameter functions when querying records, hopefully it is clear that a request to an Analytics API endpoint with a particular timestamp
will return the same response every time, regardless of how far into the future you send the request.
Even when payouts are deleted, those deletions will be returned for the timestamp
of the record's deletion, not for the timestamp
of the record's creation - to reiterate, responses will always be the same, regardless of when the GET request is made.
Flow charts with examples
The following flow charts explain the timing principle of Analytics API responses more thoroughly with a hypothetical example:
Lead flow
Supply Analytics API calls with responses
Last updated