← All help articles

Importing contacts from a CSV

contacts

If your people already exist in a spreadsheet, a payroll export or an old system, you can bring the whole list in at once. There are two ways in. Importing from Contacts only creates contact records: it does not put anybody on a portal or send anything, so it is a safe first step. Importing from a portal does the same and also puts everyone in the file on that portal, which is covered in importing straight onto a portal below.

Where it is

Open Contacts and click Import CSV, beside New contact above the list. The same link appears in the sidebar under Contacts while you are in that section. Both open Import contacts from CSV.

The page shows how many more contacts will fit before the 3,000-contact limit, a Download template button, a CSV format summary you can expand, and the file picker.

Start from the template

Download template gives you WorkZerk-contacts-template.csv with every column heading and two example rows. Fill it in, delete the examples, save.

Your own file works too. The first row must be a header row, column order does not matter, and names are not case sensitive, so FirstName, firstname and FIRSTNAME are the same column. Columns the importer does not recognize are ignored.

The columns

Thirteen, and only the first is required.

  • FirstName, required, up to 100 characters. A row without one is reported as an error.
  • LastName, up to 100.
  • ContactName, the company they belong to, up to 200. Leave it blank for somebody who is not attached to one.
  • Email, up to 256. It has to be an address WorkZerk can send to or the row is reported as an error. That is the same check every email goes through, so [email protected]. with a stray full stop on the end is an error, not a contact with an address that never works.
  • Mobile, up to 50. Stricter than it looks: digits, +, -, (, ), . and spaces only. A cell with "ext 12" or "mob" in it fails the row.
  • Website. A bare domain is fine; https:// is added for you. Up to 500 characters, counting that https://.
  • Instagram, Facebook, X, LinkedIn, up to 500 each. A handle or a full profile URL, stored as you typed it.
  • InternalNotes, up to 3,000. Yours only, never shown to the person.
  • Rating, a whole number from 0 to 5. Zero means no rating.
  • Tags, separated by semicolons inside the one cell: Electrician;Preferred;Night shift. Duplicates are dropped, a tag longer than 50 characters is cut to 50, and anything past the 20th tag is not kept.

Uploading

Pick the file and click Import contacts. The file can be up to 1 MB, which is thousands of rows, so the contact limit runs out long before the file size does.

Quoted cells work the way a spreadsheet exports them, so a comma or a line break inside a quoted cell is fine. Blank rows are ignored.

The import is all or nothing at the moment of writing. If something goes wrong partway, you see "Something went wrong with that import, so no contacts were created", and you can fix the file and run it again without cleaning anything up.

Duplicates are skipped, not merged

A row whose email already belongs to one of your contacts is skipped. Nothing is overwritten or merged, and it is not treated as an error. The results tell you how many were skipped this way.

Email matching ignores capitals, and a file with the same address twice creates one contact.

That makes re-importing safe: run the same file again after adding to it and only the new rows land.

The catch is that duplicates are found by email alone. Rows with no email are never treated as duplicates, so importing the same email-less person twice gives you two records. If that matters, get addresses into the file first. Importing onto a portal is different: there a row with no email is matched on name, company and mobile, as described below.

The limit

An account holds 3,000 contacts. The page shows how many more will fit, and Import contacts is disabled once you are at the limit.

An import that would go over does not fail: the rows that fit are created and the rest are counted as skipped because the limit was hit. Delete contacts you do not need and run the file again. Duplicates being skipped means the rows already in are not repeated.

If 3,000 is not enough, email [email protected].

Reading the results

Afterwards you see how many contacts were imported, and, where they apply, how many were skipped because their email already exists, how many were skipped because of the limit, and how many rows had errors.

View errors expands to a list with the line number in your file and what was wrong, so you can fix the original and run it again. It lists the first 200 rows with errors. When there are more, its last line says how many more rows had problems, and running the fixed file again shows what is left.

Things that trip people up

  • The first row must be headers. If there is no FirstName column the whole file is refused with "Missing required column: FirstName."
  • Columns are separated by commas. Some spreadsheet settings save a CSV with semicolons or tabs between columns instead. That file is refused with a message saying which one it uses. Save it as comma-separated (CSV) and upload it again.
  • Tags use semicolons. A comma inside an unquoted Tags cell starts a new column.
  • Excel and leading zeros. Format the phone column as text before saving, or a number starting with 0 loses it.
  • A repeated column heading is not an error. The first one is used and the later one is ignored.
  • Accented names come through. Both Excel's "CSV UTF-8" and its standard "CSV (Comma delimited)" save keep letters like é and ü intact. If they still look wrong, save as "CSV UTF-8" and import again.

Importing straight onto a portal

When the list is the people for one portal, a new starter intake for example, import it from the portal instead. On the portal, under the people list, click the Import people from CSV button beside Add another person (it uses your own word for people). If you have already imported the list on the Contacts page, the results there offer Add them to for each open portal: upload the same file on that page and it matches the contacts you just imported by email, so nobody is added twice. The file format, the columns, the template and the limit are all the same as above.

Everyone in the file ends up on the portal with their own private link:

  • New people are created as contacts and added.
  • A row whose email already belongs to one of your contacts adds that contact. Their details are not changed by the file.
  • A row with no email adds an existing contact when their first name, last name, company and mobile all match and that contact has no email either. Otherwise it creates a new contact.
  • Somebody already on the portal keeps the link they have.
  • Somebody you removed from this portal is not put back. Add them again from the people list if you meant to.

Each person added counts as someone being added to the portal, so any automation you have for that runs for them, the same as adding them one at a time.

Nothing is emailed by the import. The results card has an Email their invites button, which opens the usual batched invite window with the people you just added ticked. If you have an automation that sends the invite when someone is added, the card says so instead, and there is no button, so nobody gets their invite twice. People in the file with no email address are counted, so you know whose link to copy and send another way.

If something goes wrong while people are being added to the portal, the results card says how many could not be added. Their contacts are saved, so upload the same file again: every row matches the contact it already made, and people already on the portal are left as they are.

Adding people this way makes them active people. The card warns you if the import takes you past the number your plan includes.

After the import

If you imported from Contacts, you have contacts, and nothing else has happened. Nobody has a link, nobody has been emailed, and none of them counts as an active person yet. The next step is putting them on a portal, covered in getting started.

Get tags right in the file rather than afterwards, because they are what you filter by when you pick people for a portal. See tagging and filtering contacts.

Getting help

If a file will not go in or the results look wrong, email [email protected] and attach the CSV.

Still stuck after reading this? Open a help ticket and we'll answer your specific question.