Import contacts from a CSV file
Bring a spreadsheet of people into your contacts, match its columns, tag the batch and skip anyone you already have.
Moving from another system, or have a list from an event? Save it as a CSV file and import it. The app matches your columns for you and skips people who are already in your contacts.
Before you start
- A
.csvfile with a header row and at least one row of people. In Excel or Google Sheets use Save as or Download and choose CSV. - Columns for name, email and phone. Each row needs at least one of a name, an email address or a phone number.
- Optional: a stage column, a tags column (several tags in one cell, separated by commas) and any other columns you want to keep as custom fields.
Steps
- Open Contacts and press Import. The Import contacts (CSV) window opens.
- Drop your file on Drop your CSV here, or click it to choose the file.
- Check the line at the top: the file name, the number of rows and, for most files, an estimate such as ~180 new, 20 already in workspace.
- Under Column mapping, check each field: First name, Last name, Full name (split → first + last), Email, Phone, Pipeline stage and Tags (comma-separated). The app has already picked the closest column for each. Change any it got wrong, or choose Not imported to leave a field out.
- If you map Pipeline stage, read Valid stage values under the mapping. The cell must hold one of those values exactly, for example
Qualified. A ✓ beside a column name means its first row holds a valid stage. - Under Custom fields, press Add mapping for each extra column you want to keep. Pick the CSV column on the left and type the field name on the right, for example
Scent preference. - Check the preview of the first three rows.
- Optional: under Tag for this batch, type one tag for everybody in this file, for example
bristol-fair-2026. - Press Import contacts. A message confirms how many were imported and how many duplicates were skipped.
What happens next
- Duplicates are skipped, not updated. A row is skipped when its email address or phone number already belongs to a contact in this account, or to an earlier row in the same file.
- Rows with a stage the app does not recognise are still imported, without that stage.
- The batch tag and the tags column are added to every imported contact. They start your "A tag is added" workflows, and the new contacts can start "A new contact arrives" workflows.
- The import is listed on Contacts › Bulk Actions as CSV import — your-file.csv. Its Errors column counts the rows that were skipped.
- Imported contacts show Source
csv_importon their record.
For agencies
Open the client first (Sub-accounts › Open) and import there. Each client's contacts stay in that client's account.
Troubleshooting
"Please choose a .csv file."
The file is a spreadsheet file such as .xlsx. Save it as CSV and try again.
"That CSV has no data rows." The file has a header row and nothing under it, or it is empty. Open it and check the rows are there.
Fewer people were imported than the file has. Some rows matched people you already have by email or phone, some had no name, email or phone at all, or your plan's contact limit was reached. If the limit was reached, a Contact limit reached window says how many were imported and how many skipped.
Existing contacts were not updated with the new details. Import only adds new people. Update existing people on their record, or tag them in bulk.
Everyone landed in the same stage. The Pipeline stage column was not mapped, or its values do not match the Valid stage values exactly. Fix the column and import again; people already imported are skipped as duplicates, so move them on the pipeline instead.
Related
Email support@opusfunnel.com with the page you were on. A person replies, usually within one business day.
