Data Exports: Lending

Modified on Thu, Jul 2 at 4:27 PM

TABLE OF CONTENTS


This article helps users at partner credit unions understand our lending data exports, their available fields, and how to use them to generate metrics.

The Lending export replaced the previous funnel report, which wasn't meeting its intended purpose and couldn't be produced at scale.


Guidelines

What Is a Data Export?

A data export is a daily batch of data, sent in .csv format via SFTP or the File Transfer API. It contains one table in a fixed, predetermined format.

  • Frequency: daily
  • Channel: SFTP or File Transfer API
  • Format: .csv, pipe-delimited, double-quoted

Data included follows a fixed, predetermined format that scales across all Clutch credit unions.

What Is Included in This Data Export?

Two files are included:

  • Loan applications for the past 1 day:
    • A list of all loan applications (submitted and dropped) in the previous 1 day
    • File name (for SFTP only): lending-1-day_YYYYMMDDThhmmssZ_part-00000.csv
    • For the File Transfer API, the CSV file will be inside a zip
  • Loan applications for the past 30 days:
    • A list of all loan applications (submitted and dropped) in the previous 30 days
    • File name (for SFTP only): lending-30-days_YYYYMMDDThhmmssZ_part-00000.csv
    • For the File Transfer API, the CSV file will be inside a zip

Both files share the same fields (columns), but they differ in use case (when to use each) and total volume of data, since one includes data for the past 30 days.

How to Use the Exports

  • Data warehouse ingestion:
    • Ingest the 30-day file into your warehouse while upserting records (updating existing rows and inserting new ones) based on the primary key ID. This way, if your ingestion process skips a day, it will catch up on the next run.
    • Alternatively, append the 1-day file into your warehouse, taking care to check whether the record already exists. If an application started yesterday and finished today, it will be repeated — use the record_last_updated_at field to capture the latest data for that record.
  • Analysis: if you're analyzing the data in a spreadsheet, use the 30-day file so you don't need to append anything.
Note: We recommend ingesting the 30-day file with an upsert operation as your primary method — it's more resilient to missed runs than appending the 1-day file.

How Not to Use the Exports

Important: Avoid duplicates. If you need a funnel metric (e.g., conversion) over a period longer than 30 days, don't append multiple 30-day files without a proper merge/upsert operation — doing so will create duplicate applications. Instead, iterate through multiple files and keep only the most recent status for each application.

Terminology

  • An application refers to any user who started the application process, even if they dropped off before submitting it to the loan origination system (LOS).
  • If one user made multiple applications in the same session, the export will have multiple rows for that session — one for each application.
  • If a user applied multiple times for the same loan, multiple applications will appear (one per row).

Ingesting Exports Into Your Data Warehouse

  1. Update: if an application already exists in your data warehouse as a row in a table, update the entire row; if it doesn't, create a new one.
  2. Append: always add new rows to the existing table.

Data Dictionary

Field NameDescriptionExampleRequired
session_idString: an ID representing a unique user session. A session lasts up to 4 hours, or ends after 15 minutes of inactivity.123456789Yes
application_idString: an ID representing a unique application sent to the LOS.0030dbe4-ead5-4543-afa1-61d24688b4efNo
user_idString: a UUID representing a unique user (the main applicant).0030dbe4-ead5-4543-afa1-61d24688b4efNo
applicant_nameString: the main applicant's full name.Jane DoeNo
applicant_emailString: the main applicant's email address.jane.doe@example.comNo
user_phoneNumber: the main applicant's phone number.1234567891No
user_fico_score_rangeString: the range in which the main applicant's FICO score falls.450-500No
user_income_rangeString: the range in which the main applicant's self-declared annual income falls.100,000-150,000No
applicant_addressString: the main applicant's address.123 Main StNo
applicant_cityString: the main applicant's city.San FranciscoNo
applicant_stateString: the main applicant's state.CANo
applicant_zip_codeString: the main applicant's zip code.12345No
applicant_employerString: the main applicant's employer name.Example Employer Inc.No
applicant_job_titleString: the main applicant's job title.Customer Success ManagerNo
application_categoryString: the loan type the user applied for. Null if the application was dropped before selection.VEHICLE ; PERSONAL ; CREDIT CARDNo
credit_structureString: whether the application is for a loan or a line of credit.LOAN ; LINE OF CREDITNo
application_modeString: whether the application is new or a refinance of an existing deal.NEW ; REFINANCENo
collateral_typeString: the kind of collateral being used. Null if none.NULL ; AUTO ; MOTORCYCLE ; CHECKING ACCOUNTNo
application_nrNumber: the loan number in the LOS.1234No
application_amntNumber: the amount the user applied for.$10,000.00No
experience_started_atTimestamp: date and time when the application started.2024-03-07 18:08:32.765Yes
user_authenticated_atTimestamp: date and time when the user authenticated in the portal. Null if they didn't.2024-03-07 18:08:32.765No
application_started_atTimestamp: date and time when the user selected an application category. Null if they didn't.2024-03-07 18:08:32.765No
application_submitted_atTimestamp: date and time when the user submitted the application. Null if they didn't.2024-03-07 18:08:32.765No
application_confirmed_atTimestamp: date and time when the LOS received the application. Null if it didn't.2024-03-07 18:08:32.765No
record_last_updated_atTimestamp: date and time when this record was last updated.2024-03-07 18:08:32.765Yes
utm_sourceString: part of the URL used for tracking (must be present in the Clutch URL).facebookNo
utm_mediumString: part of the URL used for tracking (must be present in the Clutch URL).adsNo
utm_campaignString: part of the URL used for tracking (must be present in the Clutch URL).auto_refi_june_2024No
utm_contentString: part of the URL used for tracking (must be present in the Clutch URL).group_aNo
utm_termString: part of the URL used for tracking (must be present in the Clutch URL).loansNo
accepted_tcpa_atTimestamp: date and time when the applicant accepted TCPA disclaimers.2024-03-07 18:08:32.765No
zest_scoreNumber: the main applicant's Zest score for that application.80No
chance_of_approval_badgeString: the badge shown to the applicant while browsing that offer. Possible values:
• HIGH
• LOW
• MEDIUM
• NOT_ENOUGH_INFORMATION
MEDIUMNo
gap_offeredBoolean: whether the user was offered the opportunity to express interest in GAP (protection product).TRUENo
gap_selectedBoolean: whether the user expressed interest in GAP (protection product).TRUENo
mp_offeredBoolean: whether the user was offered the opportunity to express interest in mechanical breakdown protection.TRUENo
mp_selectedBoolean: whether the user expressed interest in mechanical breakdown protection.TRUENo
pp_offeredBoolean: whether the user was offered the opportunity to express interest in payment protection.TRUENo
pp_selectedBoolean: whether the user expressed interest in payment protection.TRUENo
member_nrNumber: the main applicant's member number.1234No
citizenshipString: the applicant's citizenship.US citizenNo
referral_sourceString: the referral source defined in the application's URL. Matches what's sent to the LOS.lead-provider-nameNo
origin_moduleString: the origin of the application. Possible values:
• LENDING
• ACCOUNT OPENING
This enables calculating cross-sell from account opening to lending.
LENDINGYes
fraud_check_application_idString: an identifier for the fraud check application. Can be null.JA-DwyIHO5cTHu9uqquWDy9No
fraud_check_entity_tokenString: an identifier for the fraud check token. Can be null.J-KASoidfjs09SNGFKJ123No
gclidString: Google click identifier, used in the URL for tracking purposes. Can be null.123xyzNo
disclosure_acknowledged_atTimestamp: date and time when the applicant accepted product-specific disclaimers (credit cards and home equity).2024-03-07 18:08:32.765No
automobile_estimated_list_priceNumber: for vehicle loans, the estimated list price of the vehicle.37545.72No
events_funnel_idString: a UUID representing a unique record in the export. This is the primary key for the table.0030dbe4-ead5-4543-afa1-61d24688b4efYes
application_originString: the application's origin. Possible values:
• original
• loan_cross_sell
• deposit_cross_sell
• remarketing
originalYes
device_idString: unique identifier for the device used to start the application session.a1b2c3d4-e5f6-7890-abcd-ef1234567890No
authentication_methodString: the method used to authenticate the session that started the application. Possible values: sso, password.ssoNo
gap_quoteDecimal: the GAP (Guaranteed Asset Protection) insurance premium amount quoted to the customer, in dollars.299.00No
mp_quoteDecimal: the Mechanical Protection insurance premium amount quoted to the customer, in dollars.199.00No
pp_quoteDecimal: the Payment Protection insurance premium amount quoted to the customer, in dollars.150.00No
gap_planString: the GAP plan name/description from the LOS.GAP PlusNo
mp_planString: the Mechanical Protection plan name/description from the LOS.PowerTrain PlusNo
pp_planString: the Payment Protection plan name/description from the LOS.Basic Payment ShieldNo

How to Calculate Metrics From the Export

Total Numbers / Amount of Applications

Sum application_amnt to get total application volume, since this file only shows applications that have already been submitted.

To count total leads (not necessarily submitted), you first need to define what a "lead" means for your purposes, such as:

  1. A user who started the application experience
  2. Any application session that has been started
  3. Any application form that has been started
session_iduser_idexperience_started_atapplication_started_atapplication_confirmed_atapplication_category
0030dbe4-...550e8400-...3/7/2024 18:16:003/7/2024 18:17:003/7/2024 18:20:00CREDIT CARD
00b49222-...550e8400-...1/23/2024 21:01:581/23/2024 21:02:58VEHICLE
0130be4e-...40ebb32e-...1/12/2024 15:26:121/12/2024 15:27:121/12/2024 15:28:12PERSONAL
0130be4e-...40ebb32e-...1/12/2024 15:26:121/12/2024 15:30:25CREDIT CARD
99a8b36f-...40ebb32e-...1/13/2024 20:13:151/13/2024 20:14:151/13/2024 20:16:27CREDIT CARD
469381d8-...cfbbac43-...1/10/2024 10:11:57

In this example there are three users: one applied for two different loan types (each in a different session), another has three applications with one repeated (same loan type, different session), and a third dropped off before choosing a loan type.

Depending on your lead definition, you'd get a different count:

DefinitionFormulaResult
Leads based on # of users=COUNTUNIQUE(user_id)3
Leads based on # of sessions=COUNTUNIQUE(session_id)5
Leads based on # of forms started=COUNTIFS(application_started_at, "<>") (i.e., is not null)5

Conversion

This metric measures the percentage of applications that ended up submitted to the LOS, out of all applications that were initiated.

To calculate a conversion rate, count applications where application_confirmed_at is not null, then divide by your total number of leads (based on your chosen lead definition). You can break this down by other fields — such as loan type or income range — to associate the metric with something specific.

Example: measuring conversion by loan type, using both a user-based and session-based lead definition:

Loan TypeLeads (by Users)Leads (by Sessions)Applications Submitted to LOSConversion (Users)Conversion (Sessions)
CREDIT CARD232100%67%
PERSONAL111100%100%
VEHICLE1100%0%

Avg. Time-to-Apply

This is the average time it takes a user to apply for a loan. Add a column (e.g., time_to_apply) that calculates the difference between experience_started_at and application_submitted_at, in minutes.

The raw difference will be in days, so multiply by 24 and then by 60 to convert to minutes. For example:

application_nrexperience_started_atapplication_submitted_attime_to_apply (minutes)
123453/7/2024 18:08:333/7/2024 18:16:007.45
123461/23/2024 20:57:051/23/2024 21:01:584.88
123471/12/2024 15:23:051/12/2024 15:26:123.12
123482/12/2024 22:36:452/12/2024 22:36:460.01

Average column D to get your average time to apply. You can split this average by loan type (or any other field) using a formula like AVERAGEIFS.

Note: Use application_submitted_at, not application_confirmed_at, for this calculation. The confirmed timestamp only reflects when the LOS acknowledged receipt — it doesn't represent an action the user took.

Cross-Sell

This metric measures how often an additional loan is sold to a user who already submitted an application in the same period. There are three ways to define cross-sell:

  • Simple: the most generous definition — total loan applications over total applicants. An applicant who applied for two of the same loan type (e.g., two auto loans) would still count.
  • Distinct purpose: excludes applications that share the same application_categorycollateral_typefunds_access_structure, and application_mode. For example, two new motorcycle loans would not count as cross-sell.
  • Basic: the most conservative definition — only counts applications with an entirely different application_category.

For example, looking at all applications submitted in a single day:

user_idapplication_categorycollateral_typefunds_access_structureapplication_mode
b3acb1bd-...CREDIT CARDLINE OF CREDITNEW
550e8400-...VEHICLEAUTOLOANREFINANCE
550e8400-...VEHICLEAUTOLOANNEW
40ebb32e-...PERSONALLOANNEW
40ebb32e-...VEHICLEAUTOLOANNEW
40ebb32e-...VEHICLEAUTOLOANREFINANCE
bbb14fe5-...PERSONALLOANNEW
9a20bb47-...CREDIT CARDLINE OF CREDITNEW

To calculate distinct purpose and basic cross-sell, concatenate the relevant fields per application to build a comparison key, then count unique keys per user. Applying all three definitions to this example:

DefinitionApplicants With Cross-SellTotal ApplicantsRate
Simple2540%
Distinct purpose2540%
Basic1520%

Frequently Asked Questions

How can I get started with data exports?

  • Ask your Clutch Customer Success manager to turn it on for you. We recommend querying files through our File Transfer API — it makes it easy to build automations, set retries, or pull retroactive files. As an alternative, you can use SFTP, which requires setting up a connection (you may need to involve your IT team) and hosting your own server.

Why should I use Clutch's data exports?

  • Data exports keep your team informed without needing to request ad hoc reports. They work for both operations and IT — you can open the .csv file directly in Excel or Google Sheets, or have your IT team ingest it into your data warehouse. It's an extract you can build reports on top of.

What's the cost?

  • Clutch does not charge any additional fees. If you use SFTP, you'll need to host your own SFTP server. Alternatively, you can use our File Transfer API with minimal setup on your end.

How long are the exports available for download?

  • For SFTP, it's up to you — since you host the server, you control how long files are retained once we push them. If you need retroactive files, contact our support team. For the File Transfer API, new exports are generated daily at 11:00 AM UTC and remain available for one week; you can query them at any time during that window.

What should I do if I didn't receive my daily file?

I lost access to a file and need to recover a copy. How can I get it?

  • If you're using the File Transfer API, you can query it using the referenceDate parameter to retrieve past files — see the File Transfer API documentation for details. If you're using SFTP, contact your Customer Success manager to arrange a recovery.

I need a data export for sandbox data. How do I get it?

  • Sandbox only contains test users and can be misleading when interpreting data, so we don't support sandbox data exports.

How can I request a new data export to answer new business questions?

  • Tell us what you're trying to achieve. Your implementation contact can help determine whether an existing export already supports your use case — if not, they'll pass your request along to our product team.

What should I do if I want to request additional fields in my data export?

  • We don't currently support custom fields per credit union, and we typically add new fields on roughly a 90-day cadence. Contact your Customer Success manager to let them know which fields you need.

What should I do if I want to report inconsistencies in the data?

  • Let your Customer Success Manager know or submit a ticket to our Support team, and we'll assign an engineer to investigate right away.

Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article