> ## Documentation Index
> Fetch the complete documentation index at: https://help.leaf360.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Import Data

> Bring leads and partners into Leaf360 Mortgage CRM from a CSV file: the four-step importer, the columns it understands, what happens to records you already have, and how to handle rows that fail.

Import Data is Leaf360's importer for bringing records in from a CSV file. It handles two kinds of record: **Leads**, meaning potential borrowers, and **Partners**, meaning the business contacts on [Contacts](/mortgage-crm/contacts). It walks you from your file to a finished import in four steps, and lets you fix the mapping and fill in gaps before anything gets saved.

It's not in the sidebar. Open it from the spreadsheet icon in the header, labeled **Import Data (CSV)**.

<Note>
  Loans are imported somewhere else. The upload icon next to this one, **Import or Create Loans**, opens the loan importer instead.
</Note>

## Watch it done

Two videos cover importing. Each has a written version if you would rather read than watch.

### Moving an existing database in

The closest match to this screen: leads and business partners from a CRM you are leaving, brought in with this importer. Written version: [How to move your database into Leaf360](/faq/import-your-database).

<iframe width="100%" height="400" src="https://www.youtube.com/embed/Hipkars-Xzg" title="How To Move Your Database Into Leaf360" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen />

### Bringing Arive loans in

Worth knowing before you watch either of these: both bring in loans, so they use the separate loan importer noted above rather than this screen.

There are two routes, and they are not equal. Check whether Arive offers you the direct connection first, because it is the better one. CSV is the fallback for accounts that only have Zapier.

**The direct connection, if Arive offers it.** Written version: [Importing Arive loans over the direct connection](/faq/arive-import-loans-direct-api).

<iframe width="100%" height="400" src="https://www.youtube.com/embed/uyABEgeNvJk" title="Importing Arive loans into Leaf360 over the direct connection" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen />

**By CSV, if it does not.** Written version: [Arive CSV import, step by step](/faq/arive-csv-import).

<iframe width="100%" height="400" src="https://www.youtube.com/embed/AkT69FBtqDQ" title="Arive CSV Import, Step by Step" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen />

Not connected to Arive at all yet? Start with [How to connect Arive to Leaf360](/faq/arive-connect-leaf360).

## What the file has to be

CSV only. Files that don't end in `.csv` get refused with **Please upload a CSV file** — there's no option for spreadsheets or any other format.

Beyond that, the importer asks for very little:

* A header row with column names. The importer matches your headers against the fields it knows, so clear names help it guess right.
* Consistent formats for dates and phone numbers.
* For a **Partners** import, First Name and Last Name are required.
* For a **Leads** import, First Name and Last Name, or an Email, are recommended rather than required.

Everything else is optional. Any column the importer can't place can become a custom field, or you can just skip it.

## Getting a template

On the upload step, **Download sample CSV** gives you a file with every column the importer understands for the type you picked, filled in with two example rows. It's the best answer to "what columns can I use," since it's built from the same list the importer checks your file against.

The leads template runs to around ninety columns. It covers the borrower's name, contact details and address; the subject property; loan amount, purchase price, down payment, appraised value and rate; credit score; income, debt and employment; loan type, purpose, term and lien position; military and veteran status; a full co-borrower block; realtor and referral names; lead status and priority; lead source and UTM parameters; demographic and consent fields; tags and notes; an assigned-to email; and created and updated dates.

The partners template is shorter. It covers name, email and secondary email, company, contact type, date of birth and licence number; cell, work and home phone, fax and preferred contact method; the full address plus county and timezone; contact status, contact stage, pipeline stage, priority and tier; tags and notes; LinkedIn, Facebook, Instagram and website; annual units and volume, buyer and seller side deals, average sales price and years of experience; buy side, sell side, closing count and referral count; and created and updated dates.

## The four steps

<Steps>
  <Step title="Choose the type">
    **Select Import Type** offers **Leads**, for potential customers, and **Partners**, for business partners. What you pick decides which fields you'll see and where the records end up.
  </Step>

  <Step title="Upload">
    Click the panel or drop your file onto it. Leaf360 reads the file, confirms with **Loaded {n} rows with {m} columns**, then works out which of your columns it recognizes.
  </Step>

  <Step title="Map Fields">
    Every column in your file gets a row, with the field the importer thinks it matches already filled in. Change any of these, skip the ones you don't want, or turn them into custom fields.
  </Step>

  <Step title="Review">
    A full preview of your rows with the mapping applied, plus the tools to fill in whatever's missing. **Start Import** finishes the job.
  </Step>
</Steps>

A step tracker across the top shows **Upload**, **Map Fields**, **Review** and **Complete**. **Cancel** in the top right leaves the importer, and turns into **Done** once the import has run.

## Mapping your columns

Five counters sit above the mapping table. Click any of them to filter by it:

| Counter      | Means                                                      |
| ------------ | ---------------------------------------------------------- |
| **All**      | Every column in your file                                  |
| **Standard** | Matched to a built-in field                                |
| **Custom**   | Matched to a custom field, existing or about to be created |
| **Unmapped** | Not matched to anything, and currently going nowhere       |
| **Skipped**  | Deliberately excluded                                      |

Two shortcuts handle unmapped columns in bulk. **Include all unmapped** turns every one of them into a new custom field. **Skip all unmapped** excludes them, and switches to **Show unmapped** so you can bring them back. **Hide skipped** clears skipped rows out of the table while you work.

On a **Partners** import, if a column is mapped to contact type and has values Leaf360 doesn't recognize, a panel asks you to map each unrecognized value to a real contact type before you continue.

The bar at the bottom shows your row count and how many fields are mapped, with **Back** and **Next: Review Import**. Moving on runs a match against your team and contacts first — you'll see **Matching contacts...** — then reports what it matched and how many rows still need attention.

## Reviewing before you import

The review step opens with your row count, how many **Fields Mapped** you have, how many **New Custom** fields will get created, how many columns are still **Unmapped**, and a warning or error count if the file has problems.

Below that is the whole file, page by page, with the mapping applied. You can fix each row individually, and a bar above the table lets you apply a value across all of them at once.

### Leads

The bulk bar carries the lead **Source**, then either a **Sub-Source** or a **Referral Contact** depending on the source you picked, an **Assignee**, and a **Lead Status**. Each has its own button: **Apply Source**, **Apply Assignee** and **Apply Status**. If your role doesn't let you assign leads to other people, every row gets stamped with you.

Where rows are missing a source, an assignee or a status, a **Needs Linking** filter appears beside **All** so you can work through just those rows.

### Partners

The bulk bar carries the assignee, a **Default Contact Type** for rows whose type is empty or unrecognized, an **Initial Stage** for the imported contacts, and a **Partner Source**. **Apply Type**, **Apply Stage** and **Apply Source** push each of these across the file. You can pick the partner source from what your company already uses, or type in a new one, and the review shows how many rows still have none.

### Activity history, on lead imports

If your file has call, text, or note history in its columns, the review step offers **Also import activity history**. Turn it on and those get written into each lead's timeline with their original dates — it shows you how many activities that covers, across how many leads, before you commit.

You choose which of **Calls**, **Texts** and **Notes** to bring in (limited to what your file actually has), and how far back to go: **All history**, **Last 3 years**, **Last 2 years** or **Last year**. It stays off unless you turn it on.

## Starting the import

**Start Import** runs it. If rows are still missing a source, an assignee, a status, or (on a partner import) a type or stage, Leaf360 stops first with **Some rows still need linking**, lists how many of each, and gives you **Cancel & review** or **Continue & import**. Continuing uses your defaults wherever you've set any.

Rows are imported in batches, with a progress bar as they go.

On the free plan, a file bigger than your remaining allowance triggers **Free plan limit reached**, which tells you how many records you have room for and lets you either import just the first batch that fits, or upgrade.

## What happens to records you already have

The finished import reports four figures:

| Figure        | Means                                                                                     |
| ------------- | ----------------------------------------------------------------------------------------- |
| **Processed** | Rows sent                                                                                 |
| **Created**   | New records added                                                                         |
| **Updated**   | Rows that matched a record you already had, and updated it instead of adding a second one |
| **Skipped**   | Rows that produced no record                                                              |

So a row for someone already in Leaf360 usually doesn't turn into a duplicate. It updates the record you already have, and shows up under **Updated** rather than **Created**.

<Warning>
  The importer doesn't tell you which rows will match before you import, and you can't choose between updating and creating. Leaf360 applies its own matching rule, and the only feedback you get is the created and updated counts afterward. If that matters for a particular file, import a small batch first and check the counts before running the rest.
</Warning>

For finding and cleaning duplicates that already exist, use **Find Duplicates** on [Contacts](/mortgage-crm/contacts) or on [All People](/mortgage-crm/all-people).

## When rows fail

The finished screen is headed **Import Complete!** even when something went wrong — but the icon turns amber and a dropdown appears counting the errors. Open it and each one is listed as **Row {n}:** followed by what went wrong, up to the first fifty.

There's no error report to download and no retry button, so you'll need to fix things by hand:

<Steps>
  <Step title="Note the row numbers and messages">
    Copy them down before you leave the screen. Row numbers refer to your file.
  </Step>

  <Step title="Correct those rows in your file">
    The message usually names the problem — most often a value the field won't accept.
  </Step>

  <Step title="Import just those rows again">
    Cut the failed rows into a fresh CSV with the same header row, and run the importer again. Rows that succeeded the first time have already landed, so re-importing the whole file won't cause any harm — at worst it just updates them again — but a smaller file is quicker to check.
  </Step>
</Steps>

If the whole import went wrong, go to **Settings**, then **Import History** under **Data & Integrations**. Every past import is listed there with its status, and you can reverse completed or failed imports. A reversal shows you exactly what it will delete and restore before you confirm it. It permanently deletes the records the import created and puts records it updated back the way they were.

## Finishing up

**Import More** clears everything and takes you back to the type picker. **View Leads** or **View Partners** takes you straight to the records you just imported, on [Sales Pipeline](/mortgage-crm/sales-leads) or [Contacts](/mortgage-crm/contacts).

## Common problems

<AccordionGroup>
  <Accordion title="My file was refused">
    Only `.csv` files are accepted. Export or save your spreadsheet as CSV first. An empty file, or one Leaf360 can't read, gets refused with its own message instead of being partly imported.
  </Accordion>

  <Accordion title="Most of my columns came back unmapped">
    The importer matches on your header names. Rename your headers to match the sample CSV for the type you're importing, then upload again. Or use **Include all unmapped** to keep the data as custom fields.
  </Accordion>

  <Accordion title="The contact type values in my file were rejected">
    On a partner import, Leaf360 only accepts contact types it already knows. Map each unfamiliar value to a real type in the panel on the mapping step, or set a **Default Contact Type** on the review step.
  </Accordion>

  <Accordion title="Everything came in assigned to me">
    That happens when your role doesn't allow assigning imports to other people. Have an administrator run the import instead, or reassign afterward with the bulk **Assign** action on the list screen.
  </Accordion>

  <Accordion title="I need to undo an import">
    Go to **Settings**, then **Import History**, find the import and reverse it. Read the preview first: reversal permanently deletes the records that import created.
  </Accordion>

  <Accordion title="I have a partner list, not a lead list">
    Choose **Partners** in the first step. Partner rows become business contacts and appear on [Contacts](/mortgage-crm/contacts). Choosing **Leads** puts them in the lead pipeline instead, which isn't what you want.
  </Accordion>
</AccordionGroup>

## Related

* [How to move your database into Leaf360](/faq/import-your-database)
* [Importing Arive loans over the direct connection](/faq/arive-import-loans-direct-api)
* [Arive CSV import, step by step](/faq/arive-csv-import)
* [How to connect Arive to Leaf360](/faq/arive-connect-leaf360)
* [How to add leads and referral partners in Leaf360](/faq/add-leads-and-referral-partners)
* [How to update hundreds of leads at once in Leaf360](/faq/bulk-update-leads)
* [Contacts](/mortgage-crm/contacts)
* [All People](/mortgage-crm/all-people)
* [Partner Pipelines](/mortgage-crm/dynamic-contacts)
* [Sales Pipeline](/mortgage-crm/sales-leads)
* [Leaf360 Mortgage CRM](/mortgage-crm/overview)
