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

# Import contacts

> Bring your existing customers into ShineCRM from a CSV.

If you're switching from another tool, import your customers instead of retyping them. ShineCRM reads a CSV exported from HouseCall Pro, Google Contacts, or any other CRM, shows you exactly what will happen before anything is imported, and lets you undo an import afterwards. Importing is owner/admin only and works on both the web dashboard and the mobile app.

## Import from a CSV

<Steps>
  <Step title="Export a CSV from your old tool">
    In HouseCall Pro, Google Contacts, or whatever you use now, export your contacts as a CSV file. If your tool gives you an Excel file (.xlsx), open it and save it as CSV first; the importer will remind you if you upload an Excel file by mistake.
  </Step>

  <Step title="Open the importer">
    Go to **Contacts** and open **Import**. Upload your CSV.
  </Step>

  <Step title="Map your columns">
    ShineCRM auto-detects common columns: names, phone numbers (including separate mobile, home, and work columns), email, addresses (including "Street Line 2" style unit numbers), lead source, notes, the original created date, and the customer ID from your old CRM. Review the **Map columns** step and fix anything that landed in the wrong field. Set any column you don't want to bring over to **Ignore**.
  </Step>

  <Step title="Review before importing">
    The review step shows how many contacts will be added, updated, and skipped, before anything is written. Two choices to make here:

    * **Import new contacts as**: the pipeline stage for the new contacts. Importing your existing customer base? Pick **Completed** so they don't all show up as leads.
    * **When a contact already exists**: **Skip duplicates** leaves matching contacts untouched; **Update existing** fills in missing details from the file without erasing anything. Matches are found by customer ID, phone, or email.

    Rows that need attention (unrecognized phone numbers, addresses without a street) are listed so you can fix them in the file first, or import anyway; nothing is silently dropped, unrecognized phone numbers are kept in the contact's notes.
  </Step>

  <Step title="Run the import">
    Import runs in fast batches with live progress and can be cancelled mid-way. You'll get a summary showing what was added, updated, and skipped, and can download a CSV of just the rows that need fixing to re-import later. Re-importing the same file is safe: duplicates are detected automatically.
  </Step>
</Steps>

## Undo an import

Every import is recorded under **Recent imports** on the import screen. Undo removes the contacts that import added, with one safeguard: contacts that already have estimates, invoices, jobs, or conversations are always kept, and contacts the import merely updated are not changed.

## Frequently asked

**Which file format do I need?**
A CSV. Most CRMs and Google Contacts export one directly. Excel files need a quick File > Save As to CSV first. Comma or semicolon separated both work, and accented names import correctly even from Excel-saved files.

**What if my columns are named differently?**
That's what the Map columns step is for. You tell ShineCRM which of your columns is the name, the phone, the email, and so on.

**What happens to a contact's mobile and home phone numbers?**
The first working number becomes the contact's phone. Any extra numbers aren't lost: they're saved into the contact's notes.

**Can an import change who receives texts?**
One thing to know: if your file has an opt-out column (like "Unsubscribed" or "Do not text"), a yes-value marks that contact as opted out of texts, and imports never opt anyone back in. That's deliberate, an import can only ever stop messages, not start them.

**Can I import addresses?**
Yes. One address per contact maps straight in, "Street Line 2" unit/suite columns are appended to the street, and for multiple addresses use address groups, where Group 1 is the primary.

**Will importing twice create duplicates?**
Duplicates are matched by your old CRM's customer ID, phone number, and email, and either skipped or updated, whichever you choose in the review step. One caveat: a row with none of those three (say, a name and nothing else) can't be matched, so it would be created again on a second import. If your file has such rows, the review step is where you'll spot them.
