aibrevoBook a call

How Do You Import Contacts Into Odoo CRM?

Quick answer

Open the Contacts list, click the Action icon and choose Import records, then upload an .xlsx or .csv file, map each file column to an Odoo field, click Test and then Import. Add an External ID column so a re-import updates records instead of duplicating them, and import companies before the people who belong to them.

Updated October 22, 2026 · Reviewed by Alpit Patel, Founder and CEO

Key takeaways

  • Odoo imports .xlsx and .csv files into any business object. In the Contacts list, click the Action icon, choose Import records, upload the file, map the columns, click Test and then Import.
  • Imports cannot be undone. Odoo suggests using the created on or last modified filters afterwards to find the affected records, so run Test first and try a small file.
  • An External ID column is the key to safe repeat imports: with it, existing records are updated instead of duplicated. Two records with the same External ID cause a conflict, and changing one can create a duplicate.
  • Import related records first, such as companies before the people linked to them. Match relations by name, or append / ID to the column title when names repeat.
  • Common errors come from dates (use YYYY-MM-DD), numbers with currency symbols outside parentheses, tab-separated files and oversized files, which should be split into smaller batches.

To import contacts into Odoo CRM, open the Contacts list, click the Action icon and choose Import records. Upload an .xlsx or .csv file, check that each file column maps to the right Odoo field, click Test, then click Import. Add an External ID column so a repeat import updates records instead of duplicating them. The steps and rules here come from Odoo’s “Export and import data” documentation, checked on October 22, 2026.

What are the steps to import contacts into Odoo?

Odoo accepts Excel (.xlsx) and CSV (.csv) files for any business object, and contacts follow the same route as everything else.

  1. Open the list view of the object, here Contacts, click the Action icon and select Import records.
  2. Optionally click Import Template for Customers to download a preconfigured file.
  3. Click Upload Data File and choose your file.
  4. For CSV files only, adjust the Formatting options (separator, encoding, date format). They do not appear for .xls or .xlsx files.
  5. Check the mapping. Odoo guesses each column’s field type from the first ten lines, so a column may need to be matched by hand.
  6. Click Test to validate the data. Test again after any reload or change of mapping.
  7. Click Import.

The documentation is direct about one point: imports cannot be undone. You can filter on “created on” or “last modified” to find affected records afterwards, which is a clean-up, not a reversal. So test first, and try a sample of ten rows before the full file.

How do you stop Odoo creating duplicate contacts?

Use the External ID column. It is the unique identifier Odoo uses to recognise a record from your file, and it controls whether a row creates or updates.

What the file contains What Odoo does
No External ID or Database ID column Creates a new record for every row
An External ID or Database ID column Updates existing records that match, creates the rest
Two rows with the same External ID Conflict
An External ID that was changed or removed Can create a duplicate instead of an update

Source: Odoo Documentation, “Export and import data”, checked Oct 22, 2026.

Odoo advises giving every record a unique External ID, prefixed with the name of the source table, for example company_1 and person_1. For the update route, export your existing contacts with I want to update data (import-compatible export) ticked. It adds the External ID automatically and limits the columns to importable fields. Edit the file, then import it as usual. Our own CRM data cleaning guide covers de-duplicating a spreadsheet before it ever reaches an import screen.

Import the related records first, then the ones that point to them. Odoo’s example is exactly this case: companies before the people who belong to them.

The documentation gives three ways to reference a related record:

Method Example When to use
Name or code Belgium Hand-made files, names are unique
Database ID 21 Rarely, because it never conflicts
External ID base.be Data coming from another application

Use only one method per field. If two related records share a name, validation halts, and Odoo recommends either fixing the duplicates or using External IDs. To reference by ID when names repeat, append / ID to the column title, as in the documentation’s example Product Attributes / Attribute / ID. For many2many fields such as tags, separate the values with a comma and no spaces, for example Manufacturer,Retailer.

Which Odoo import errors are most common, and what fixes them?

Most failures trace back to formats. These come from the troubleshooting parts of the documentation.

Symptom Cause Fix
Dates imported wrongly or rejected Ambiguous format such as 01-03-2016 Use ISO 8601 (YYYY-MM-DD) or real Excel date cells
Number fails to import Currency symbol outside the parentheses, or a format like ABC 32.000,00 Parentheses mean negative, and the symbol must sit inside them. Use plain numbers
Columns not split Tab-separated file, which Odoo does not detect Change the separator to a comma in LibreOffice or OpenOffice
Wrong field type offered Odoo guessed from the first ten lines Enable Show fields of relation fields (advanced) and map by hand
Blank cells overwrite a default Blank CSV cells are set to empty, not to the field default Fill the column or delete it from the file
Time-out on a large file File too large for one import Split into smaller files and import in batches

Source: Odoo Documentation, “Export and import data”, checked Oct 22, 2026.

The documentation describes batch size and delay settings in the advanced options but gives no numbers for them, so test with a few thousand rows to find what your database tolerates. For a pre-upload check on a CSV, our CRM import file checker can flag bad dates and blank headers, and the CRM import limits comparison shows how other platforms treat file size.

Does the free Odoo plan limit imports?

Odoo’s documentation gives no import record cap, and its pricing page lists no import limit for the One App Free plan. The plan limit that matters is the app count: CRM on One App Free is the one app, and apps it depends on come free with it. For the full plan picture, see is Odoo CRM really free. If you want to compare with another tool’s import flow, how to import contacts into Pipedrive and how to fix HubSpot import errors cover the same job in those CRMs.

When to get help

A single clean file is quick. Help pays off when you are moving contacts from another CRM into Odoo, or out of Odoo into something else: companies, people, activities and custom fields that all have to keep their relationships. Odoo is quoted per project and aibrevo does not implement it. Migrating Odoo data into Salesforce, HubSpot, Dynamics 365, Zoho CRM, Pipedrive, monday.com, Airtable or GoHighLevel is a common request. Book a short call or send a message, and see the Zoho CRM service page for one common destination.

Sources

  • Odoo Documentation, Export and import data, checked Oct 22, 2026.
  • Odoo Documentation, CRM, checked Oct 22, 2026. The CRM section has no separate import page.
  • Odoo, Pricing, checked Oct 22, 2026.

More guides

Related reading

FAQs

How do I import contacts into Odoo CRM?

Open the Contacts list, click the Action icon and select Import records. Optionally download the Import Template for Customers. Click Upload Data File and choose an .xlsx or .csv file, adjust formatting options for CSV, check that each file column maps to the right Odoo field, click Test to validate, then click Import.

What file formats can Odoo import?

Odoo documents .xlsx and .csv files for any business object, including contacts, products, bank statements, journal entries and orders. The formatting options, such as separator and encoding, appear only for CSV, not for .xls or .xlsx files. Tab-separated CSV files are not detected, so change the separator to a comma first.

How do I avoid duplicate contacts when importing into Odoo?

Include an External ID column with a unique value for each record. If the file has an External ID or Database ID column, Odoo updates the existing records instead of creating new ones, so the same file can be re-imported safely. Two rows with the same External ID cause a conflict, and changing an ID can create a duplicate.

How do I link contacts to companies when importing into Odoo?

Import the companies first, then the people. Odoo says to import related records before the records that point to them, for example companies before the people who belong to them. In the people file, reference the company by name, or by External ID or Database ID when several companies share a name.

Can you undo an import in Odoo?

No. Odoo's documentation says imports cannot be undone. You can use the created on or last modified filters to find the records an import affected and then delete or fix them. Because of this, use the Test button before importing, start with a small sample, and keep the original file.

What date format does Odoo accept for import?

Odoo auto-detects dates and shows the detected Date Format under the file options. Ambiguous values such as 01-03-2016 can be misread. The documentation recommends ISO 8601, YYYY-MM-DD, for example 1981-07-24, or real Excel date cells. If the detected format is wrong, change it in the options before you import.

How do I import multiple tags or many2many values in Odoo?

For many2many fields such as tags, put the values in one cell separated by a comma with no spaces, for example Manufacturer,Retailer. The related records need to exist already or be importable. For one2many fields like order lines, the first line shares a row with the parent record and each extra line gets its own row with no parent data.

Why does my Odoo import time out or fail on a large file?

Large files can hit time-out errors. Odoo's documentation recommends splitting the data into smaller files and importing them in batches. The documentation describes batch size and delay settings in the advanced options but gives no recommended numbers, so choose a batch size by testing with a few thousand rows.

Does Odoo have an import template for contacts?

Yes. In the import screen, the Import Template for Customers button downloads a preconfigured file for contacts. Fill it in and upload it. Odoo also guesses each column's field type from the first ten lines of your file, so check the mapping if a column looks wrong.

How do I update existing Odoo contacts in bulk?

Export them first with the option I want to update data (import-compatible export), which adds the External ID automatically and limits the columns to importable fields. Edit the file and import it as usual. Do not change or delete the External ID column, or Odoo will create duplicates instead of updating.

Stuck on this? Ask an engineer

Not ready for a call? Send one question about your setup. An engineer replies by email within one business day.

Want a second opinion on your setup?

A free 30-minute call with an engineer. A written read on your current setup, whether or not you hire us.