Importing contacts from a CSV
If you've already got a list of your contacts somewhere (a spreadsheet, an old CRM export, a Google Sheet you keep on the desktop), you can import the whole lot into 1pm in one go instead of typing them in one by one. This article covers the CSV import flow, the file format, what gets skipped, and how to handle the common gotchas.
Where to find it
In 1pm, go to the Contacts page (the top navigation link). At the top right of the list, next to the New contact button, there's an Import CSV button that takes you to the import page at /Contacts/Import.
The page shows three things: how many more contacts will fit before you hit the per-account cap, a Download template button, and a file upload form.
Get the template first
Click Download template. You'll get a small CSV file with the column headers 1pm expects, plus a couple of example rows. Open it in Excel, Numbers, Google Sheets, or any plain text editor.
Working from the template is the easiest way to get the format right. Add your contacts under the example rows, delete the examples, and save the file.
You can also build the CSV from scratch if you'd rather. The first row must be a header row with the column names below, and column order doesn't matter. Names are case-insensitive, so FirstName, firstname, and FIRSTNAME all work.
The columns
FirstName. Required. The contact's first name. Up to 100 characters. This is the only required column.
LastName. Optional. Up to 100 characters.
ContactName. Optional. Business or group name. "Sue's Catering", "Aurora Lights", or leave blank for an individual with no business affiliation. Up to 200 characters. (The column is still called ContactName for backwards compatibility with templates exported before the field was renamed in the UI.)
Email. Optional. Standard email format. If a row's email matches one that already exists in your Contacts list, the row is skipped (more on this below).
Mobile. Optional. Free-text phone number, formatted however you like.
Website. Optional. The contact's URL.
InternalNotes. Optional. Up to 3,000 characters. Notes that only you see. Useful for "Always books late", "Preferred for ballroom events", "Backup contact: Pat at 0412...".
Rating. Optional. A number from 0 to 5. 0 means no rating, 1 through 5 are stars. Lets you flag your A-tier suppliers.
Tags. Optional. Semicolon-separated within the cell. Example value: Caterer;Preferred;VIP. Tags are how you organize contacts on the Contacts page (filter by tag, find all the caterers, find everyone tagged Preferred).
Uploading
Once your CSV is ready, click Choose File on the import page, pick the file, then click Import contacts.
The maximum file size is 1 MB. That's roughly several thousand rows of contact data, which is far more than the account cap, so the file size limit is almost never the thing that bites first.
What happens with duplicates
If you import a CSV and one of the rows has an email that already matches a contact you've added, that row is skipped silently. The import doesn't overwrite the existing record, doesn't ask you what to do, doesn't error: it just leaves the existing contact untouched and moves on.
This means it's safe to re-import the same CSV. Old rows are skipped, new ones (with new emails or no email at all) are added.
The skip-by-email behaviour also means rows without an email address won't be deduplicated. If you import the same contact twice and neither row has an email, you'll get two records. Add emails to your CSV before importing if you care about uniqueness.
Per-account cap
A standard 1pm account has a cap of 1,000 contacts. The import page shows you how many more will fit before you hit the cap, and the Import button disables when you've hit it.
If your import would push you past the cap, the rows that fit are imported and the rest are reported in the results. You can delete some contacts you don't need anymore and re-import the rejected rows if you want them.
For most planners, 1,000 contacts is more than enough. If you actually need more, the limit lift is a contact-us conversation and we'll sort it out.
The import results
After the file uploads, you'll see a results card with a few counts:
How many contacts were imported.
How many were skipped because their email already exists.
How many were skipped because of the per-account cap.
How many rows had errors and weren't imported.
If any rows had errors, you can expand the View errors section to see the specific line numbers and what went wrong. Typical errors are things like a row with a missing FirstName, a Rating value outside 0 to 5, or a field that's too long.
The error report tells you the line number in the file so you can fix the original CSV and either re-import the whole thing (duplicates will be skipped) or just fix the broken rows and re-import that subset.
Common gotchas
The first row must be headers. If your file starts with data instead of column names, every row will be misinterpreted.
FirstName must be filled in. Rows with an empty FirstName cell are reported as errors. If you're importing an older template where the only filled-in name column is ContactName, you'll need to add a FirstName column too. Splitting "Sue's Catering" into ContactName=Sue's Catering and FirstName=Sue is a typical fix.
Tags use semicolons, not commas. Commas separate columns in the CSV; semicolons separate tags within the Tags cell.
Smart quotes don't cause problems most of the time, but if a row gets unexpectedly rejected, opening the CSV in a plain text editor and saving as UTF-8 usually fixes it.
If you export from Excel and a column with leading zeros (like a phone number) drops the zero, format the column as text before saving.
When CSV import isn't the right tool
If you're adding one or two contacts, the New contact button on the Contacts page is faster than building a CSV. If you're migrating an existing list from another tool, CSV import is the path of least resistance: export from there, tidy the columns to match the names above, and one upload later you're done.
The fields covered by import are the standard contact set. Anything more specific (custom roles, event-specific notes, request responses) belongs on the individual event or on the contact's profile after import.