
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_atfield 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.
How Not to Use the Exports
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
- 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.
- Append: always add new rows to the existing table.
Data Dictionary
| Field Name | Description | Example | Required |
|---|---|---|---|
session_id | String: an ID representing a unique user session. A session lasts up to 4 hours, or ends after 15 minutes of inactivity. | 123456789 | Yes |
application_id | String: an ID representing a unique application sent to the LOS. | 0030dbe4-ead5-4543-afa1-61d24688b4ef | No |
user_id | String: a UUID representing a unique user (the main applicant). | 0030dbe4-ead5-4543-afa1-61d24688b4ef | No |
applicant_name | String: the main applicant's full name. | Jane Doe | No |
applicant_email | String: the main applicant's email address. | jane.doe@example.com | No |
user_phone | Number: the main applicant's phone number. | 1234567891 | No |
user_fico_score_range | String: the range in which the main applicant's FICO score falls. | 450-500 | No |
user_income_range | String: the range in which the main applicant's self-declared annual income falls. | 100,000-150,000 | No |
applicant_address | String: the main applicant's address. | 123 Main St | No |
applicant_city | String: the main applicant's city. | San Francisco | No |
applicant_state | String: the main applicant's state. | CA | No |
applicant_zip_code | String: the main applicant's zip code. | 12345 | No |
applicant_employer | String: the main applicant's employer name. | Example Employer Inc. | No |
applicant_job_title | String: the main applicant's job title. | Customer Success Manager | No |
application_category | String: the loan type the user applied for. Null if the application was dropped before selection. | VEHICLE ; PERSONAL ; CREDIT CARD | No |
credit_structure | String: whether the application is for a loan or a line of credit. | LOAN ; LINE OF CREDIT | No |
application_mode | String: whether the application is new or a refinance of an existing deal. | NEW ; REFINANCE | No |
collateral_type | String: the kind of collateral being used. Null if none. | NULL ; AUTO ; MOTORCYCLE ; CHECKING ACCOUNT | No |
application_nr | Number: the loan number in the LOS. | 1234 | No |
application_amnt | Number: the amount the user applied for. | $10,000.00 | No |
experience_started_at | Timestamp: date and time when the application started. | 2024-03-07 18:08:32.765 | Yes |
user_authenticated_at | Timestamp: date and time when the user authenticated in the portal. Null if they didn't. | 2024-03-07 18:08:32.765 | No |
application_started_at | Timestamp: date and time when the user selected an application category. Null if they didn't. | 2024-03-07 18:08:32.765 | No |
application_submitted_at | Timestamp: date and time when the user submitted the application. Null if they didn't. | 2024-03-07 18:08:32.765 | No |
application_confirmed_at | Timestamp: date and time when the LOS received the application. Null if it didn't. | 2024-03-07 18:08:32.765 | No |
record_last_updated_at | Timestamp: date and time when this record was last updated. | 2024-03-07 18:08:32.765 | Yes |
utm_source | String: part of the URL used for tracking (must be present in the Clutch URL). | No | |
utm_medium | String: part of the URL used for tracking (must be present in the Clutch URL). | ads | No |
utm_campaign | String: part of the URL used for tracking (must be present in the Clutch URL). | auto_refi_june_2024 | No |
utm_content | String: part of the URL used for tracking (must be present in the Clutch URL). | group_a | No |
utm_term | String: part of the URL used for tracking (must be present in the Clutch URL). | loans | No |
accepted_tcpa_at | Timestamp: date and time when the applicant accepted TCPA disclaimers. | 2024-03-07 18:08:32.765 | No |
zest_score | Number: the main applicant's Zest score for that application. | 80 | No |
chance_of_approval_badge | String: the badge shown to the applicant while browsing that offer. Possible values: • HIGH • LOW • MEDIUM • NOT_ENOUGH_INFORMATION | MEDIUM | No |
gap_offered | Boolean: whether the user was offered the opportunity to express interest in GAP (protection product). | TRUE | No |
gap_selected | Boolean: whether the user expressed interest in GAP (protection product). | TRUE | No |
mp_offered | Boolean: whether the user was offered the opportunity to express interest in mechanical breakdown protection. | TRUE | No |
mp_selected | Boolean: whether the user expressed interest in mechanical breakdown protection. | TRUE | No |
pp_offered | Boolean: whether the user was offered the opportunity to express interest in payment protection. | TRUE | No |
pp_selected | Boolean: whether the user expressed interest in payment protection. | TRUE | No |
member_nr | Number: the main applicant's member number. | 1234 | No |
citizenship | String: the applicant's citizenship. | US citizen | No |
referral_source | String: the referral source defined in the application's URL. Matches what's sent to the LOS. | lead-provider-name | No |
origin_module | String: the origin of the application. Possible values: • LENDING • ACCOUNT OPENING This enables calculating cross-sell from account opening to lending. | LENDING | Yes |
fraud_check_application_id | String: an identifier for the fraud check application. Can be null. | JA-DwyIHO5cTHu9uqquWDy9 | No |
fraud_check_entity_token | String: an identifier for the fraud check token. Can be null. | J-KASoidfjs09SNGFKJ123 | No |
gclid | String: Google click identifier, used in the URL for tracking purposes. Can be null. | 123xyz | No |
disclosure_acknowledged_at | Timestamp: date and time when the applicant accepted product-specific disclaimers (credit cards and home equity). | 2024-03-07 18:08:32.765 | No |
automobile_estimated_list_price | Number: for vehicle loans, the estimated list price of the vehicle. | 37545.72 | No |
events_funnel_id | String: a UUID representing a unique record in the export. This is the primary key for the table. | 0030dbe4-ead5-4543-afa1-61d24688b4ef | Yes |
application_origin | String: the application's origin. Possible values: • original • loan_cross_sell • deposit_cross_sell • remarketing | original | Yes |
device_id | String: unique identifier for the device used to start the application session. | a1b2c3d4-e5f6-7890-abcd-ef1234567890 | No |
authentication_method | String: the method used to authenticate the session that started the application. Possible values: sso, password. | sso | No |
gap_quote | Decimal: the GAP (Guaranteed Asset Protection) insurance premium amount quoted to the customer, in dollars. | 299.00 | No |
mp_quote | Decimal: the Mechanical Protection insurance premium amount quoted to the customer, in dollars. | 199.00 | No |
pp_quote | Decimal: the Payment Protection insurance premium amount quoted to the customer, in dollars. | 150.00 | No |
gap_plan | String: the GAP plan name/description from the LOS. | GAP Plus | No |
mp_plan | String: the Mechanical Protection plan name/description from the LOS. | PowerTrain Plus | No |
pp_plan | String: the Payment Protection plan name/description from the LOS. | Basic Payment Shield | No |
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:
- A user who started the application experience
- Any application session that has been started
- Any application form that has been started
| session_id | user_id | experience_started_at | application_started_at | application_confirmed_at | application_category |
|---|---|---|---|---|---|
| 0030dbe4-... | 550e8400-... | 3/7/2024 18:16:00 | 3/7/2024 18:17:00 | 3/7/2024 18:20:00 | CREDIT CARD |
| 00b49222-... | 550e8400-... | 1/23/2024 21:01:58 | 1/23/2024 21:02:58 | — | VEHICLE |
| 0130be4e-... | 40ebb32e-... | 1/12/2024 15:26:12 | 1/12/2024 15:27:12 | 1/12/2024 15:28:12 | PERSONAL |
| 0130be4e-... | 40ebb32e-... | 1/12/2024 15:26:12 | 1/12/2024 15:30:25 | — | CREDIT CARD |
| 99a8b36f-... | 40ebb32e-... | 1/13/2024 20:13:15 | 1/13/2024 20:14:15 | 1/13/2024 20:16:27 | CREDIT 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:
| Definition | Formula | Result |
|---|---|---|
| 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 Type | Leads (by Users) | Leads (by Sessions) | Applications Submitted to LOS | Conversion (Users) | Conversion (Sessions) |
|---|---|---|---|---|---|
| CREDIT CARD | 2 | 3 | 2 | 100% | 67% |
| PERSONAL | 1 | 1 | 1 | 100% | 100% |
| VEHICLE | 1 | 1 | 0 | 0% | 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_nr | experience_started_at | application_submitted_at | time_to_apply (minutes) |
|---|---|---|---|
| 12345 | 3/7/2024 18:08:33 | 3/7/2024 18:16:00 | 7.45 |
| 12346 | 1/23/2024 20:57:05 | 1/23/2024 21:01:58 | 4.88 |
| 12347 | 1/12/2024 15:23:05 | 1/12/2024 15:26:12 | 3.12 |
| 12348 | 2/12/2024 22:36:45 | 2/12/2024 22:36:46 | 0.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.
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_category,collateral_type,funds_access_structure, andapplication_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_id | application_category | collateral_type | funds_access_structure | application_mode |
|---|---|---|---|---|
| b3acb1bd-... | CREDIT CARD | — | LINE OF CREDIT | NEW |
| 550e8400-... | VEHICLE | AUTO | LOAN | REFINANCE |
| 550e8400-... | VEHICLE | AUTO | LOAN | NEW |
| 40ebb32e-... | PERSONAL | — | LOAN | NEW |
| 40ebb32e-... | VEHICLE | AUTO | LOAN | NEW |
| 40ebb32e-... | VEHICLE | AUTO | LOAN | REFINANCE |
| bbb14fe5-... | PERSONAL | — | LOAN | NEW |
| 9a20bb47-... | CREDIT CARD | — | LINE OF CREDIT | NEW |
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:
| Definition | Applicants With Cross-Sell | Total Applicants | Rate |
|---|---|---|---|
| Simple | 2 | 5 | 40% |
| Distinct purpose | 2 | 5 | 40% |
| Basic | 1 | 5 | 20% |
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?
- Contact our support team at support@withclutch.com for assistance.
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
referenceDateparameter 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
Feedback sent
We appreciate your effort and will try to fix the article