---
title: Importing and exporting contacts
id: contacts.import-export
description: "Import people and organisations from a spreadsheet, and their locations as a file of their own, or export either as a CSV an import reads back."
lastUpdated: 2026-10-16
order: 70
---

Who can do this: team leaders, administrators and owners.

## What it does

Import, in the Actions menu beside Create Contact, opens a window titled Import Contacts. It offers two files, each with Download Template for its columns.

- Contacts: one row per contact.
- Contact Locations: one row per location, with its contact's email.

The window opens on Contacts. Choose one, then select Continue.

The contact import has the progress strip Upload, Match Columns, Review, Import and Done. Each row is a person or an organisation, with its email, phone, currency, tags and both addresses. Every import creates and updates. Lucrii matches a row to a contact you already have by its ID. A row with no ID matches by its email. The row then updates that contact. A row with an ID can change the contact's email. A row that matches no contact becomes a new contact. If its ID matches no contact, the row is an error instead.

A row with an ID can share its email with another contact. A Contacts export of two such contacts imports back. Without the ID, the row reports "2 contacts have the email sam@example.com (IDs 14, 15). Add the ID of the one this row is for."

Leave a column out of the file, or set it to Don't import, to keep that field as it is. A blank cell empties its field, with these exceptions.

- A blank Type cell is an error. Lucrii does not import that row.
- A blank Email or ID cell doesn't point the row at a contact, so it doesn't empty anything.
- A Contacts export leaves Company blank for a person whose company was deleted. That blank keeps the person's link as it is.

Image URL takes the web address of the contact's picture. Lucrii fetches the picture from there and stores a copy. Leave the cell blank to remove the picture. When the cell gives the address the contact's picture already has, Lucrii leaves the picture as it is.

The Shipping and Billing columns each give an address's recipient name, company and phone. They also give its street, city, state, postcode and country, and the state and country codes. Change the Country Code and leave Country as it is, and Lucrii clears the stored country name. In the same way, a new State beside the stored State Code clears that code. A Country or State Code you change yourself stays.

Review counts the new contacts, the updates and the rows with errors. It reads like 3 new contacts, 2 updates and 1 row with errors. It states how many values each field will clear before anything changes. Rows that lack both an ID and an email get a note in Review. It reads like "3 rows will be created as new contacts" and asks you to add an ID or email.

Review counts a row that doesn't change its contact as neither new nor an update, and Lucrii skips it. Review says so, as in "4 rows change nothing, so Lucrii will skip them." An export imported back unchanged skips every row.

The Contact Locations import opens a window titled Import Contact Locations. It has no Match Columns step.

| Column | What it takes |
| --- | --- |
| Contact ID | The ID of the organisation the location belongs to |
| Contact Name | The contact's name, which the import does not read |
| Contact Email | The organisation's email, read when the row has neither a Location ID nor a Contact ID |
| Location ID | The ID of the location the row updates, blank for a new location |
| Location Name | The location's name |
| Location Reference, Location Description, Location Email, Location Phone, Location Tags | The location's details |
| Location Status | active or archived |
| Shipping and Billing columns | The location's two addresses, with the same parts as a Contacts file |

A file can leave out any column except Contact ID, Contact Email, Location ID and Location Name. Lucrii refuses a file that lacks one of them, names a column twice or has a heading it does not read. A column left out keeps its field as it is. A heading can be a column's name or its label, in any mix of capitals. On a row for a new location, leave Location ID blank and give the Contact ID or the Contact Email.

A row with a Location ID updates that location. Its Location Name can rename it. A row without a Location ID finds its contact by Contact ID, else by Contact Email. It then matches one of that contact's locations by name, ignoring case. A name the contact's locations already hold updates that location, and any other name adds one. A blank Location Status leaves the status as it is. Any other blank cell empties its field.

Check File counts the new locations, the updates and the rows with errors. It reads like 2 new locations, 1 update and 1 row with errors. It also states the values the file will clear. Check File counts a row that doesn't change its location as neither new nor an update, and Lucrii skips it. Check File says so, as in "4 rows change nothing, so Lucrii will skip them." Lucrii skips rows with errors when you import. Download Errors gets those rows. Closing the window before you select Import cancels the check. So does a reload or a closed tab.

Export writes your contacts to a CSV file. Under Records, choose Selected, All Matching or Everything. Selected takes the contacts you ticked. All Matching takes every contact your search and filters match. Everything takes every contact. Selected and Everything export in the list's sort. All Matching exports in the list's default order.

Under Shape, Contacts writes one row per contact. Contact Locations writes one row per location of those contacts, with its contact's name and email. It covers only contacts with at least one location. Notes writes one row per note on those contacts, oldest first within each contact, with its author and its text. It holds a contact's own notes, not its locations'. Lucrii skips a contact with no notes. [Exporting orders](/docs/orders/import-export.md) lists the Notes file's columns. Lucrii doesn't import a Notes file. Contacts and Contact Locations have the columns their own imports read back.

Under Columns, choose Columns in This View, All Columns or Choose Columns. The window starts on All Columns. For Contacts, Columns in This View writes the columns the list shows. Name writes First Name, Last Name and Company Name, and each address column writes the parts of that address. For Contact Locations and Notes, it writes their default columns. Choose Columns keeps the columns the import needs ticked, and you can't untick them. They are ID, Type and Email in a Contacts file. In a Contact Locations file, they are Contact ID, Contact Email, Location ID and Location Name. You can change the file and import it again.

The file heads each column with its short name, such as `contact_id` for Contact ID. The export window shows the labels.

Both files end with Created At and Created By, then Updated At and Updated By, in your organisation's time zone. Contact Locations also has Total Orders and Total Spent. These columns are for reading. Choose Columns starts them unticked, and All Columns includes them. The template leaves them out, and an import ignores them.

The export runs in the background. When the file is ready, a message and an email tell you. Download in the message gets the file. View Job opens the job in Bulk Activity, which has the download too.

## Before you start

Exporting is for a team leader or above. Importing is for an administrator or above. Below administrator, Actions has no Import, and the contact import page shows "You do not have permission to import contacts."

One import runs at a time in an organisation, whatever it imports. Starting a second shows the first, with who started it and its status. On the contact and inventory import pages, Resume opens a contact or inventory import on its import page. Any other import shows View in Bulk Activity in place of Resume. An import window with no Match Columns step, such as Import Contact Locations, always shows View in Bulk Activity. Cancel Previous cancels the first import.

A file can be up to 25 MB, 50,000 rows and 1,024 columns. A file with more than 128 columns has a lower row limit, and Lucrii says how many fit when it refuses one. A column name can be up to 128 characters. Lucrii refuses a file with a header row and no data rows as you choose it, before anything is uploaded.

Lucrii refuses a row with a cell longer than its column allows, or with more than 250 tags or watchers in one cell. The row's error gives the column and its limit, as in "Company Name must be 255 characters or fewer." The error uses your file's heading for the column, or its label where the heading is the short name.

A row with more than ten problems lists the first ten and counts the rest.

New contacts count toward your plan's contact limit, while updates and locations do not. If the file would take you past the limit, the review says so. The import button stays off.

Changing a person's Company in the file, or leaving it blank, removes their links to the old company's locations.

A person's Company column names an organisation by its company name. The organisation must already be in your contacts, or on a row above the person in the same file. When two organisations share that name, a row that updates a person keeps the one the person is filed under. Lucrii refuses the name for a new person, or for one filed under another organisation.

A Contact Locations row needs a Location Name, and a Location ID, a Contact ID or a Contact Email. Only an organisation has locations. The organisation must already be in your contacts. A row that finds it by email needs an email no other contact has. Lucrii refuses a row when no contact has its ID or email, when two contacts share the email, or when the contact is a person. The row gives the reason. An organisation with no email imports its locations by Contact ID.

Lucrii also refuses a Contact Locations row when the contact has two locations with that name. When one location is on two rows of the file, Lucrii refuses both. A location can't move to another contact. A rename can't give a contact two locations with one name.

In a demo organisation, Lucrii doesn't send the email when an export is ready. The file is still in Bulk Activity.

You can have three jobs in progress at once, counting bulk actions and exports together. [Quotes, sales orders and purchase orders](/docs/orders/overview.md) says how the limit works.

## How to use it

1. Open Contacts, select Actions, then Import.
2. Choose Contacts or Contact Locations, then Continue.
3. For Contacts, drop a CSV or TSV onto the drop area, or select it to choose the file. Download Template under it gives you every column the import reads.
4. Select Next, check the column matches, and select Confirm Mapping.
5. Read the review, including what blank cells will clear. Tick All-or-nothing if one row with errors should stop the whole import.
6. Select the import button, which states how many contacts it will import. It states the number of rows instead with All-or-nothing ticked.
7. Wait for the run to finish, or select Close and come back later. The import keeps running. Where rows failed, Download Errors gives you them to fix and upload again. When no row failed but some have warnings, Download Warnings gets the details.
8. Select View Contacts to open the list, or Start Another Import.

For Contact Locations, drop or choose the file in the same way, select Check File, read what it will change, then select Import.

To export:

1. Open Contacts. Tick contacts first to export only those.
2. Select Actions, then Export.
3. Choose the records, Contacts, Contact Locations or Notes, and the columns. The window shows how many contacts the file will cover.
4. Select Export.
5. Select Download in the message, or open the export in Bulk Activity from the message or the email.

## Troubleshooting

A row reports "2 contacts have the email sam@example.com (IDs 14, 15). Add the ID of the one this row is for." Add the contact's ID to the row, then import the file again.

A person whose company is not in your contacts reports a message such as "No organisation is named "Acme Pty Ltd". Add a row for it above this one, or add it in Contacts first." Put the organisation's row above the person in the file, or add the organisation in Contacts first.

A row that leaves an organisation's Company Name blank reports "Company Name is required when adding an organisation." A row that leaves a person with no first or last name reports "First Name or Last Name is required when adding a person." Fill in the name, or set the column to Don't import.

A Contact Locations row reports "No contact has the email sam@example.com." Add the organisation in Contacts, or fix the email in the file.

A Contact Locations row reports "2 contacts have the email sam@example.com. Add the Contact ID of the one this location belongs to." Put the organisation's ID in Contact ID.

A Contact Locations row reports "Contact 14 already has a location named "Depot". Give this location another name." The row's new name belongs to another of that contact's locations. Choose a name the contact's locations don't use.

A Contact Locations row reports "Give contact 14 the location "Depot" on one row only." The file gives one contact the same new location name on more than one row. Rename one of them. A row that finds its contact by email names it that way, as in "the contact with the email sam@example.com".

A Contact Locations import reports "Use the template's columns." The message lists the columns to add, the ones to remove, the ones to keep once and the ones to shorten. Fix the first row, or select Download Template and copy your rows into it.

A Contact Locations row reports "The contact with the email sam@example.com is a person. Choose a company." Use the email of the organisation the location belongs to.

A Contact Locations export skips a contact with "No locations to export." A person has no locations, and neither does an organisation you have not added one to. The file has no row for them.

The review says a field will be cleared that you meant to keep. Put the values back in that column, or set the column to Don't import, and upload the file again.

## Related

- [Bulk actions on contacts](/docs/contacts/bulk-actions.md): Tick contacts in the list, or every contact a filter matches, then change their company or currency, tag them or delete them together.
- [Creating a contact](/docs/contacts/create.md): Add a person or an organisation as a contact, with names, email, phone, currency and two addresses.
- [Contact locations](/docs/contacts/locations.md): List the sites an organisation contact trades from, with an address, a status and linked people for each.
- [Bulk Activity](/docs/settings/bulk-activity.md): See the imports, exports and changes to many records at once that your role shows you, and what happened to each record.

## Changes

- [Bulk actions with Hermes](/changelog/2026-10-16#2026-10-16-bulk-actions-with-hermes) - 2026-10-16
- [Export file names and sort order](/changelog/2026-10-16#2026-10-16-export-file-names-and-sort-order) - 2026-10-16
- [Exports that import back](/changelog/2026-10-16#2026-10-16-exports-that-import-back) - 2026-10-16
- [Field lengths and tag limits](/changelog/2026-10-16#2026-10-16-field-lengths-and-tag-limits) - 2026-10-16
- [Importing and exporting contacts](/changelog/2026-10-16#2026-10-16-importing-and-exporting-contacts) - 2026-10-16
- [More columns in the files an import reads](/changelog/2026-10-16#2026-10-16-more-columns-in-import-files) - 2026-10-16
- [Notes, payments and fulfilments in exports](/changelog/2026-10-16#2026-10-16-notes-payments-and-fulfilments-in-exports) - 2026-10-16
- [One drop area for import files](/changelog/2026-10-16#2026-10-16-one-drop-area-for-import-files) - 2026-10-16
