# Import data into Attio via CSV

URL: https://attio.com/help/reference/imports-exports/csv-imports/import-data-into-attio-via-csv
Breadcrumbs: [Help](https://attio.com/help) > [Reference](https://attio.com/help/reference) > [Imports & exports](https://attio.com/help/reference/imports-exports) > [CSV imports](https://attio.com/help/reference/imports-exports/csv-imports)

Import your data into Attio using a CSV file.

> Available on all plans.
>
> **Admins** can import data.  
> **Members** can import data with the appropriate access to the object or list.

You can import data into your Attio objects or lists from other apps. All you need is a .csv file containing your data, which is a very common export option you'll find in most platforms.

> **Note:** This guide explains how to import records into Attio using a CSV file.
>
> - If you're migrating data from another CRM, see [Migrate data from another CRM](https://attio.com/help/reference/imports-exports/migrate-data-from-another-crm).
> - To bring your email history into Attio, see [Sync your email and calendar](https://attio.com/help/reference/email-calendar/email-and-calendar-syncing) instead.

## Overview and checklist

Before importing data into Attio, it’s important to follow all steps to ensure a smooth import process and avoid errors, duplicates, or missing data. This checklist outlines the key stages you'll go through, with each step covered in more detail below.

1. **Define what you’re importing.**

Decide whether you're importing into an object or a list. If your data spans multiple objects, plan for separate imports as needed. See [Define your data model: objects, lists, and views](https://attio.com/help/reference/attio-101/attios-data-model/define-your-data-model-objects-lists-and-views) for help deciding which to use.

2. **Prepare your file format.**

Make sure your file is a CSV, includes a header row, and meets all formatting requirements. See the [CSV import formatting guide](https://attio.com/help/reference/imports-exports/csv-imports/csv-import-formatting-guide) for how to structure data for each attribute type.

3. **Include all required and unique attributes.**

Confirm that your file contains all required attributes and at least one unique attribute for each object you’re importing to prevent duplicates.

4. **Import file and map columns.**

Match each column in your file to the correct Attio attribute. Create new attributes as needed.

5. **Review and preview your import.**

Use the **Review values** and **Preview import** steps to confirm data is mapped correctly, and fix any issues before proceeding.

6. **Run the import.**

Start the import, track progress in real time, and review any error messages.

## Step 1: Define what you’re importing

### Define the object(s)

Each type of record in Attio is called an object, and each object has its own set of attributes. Review the columns in your file and decide which belong to which object. The objects and attributes in your file determine where and how it should be imported. See [Define your data model: objects, lists, and views](https://attio.com/help/reference/attio-101/attios-data-model/define-your-data-model-objects-lists-and-views) for help deciding which to use.

Common attributes for Attio objects (and a [full list here](https://attio.com/help/reference/managing-your-data/objects/manage-standard-objects)):

- **Companies**: Company names, domains, descriptions, social media links (for company profiles), locations, team members, etc.
- **People**: People’s names, email addresses, phone numbers, social media links (for individual profiles), job titles, locations, company, etc.
- **Deals**: Deal name, deal owner, deal stage, deal value, deal type, projected close date, associated company, etc.

The objects in your file determine where you should do your import:

- **One object (e.g., Companies, People, or Deals):** Import directly into that object’s page under **Records**, or into a list of that object.
- **People and their companies:** Import into **People** (or a list of people).
- **Deals and their companies:** Import into **Deals** (or a list of deals).
- **Companies, deals, and people together:** You’ll need two imports, one into **People** (or a list of people), and one into **Deals** (or a list of deals).

> For a video walkthrough of the CSV import process for objects, see **Importing into Objects** in Attio Academy.

### Choose a destination: object or list

Next, decide whether your data should be imported into an object or a list:

- Import into an object (e.g., **Companies**, **People**, or **Deals**) if the attributes you're importing should exist on all records of that object.
- Import into a list if some attributes are specific to a particular workflow or segment rather than every record in the object. Lists can also be kept [private or read-only](https://attio.com/help/reference/managing-your-data/lists/lists-access). You can also create new records and update object attributes through a list import.

For a deeper comparison, check out [list vs. object attributes](https://attio.com/help/reference/managing-your-data/attributes/create-manage-attributes#choose-an-object-vs-list-attribute).

> For a video walkthrough of the CSV import process for lists, see **Importing into Lists** in Attio Academy.

## Step 2: Prep your data

Before importing, ensure your file meets Attio’s requirements and is properly structured.

Each row in your CSV file represents a record, and each column represents an attribute.

- **For objects**: Records will be created or updated.
- **For lists**: Records and list entries will be created or updated based on your [mapping settings](https://attio.com/help/reference/imports-exports/import-data-into-attio-via-csv#step-4-map-columns)**.**

**Quick tips:**

- New attributes can be created during import.
- Empty values are skipped and won’t overwrite existing data.
- Only the attributes you map in your import will be updated while all others will remain unchanged.

### General formatting and file requirements

See our [CSV imports formatting guide](https://attio.com/help/reference/imports-exports/csv-imports/csv-import-formatting-guide) for accepted formats for each attribute type and specific attributes.

To successfully import your data, your CSV file must meet the following requirements:

- File type: CSV only
- Header row: required, with each column labeled by attribute name (e.g., Name, Email address, City)
- Maximum rows: 100,000
- Maximum columns: 100
- Maximum file size: 100mb

### Scenarios with import templates

Use these instructions if your file matches one of the common scenarios. Each scenario includes a downloadable import template you can adapt.

#### Importing a single object

Import into the object’s page under **Records** in the sidebar, or into a list of that object.

How to structure your file:

- Include a header row with attribute names, then one row per record.
- Include all [required and unique attributes](https://attio.com/help/reference/imports-exports/csv-imports/import-data-into-attio-via-csv#attribute-columns-to-include).
- Add columns for custom attributes.

**Templates:**

- [Attio CSV import template: People](https://a.storyblok.com/f/234930/x/175fdf6914/attio-csv-import-template-people.csv)
- [Attio CSV import template: Companies](https://a.storyblok.com/f/234930/x/e998c0de2c/attio-csv-import-template-companies.csv)
- [Attio CSV import template: Deals](https://a.storyblok.com/f/234930/x/23c0505bf7/attio-csv-import-template-deals.csv)

> **Note: **If you don’t already have company domains for your people, a good approach is to import only people with their email addresses. Attio will automatically create companies from those email domains and link people to them using the Company <> Team relationship attributes. Whenever possible, Attio will also enrich the company with its name and other details. This excludes public email providers like gmail.com, outlook.com, or icloud.com, which won’t generate companies.

#### Importing people and companies with one file

If your file contains both people and their associated companies, import into **People** (or a list of people).

How to structure your file:

- Include a header row with attribute names, then one row per person.
- Include unique attributes for both people and companies (e.g., Email addresses and Domains).

**Template: **[Attio CSV import template: People and Companies](https://a.storyblok.com/f/234930/x/f7f2c5ee36/attio-csv-import-template-people-and-companies.csv)

![](https://a.storyblok.com/f/234930/1922x210/79d9e77863/people-import-example.png)

Alternative method (import into **Companies**):

- Include a header row with attribute names, then one row per company.
- Include a column with a comma-separated list of email addresses for linked people.
- **Note:** This method only links people by email. It can't update other attributes (like Name or Job title). To add those, run a separate import into **People**. [Learn more about importing attributes of linked objects](https://attio.com/help/reference/imports-exports/csv-imports/import-data-into-attio-via-csv#importing-attributes-of-linked-objects).

![](https://a.storyblok.com/f/234930/1358x112/297684c135/company-import-example.png)

#### Importing deals and companies with one file

If your file contains deals and their associated companies, import into **Deals**.

How to structure your file:

- Include a header row with attribute names, then one row per deal.
- Include a column with a unique company attribute (e.g., Domains) to link deals to companies.
- Include all [required Deals attributes](https://attio.com/help/reference/imports-exports/csv-imports/import-data-into-attio-via-csv#attribute-columns-to-include): Deal name, Deal owner, Deal stage.

**Template**: [Attio CSV import template: Deals and Companies](https://a.storyblok.com/f/234930/x/8792194a4b/attio-csv-import-template-deals-and-companies.csv)

![](https://a.storyblok.com/f/234930/1086x106/65b61b778b/deal-import-example.png)

#### Importing companies, deals, and people

If your file contains attributes for all three objects, companies, deals, and people, you’ll need two imports: one into **People** and one into **Deals**. Create a copy of your file, and edit the files following the guidelines below.

For the import into** People:**

- Include a header row with attribute names, then one row per person.
- Remove all deal attributes.
- Include all company and people attributes.
- [Include unique attributes](https://attio.com/help/reference/imports-exports/csv-imports/import-data-into-attio-via-csv#attribute-columns-to-include) (e.g., Email addresses and Domains).

**Template:** [Attio CSV import template: People and Companies](https://a.storyblok.com/f/234930/x/f7f2c5ee36/attio-csv-import-template-people-and-companies.csv)

For the import into** Deals:**

- Include a header row with attribute names, then one row per deal.
- Include all deal attributes, [including required ones](https://attio.com/help/reference/imports-exports/csv-imports/import-data-into-attio-via-csv#attribute-columns-to-include): Deal name, Deal owner, Deal stage.
- [Include unique attributes](https://attio.com/help/reference/imports-exports/csv-imports/import-data-into-attio-via-csv#attribute-columns-to-include) for linked people and companies (e.g., Email addresses and Domains).
- Remove other company and people attributes.

**Template:** [Attio CSV import template: Deals, Domains, and Emails](https://a.storyblok.com/f/234930/x/61601e3176/attio-csv-import-template-deals-domains-and-emails.csv)

### Attribute columns to include

To ensure a successful import, your file must include all required attributes (if applicable) and, ideally, unique ones:

- **Required attributes:** Each record must have values for all required attributes. Include a column for each and ensure no empty rows.
- **Unique attributes:** Unique attributes (e.g., Email addresess for people, Domains for companies) help prevent duplicate records. Attio uses them to identify existing entries, so no two records can share the same value.

> **Note:** Including email addresses (for people) and domains (for companies) enables automatic data enrichment (e.g., profile pictures, social media, descriptions).   
>   
> Records without these can still be imported but won’t be enriched or checked for duplicates. [Learn more about data enrichment](https://attio.com/help/reference/managing-your-data/enriched-data).

#### Required and unique attributes to include for each object:

- **Companies:** Domains (unique and used for [data enrichment](https://attio.com/help/reference/managing-your-data/enriched-data))
- **People:** Email addresses (unique and used for [data enrichment](https://attio.com/help/reference/managing-your-data/enriched-data))
- **Deals:** Deal name, Deal owner, and Deal stage (all are required)
- **Users:** Primary email address and User ID (both are unique and required)
- **Workspaces:** Include Workspace ID (unique and required)
- **Custom objects:** Dependent on configuration; check the custom object’s **Attributes** tab in [Workspace settings](https://app.attio.com/_/settings/data/objects)

#### Multiple value delimiters

Some attributes, such as multi-select and relationship attributes, support multiple values. Use a comma delimiter to import multiple values into any given attribute. In the following example, Category is a multi-select attribute on the Companies object. To import four category values for the company PayPal, we can use a comma and a space to separate each value within the category cell.

![](https://a.storyblok.com/f/234930/439x68/ea5552827a/comma-delineation-csv-import.jpeg)

If an attribute can hold multiple values and already has some before your import, the values in your import will be added to the existing ones rather than replacing them.

#### When to use Record ID and Entry ID

Record ID is a unique attribute for all objects but should only be included when updating existing records. It’s automatically generated by Attio and cannot be customized.

Entry ID is a unique attribute for list entries, also generated by Attio, and can be used to update existing items.

You can get Record and Entry IDs by [exporting a view](https://attio.com/help/reference/imports-exports/exporting-lists-and-views). If an ID matches an existing record during import, it will be updated; if not, it will be skipped.

## Step 3: Upload file

1. In the left-hand sidebar, select the object under **Records** or the list under **Lists**.
2. Click **Import / Export** in the top right, then choose **Import CSV**.

> **Note:** Importing requires specific permissions:
>
> - **Importing into objects:** You must be an admin or have [Read and write or Full access to an object](https://attio.com/help/reference/managing-your-data/objects/manage-access-to-objects) to import into it.
> - **Importing into lists:** You must be an admin or have [Read and write or full access to a list](https://attio.com/help/reference/managing-your-data/lists/lists-access) to import into it. You can import into a list even if you do not have write access to the underlying object, as long as you are only updating list attribute values and you [match records using Entry IDs](https://attio.com/help/reference/imports-exports/csv-imports/import-data-into-attio-via-csv#when-to-use-record-id-and-entry-id).

![](https://a.storyblok.com/f/234930/592x294/2e76e01d1e/import-csv.png)

3. Either drag and drop a file, or click **Choose a .CSV file** to browse your computer and select the CSV file you want to import.

![](https://a.storyblok.com/f/234930/2316x1178/45b7601f9f/upload-file.png)

4. After uploading your file, you’ll see a preview showing the number of columns and rows detected. The number of columns will be number of attributes you can map to, and rows will be the number of records/list entries.

5. When you're ready, click **Next**.

![](https://a.storyblok.com/f/234930/1638x927/8793720974/uploaded-file-confirmation.png)

## Step 4: Map columns

When you click **Next**, Attio will begin uploading your full file. Upload progress appears in the lower-left corner. You can start mapping columns while the file uploads, but you must wait for it to finish before reviewing values.

In the **Map columns** step, your file’s columns appear on the left under **File column**, and Attio attributes on the right under **Attributes**.

Attio will auto-map columns where possible. To adjust or map manually, select the appropriate attribute on the right. If an attribute doesn’t exist, click **+ Create new attribute**.

Video: https://vimeo.com/949686463

> **Note:** When creating new attributes within the importer, the type of attribute created depends on where you’re importing:
>
> - When importing into an object, new attributes are created on the primary object.
> - When importing into a list, new attributes are created as list attributes.
>
> To create a different type of attribute, [create them in settings](https://attio.com/help/reference/managing-your-data/attributes/create-manage-attributes) instead.

To skip a column, don’t select an attribute, or click the **x** to remove an auto-mapped one. The column will be ignored during import.

You can preview data from your file (up to 100 rows) under **Data preview** by hovering over each attribute.

If you're importing into a list, choose how to handle records already in the list under **For records already in the list**:

- **Add again** adds duplicates of existing records.
- **Update existing** updates current list entries without creating duplicates.

![](https://a.storyblok.com/f/234930/1558x616/bda4a70d83/for-records-already-in-list.png)  
When you're done mapping attributes, click **Continue**.

> **Note:** For multi-select and multi-value attributes, imported values will be added, not replaced, when updating existing records.
>
> For example, if you already have a company attio.com with the category **SaaS**, and your import file has attio.com with the category **Technology**, after the import, attio.com will show both **SaaS** and **Technology**.

###

### Importing attributes of linked objects

Objects in Attio can be connected through relationship attributes (e.g., **Team** on Companies, **Company** on People). To learn more, see our [guide to creating relationship attributes](https://attio.com/help/reference/managing-your-data/attributes/relationship-attributes), or our Attio [Academy video on relationships](https://attio.com/help/academy/introduction/customizing-objects).

You can use imports to update both relationship attributes and the attributes of linked records.

To avoid duplicates, include a unique attribute for the linked object, like domain (for companies), email (for people), or record ID (for any object). Without one, Attio will create a new record instead of updating an existing one.

**Example:**

If you're importing people and include their company's domain and description, Attio will:

- Update the existing company if the domain matches
- Create a new company if no match is found

In both cases, the company will be linked as the person’s **Company**.

To import attributes from a linked object, first select the relationship (e.g., **Company** or **Team**), then choose the specific attribute from that object.

Video: https://vimeo.com/949872325

#### Importing relationships with multiple values

For relationships that support multiple values, you can only map unique attributes.

For example, if you are importing into **Companies** and you want to include their team members, you can only map their email addresses or Record IDs, but no other attributes on people.

![](https://a.storyblok.com/f/234930/1582x790/fd3b30cc87/import-companies-with-team-emails.png)  
With emails mapped (**Team > Email addresses**), people would be created or updated and connected to the companies in your import. To update any other attributes on the people, you would need to do a separate import into **People**.

**Example:**

Imagine you have a file with these columns:

- Company name
- Team emails (holding many)
- Team job titles (holding many)

![](https://a.storyblok.com/f/234930/2354x106/2968f86326/import-companies-two-team-attributes.png)  
Attio won’t know which job title belongs to which email, so this setup isn’t supported. You can import the emails to create or update people and link them to companies, but you’ll need a separate import into **People** to add job titles or other attributes.

## Step 5: Review values

Now you’ll check how Attio has interpreted your attribute values and fix any issues.

Under **Columns** on the left, you’ll see all columns and attributes you're importing. Click each one to view the **Raw data** from your file and the **Mapped value**, which is how it will appear in Attio.

All unique values are listed with a count of how many rows contain each one. Any changes you make will apply to all matching rows.

![](https://a.storyblok.com/f/234930/2460x1470/502cdab970/review-values-import.png)

Click any mapped value or the fix icon to edit it. To skip a value (without skipping the full record), click the cancel icon, and no value will be imported for that attribute. To revert a removed or edited value, click the arrow next to it.

Video: https://vimeo.com/951663226

If a raw value doesn't match the required format, you'll see an **Invalid format** error. You can correct it by clicking into the mapped value cell. If you don’t fix it, the import will skip that value. If all attributes for a record are invalid or blank, the record won’t be imported.

Use **Sorted by** to switch between sorting by **Raw value** (usually alphabetical or numeric) or **Row count** (the number of times the unique value appears in the CSV column), in **Ascending** or **Descending** order.

![](https://a.storyblok.com/f/234930/866x486/a464912fe2/sort-review-values-step-import.png)

For date, number, and timestamp attributes, click the gear icon in the upper-right to choose the format your data uses. The format must match your file's values for the import to work correctly.

![](https://a.storyblok.com/f/234930/1930x690/b272ce04b7/select-date-format-import.png)

If you're importing select or multi-select attributes and your file includes values not yet added in Attio, select **Create missing select options** in the upper-right to add them during import.

![](https://a.storyblok.com/f/234930/1000x415/ba93aa6e16/create-missing-select-options.png)

When you’re done reviewing, click **Continue**.

## Step 6: Preview import

This step shows a summary of the changes your import will attempt to make to records and attribute values.

The **Up to [X] will be created** note is an estimate. Attio checks your rows against existing records, but not against each other, so a new record listed on several rows appears more than once in the preview. Attio merges those rows into a single record when the import runs if they share a unique attribute value.

If you're importing into multiple objects, you'll see tabs in the upper-left for each object being updated or created. Click between tabs to view the records for each.

If you're importing into a list, tabs will include the main object, any linked objects updated through relationship attributes, and an **Entries** tab showing which records will be added or updated in the list. Records will be updated (not duplicated) if you’ve included and mapped a unique attribute. List entries will be created or updated based on the setting you chose in the **Map columns** step.

![](https://a.storyblok.com/f/234930/2460x1474/9508a59052/preview-import.png)

To make changes, click **Back**. When you're ready, click **Start import**.

## Step 7: Run import

After starting the import, you’ll be taken to the import progress page. A progress bar at the top shows how many records have been imported, and a table lists all records in the import.

Each record will show a green checkmark if successful or a red error icon if it failed. Hover over an error icon to see a description of the issue. Use **Filter** to view records by status: **Failed**, **Planned**, or **Completed**.

![](https://a.storyblok.com/f/234930/2450x1460/1804285c2a/import-progress.png)

You can close the page at any time, and the import will keep running in the background. Admins can return to it later via **Workspace settings**. [Learn more about managing imports](https://attio.com/help/reference/imports-exports/csv-imports/view-and-manage-csv-imports).

If your import did not complete as expected, reference [Troubleshooting CSV imports](https://attio.com/help/reference/imports-exports/csv-imports/troubleshooting-csv-imports).

## FAQ

### Can I import tasks or notes via CSV?

It’s not currently possible to import tasks or notes via CSV file. If you’re coming from another CRM, check out our [migration tool](https://attio.com/help/reference/imports-exports/migrate-data-from-another-crm). Notes and tasks can also be created using [Attio’s API](https://developers.attio.com/).

### I accidentally created duplicate list entries or records. How can I fix this?

If you have duplicate list entries within your list, you can simply remove the ones you don’t want to keep. Check the box of the record you want to remove, and from the window that appears at the bottom of your screen, select **More ▾** followed by **Remove from List**. ⁠ ⁠

If you’ve created duplicate records in your workspace with an import, these can be deleted manually. [Learn more about deleting records](https://attio.com/help/reference/managing-your-data/records/merge-and-delete-records).

### How do I import first name and last name? 

You can either import a single **Full name** column, or **First name** and **Last name **as separate columns. When you go to select the mapping and click **Name**, you can select **First**, **Last**, or **Full** accordingly.

### I’ve run the import and I can see the new rows, but I don’t see the columns I imported. Did my matching not work?

The importer tool brings in all the columns you mapped to attributes, but you’ll only see the ones displayed in the view you are looking at. You can add additional attributes to your view using **View settings**.

### I completed an import, but I’m not seeing the new rows.

Check whether you have any [filters](https://attio.com/help/reference/managing-your-data/views/filter-and-sort-views) applied to the collection view. If you do, they could be causing rows to be hidden. Try clearing all filters to see if the new rows appear.

### What does the "Avoid creating duplicate records" warning mean?

This warning appears if you haven’t mapped at least one unique attribute for each object in your import file. A unique attribute (like email addresses for people or domains for companies) helps Attio identify and match records that may already exist in your workspace.

Without at least one unique attribute, Attio won’t be able to check for existing records, which means new duplicates will be created when you proceed with the import.

For help identifying the right unique attributes, see **[Attribute columns to include](https://attio.com/help/reference/imports-exports/csv-imports/import-data-into-attio-via-csv#attribute-columns-to-include)**.

If you're importing into Deals and all the records in your file are new, you can safely ignore this warning and click **Continue without mapping**.

### If I go back, move between steps, or close the page during the import process, will I lose my changes?

You won’t lose any changes if you click **Back** or move between steps during an import. If you close the window or navigate away, your import is saved automatically. You can pick up where you left off anytime from the **[Import history](https://app.attio.com/_/settings/data/import-history)**[ page](https://app.attio.com/_/settings/data/import-history) in **Settings**.

### Can I import call recordings?

It's not currently possible to import call recordings into Attio.
