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

# Import materials, clients, and estimates from Excel

> Bring your existing spreadsheets into Contractor Co-Pilot by importing Excel or CSV files for materials, clients, and estimate line items.

If you have historical cost data, client lists, or estimate line items in spreadsheets, you don't need to re-enter them by hand. Contractor Co-Pilot accepts `.xlsx` and `.csv` files across several modules and walks you through mapping your columns to the right fields.

## What you can import

| Module | What you can import |
| - | - |
| **Materials** | Material catalog entries with names, units, and pricing |
| **Clients** | Client names, contact information, and addresses |
| **Estimates** | Line items with descriptions, quantities, units, and costs |
| **Cost Data** | Historical cost data used for AI-powered suggestions |

## Prepare your file

A few formatting rules apply to all import types:

* Put column headers in **row 1** — the importer reads the first row as field names.
* Keep **one record per row** — each row represents a single material, client, or line item.
* **Remove merged cells** — merged cells will cause the import to fail.
* **Remove blank rows and subtotal rows** — blank rows between data can break the import.
* Save as **`.xlsx`** (recommended) or **`.csv`**.

<Note>
  The maximum file size is **10 MB**. If your file is larger, split it into multiple smaller files and import them one at a time.
</Note>

Download pre-formatted templates for each import type from the **Download Template** link inside the import dialog.

### Materials column format

| Column | Required | Example |
| - | - | - |
| Name | Yes | `2x4 Lumber - 8ft` |
| Unit | Yes | `EA`, `LF`, `SF`, `CY` |
| Unit Cost | Yes | `4.99` |
| Category | No | `Lumber` |
| Supplier | No | `Home Depot` |
| SKU | No | `HD-2X4-8` |

### Estimate line items column format

| Column | Required | Example |
| - | - | - |
| Description | Yes | `Install drywall` |
| Quantity | Yes | `500` |
| Unit | Yes | `SF` |
| Unit Cost | Yes | `2.50` |
| Category | No | `Drywall` |
| Notes | No | `Includes taping` |

### Clients column format

| Column | Required | Example |
| - | - | - |
| Name | Yes | `ABC Construction` |
| Email | No | `info@abc.com` |
| Phone | No | `555-123-4567` |
| Address | No | `123 Main St` |
| City | No | `Austin` |
| State | No | `TX` |

## Run the import

<Steps>
  <Step title="Open the import dialog">
    Navigate to the module you want to import into — for example, **Materials** or **Clients**. Click the **Import** button, which is typically in the top-right area of the page.
  </Step>

  <Step title="Upload your file">
    Drag and drop your file onto the upload area, or click **Browse** to select it from your computer. The importer accepts `.xlsx` and `.csv` files up to 10 MB.
  </Step>

  <Step title="Map your columns">
    The importer attempts to auto-detect your column names based on common variations. Review the mapping and adjust any columns it didn't recognize.

    <Tip>
      If you downloaded the template from the import dialog and filled it in, column mapping is handled automatically.
    </Tip>
  </Step>

  <Step title="Preview the data">
    The importer shows a preview of the first several rows. Verify that the field values are in the right columns and that the data looks correct before continuing.
  </Step>

  <Step title="Confirm the import">
    Click **Import** to start processing. Large files may take a few seconds. When complete, you'll see a summary of how many records were imported and whether any rows had errors.
  </Step>
</Steps>

## After the import

* **Spot-check your records** — Open a few imported items and verify that costs, units, and names came through correctly.
* **Review any errors** — If rows failed, the error summary explains what went wrong on each row.
* **Re-import to update** — You can re-import at any time. Existing records are matched by name; duplicates update in place rather than creating new entries.

## Troubleshooting

**"Column not recognized"**
Your header row doesn't match the expected field names. Either rename your headers to match the column names in the format tables above, or use the manual mapping step to assign them yourself.

**"Invalid number format"**
Cost and quantity columns must contain plain numbers only. Remove currency symbols (`$`), commas in large numbers (`1,000`), and any text like "per unit" from those cells.

**"File too large"**
Split your file into smaller chunks and import each one separately. No single file should exceed 10 MB.

**Blank rows causing errors**
Excel sometimes stores invisible data in cells that appear empty. Select those rows in Excel and use **Delete Row** (not just the Delete key) to remove them entirely.

## Next steps

<CardGroup cols={2}>
  <Card title="Materials" href="/costs/materials">
    Set up and manage your materials catalog after importing.
  </Card>

  <Card title="Estimates" href="/estimating/estimates">
    Start building estimates using your imported line items and materials.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.