# Importing from CSV and Excel

> Import companies, people and opportunities from HubSpot, Pipedrive, Zoho or your own spreadsheet by mapping columns; preview, apply, and undo if needed.

**Import** ("İçe aktar", in the header of a table view or at `/import/records`) creates records from a CSV or Excel file or bulk-updates existing ones. To move from Salesforce with the full history, use [Migrating from Salesforce](/guides/salesforce-migration).

:::steps
### File

Choose what you are importing — **Companies**, **People** or **Opportunities** — and upload the file: `.xlsx` (first sheet) or `.csv` (comma, semicolon or tab; UTF-8 or Windows-1254). The first row must be the header; up to 20,000 rows.

### Map columns

The target field of each column is guessed from its header — Turkish and English headers, HubSpot / Pipedrive export names and custom field names are recognised (*First Name* → first name, *Company Name* → company, *Segment* → the Segment custom field). Leave columns you do not want as *— skip —*.

### Preview

**Preview** shows the result without writing anything: how many new records, updates and skipped rows, and the error on each failing row.

### Import

When you confirm, rows are written one by one; a failing row does not stop the others. The result page shows the counts, the error list and an **Undo** button.
:::

## Options {#options}

| Option | Values |
|---|---|
| Records | **Create new, update matches** · Create new only (matches are skipped) · Update existing only (bulk update) |
| Match on | Company: Record ID · company name · website — Person: Record ID · email · full name (within the company) — Opportunity: Record ID · opportunity name (within the company) |
| On a matching record | Write the file's value · Fill empty fields only |
| Owner | User assigned when the file has no owner column or it is not recognised |
| Number format | Turkish (`1.250,50`) · English (`1,250.50`) |
| Create missing companies | For people and opportunities: if the company name is not found, a prospect company is created; when off, the row fails |

Company name matching ignores case, Turkish characters and legal suffixes such as *A.Ş. / Ltd. Şti.*

## Fields {#fields}

- **Company** — name, status (*Mevcut müşteri / Aday* or `AC` / `Prospect`), owner (name or email), city, sector, phone, website, address, source, tags (comma-separated) and custom fields. **Main contact** columns (*Contact: full name, title, email, phone*) create a person with a new company.
- **Person** — full name or separate first + last name columns, company, title, department, email, phone, custom fields.
- **Opportunity** — name, company, stage (name or key), amount, currency, expected close, probability, product, source, tags, custom fields. New opportunities are not held back by stage gates (historic data); the stage history records *Imported*.

A value that is not among a select custom field's options is added to them. Dates may be `YYYY-MM-DD`, `DD.MM.YYYY` or Excel dates. Imports do not trigger workflows.

## Undo {#undo}

**Undo** on the result page or in **Import history** deletes the records the import created (with everything linked to them) and restores the fields, custom fields and tags it updated. A database backup is taken first. The person who ran the import or an admin can undo it.